pobieranie wartości z oddzielnego pliku php który jest wywoływany metotą POST

0

Witam, nie wiem czy dobrze się określiłem co do nazwy tematu, ale wyjaśnię dalej o co mi chodzi.

Mam stronę index.php ze szkieletem html'a. Podpiełem do niej przycisk submit i formularz bez żadnych textboxów(tag <form>)który w atrybucie "action", prowadzi do oddzielnego pliku(funkcja.php) który zawiera tylko i wyłącznie kod php. Problem jest w tym że chciałbym aby w kontrolce text area (index.php) pojawił się wynik działania funkcji która jest w pliku funkcja.php. Bo w tej chwili przeglądarka ładuję po onclick'u plik funkcja.php, a chciałbym żeby plik z funkcją zwrócił wynik działania do inputa textarea(index.php). Dałem też odniesienia require/include w obu plikach, plik index.php->funkcja.php i na odwrót . Jak coś to jestem w stanie podrzucić kod ale to na dniach bo nie mam tego lapka na którym pisałem.

1

Bardzo ogólnie:

  1. Wysłanie formularza i pobranie danych z serwera:
    Javavascript + funkcja Fetch.
    https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

    fetch('http://example.com/movies.json')
      .then(response => response.text())
      .then(data => console.log(data));
    
  2. Umieszczenie wyniku "w treści strony" (jedna z możliwości):
    Funkcja javascript: https://developer.mozilla.org/pl/docs/Web/API/Element/insertAdjacentHTML

    fetch('http://example.com/movies.json')
      .then(response => response.text())
      .then(data => document.getElementById('ID-TWOJEGO-ELEMENTU-NA-WYNIK').insertAdjacentHTML('afterbegin',data));
    

Poczytaj więcej o: https://www.google.com/search?q=javascript+fetch+example+loadt+content+to+div

0

Nie rozumiem tego. Użyłem w głównym pliku index.php i zamiast odpowiedzi uzyskałem w textarea kod tej funkcji js co podałeś w znaczniku code. To samo w drugim pliku efekt taki sam.
Fetch dałem do pliku funkcja.php, w wyniku czego dostałem nie wynik działania owego pliku a

fetch('funkcja.php')
  .then(response => response.text())
  .then(data => document.getElementById('idarea').insertAdjacentHTML('afterbegin',data));
1

Wklej cały kod bo tutaj nie ma wróżbitów tylko programiści.

0

A więc tak kod index.php, tag form wygląda tak:

<div><?php require 'funkcja.php'; ?></div>
<form action="funkcja.php"  method="post" id="usrform">
    <input type="submit" name="insert" value="Klik"></form>
	<textarea id="txtarea" name="txtarea" rows="4" cols="50"></textarea>
 

Co do pliku funkcja.php:

<?php
	if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['insert']))
    {
        ref();
    }
	function ref()
	{
	$ch = curl_init("adres logowania do forum");
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($ch, CURLOPT_POST, true);
    
	curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_SSLVERSION, 3);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
	if (curl_errno($ch)) die(curl_error($ch));
	$response = curl_exec($ch);
	@$doc = new DOMDocument();
	@$doc->loadHTML($response);
	$xpath = new DomXpath($doc);
	$xpathid = new DomXpath($doc);
	foreach ($xpath->query('//input[@name="csrfKey"]') as $link) {
    $links = $link->getAttribute('value');
	$token = $links;
}
$params = array(
    'csrfKey' => $token,
	'auth' => "Login",
    'password' =>"Haslo",
	'remember_me' => "1",
	'_processLogin' => "usernamepassword",	
  );
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    $result = curl_exec($ch);
	curl_setopt($ch,CURLOPT_URL,"dzial na forum z którego pobieram listę tematow");
	$dzg = curl_exec($ch);
	@$docdzl = new DOMDocument();
	@$docdzl->loadHTML($dzg);
	$xpathdzl = new DomXpath($docdzl);
	
	$els = $docdzl->getElementsByTagName('a');
	foreach ($els as $el) {

	if (str_contains($el->getAttribute('href'), 'wartość dzięki której sprawdzam czy link prowadzi do tematow na forum'))
	{ 
		
			$hrefy = $el->getAttribute('href') . PHP_EOL;
			
			
			
		}
		
	}
}
?>

W chwili obecnej jest tak że po kliknięciu w button submit odpala mi plik funkcja.php w przegladarce. Mi to nie potrzebne, po prostu chcę żeby plik z funkcją zwracał wynik do textarea w pliku index.php

1

W Twoim kodzie nie ma ani jednej linijki JavaScript zatem jak chcesz aby cokolwiek się wydarzyło.
W przeglądarce programuje się w JavaScript. W PHP przygotowujesz strony, które przeglądarka może pobrać z serwera.

Przeanalizuj sobie ten przykład: https://jsfiddle.net/xlanglat/tyh6jjpy/

1 użytkowników online, w tym zalogowanych: 0, gości: 1