• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Przekazywanie danych z formularza do pliku php

Object Storage Arubacloud
0 głosów
1,444 wizyt
pytanie zadane 27 czerwca 2018 w PHP przez MakaBresk Obywatel (1,060 p.)
zmienione kategorie 27 czerwca 2018 przez MakaBresk

Dzień dobry mam problem z przesłaniem danych z formularza.

 

Oto pliki:

<!doctype html>
<html lang="pl">

<head>
	<meta charset="UTF-8">
		<title>PORTAL</title>
</head>

<body>
	<form action="rekrutacja.php" method="POST">
		<label>
			Imię: <input type="text" name="imie"></label> <br> <br>
		
		<label>
			Nazwisko: <input type="text" name="nazwisko"></label> <br> <br>
			
		<label>
			Stanowisko: <input type="text" name="stanowisko"></label> <br> <br>
			
		<input type="submit" onclick="rekrutuj();" value="REKRUTACJA">
	</form>
</body>

</html>
<?php
	function rekrutuj()
	{
		$imie = $_POST['imie'];
		$nazwisko = $_POST['nazwisko'];
		$stanowisko = $_POST['stanowisko'];
		
		echo $imie ." " .$nazwisko ." " .$stanowisko;
	}
?>

Wszystkie pliki są oczywiście w folderze localhost/e-14/ xampp mam odpalony apache jak i MySQL. MySQL będzie mi potrzebny w kolejnym etapie działania programu. W ścieżce w przeglądarce mam adres localhost/e-14/bar.html. Przeglądarka jest ustawiona jako domyślna w xampp.

komentarz zamknięcia: Rozwiązany problem
komentarz 27 czerwca 2018 przez Mariusz08 Maniak (62,300 p.)
Zła kategoria.
1
komentarz 27 czerwca 2018 przez Mariusz08 Maniak (62,300 p.)
Odnośnie pytania -

1.nie sprawdzasz  czy zmienna $_POST istnieje - możliwość ataku.

2. nie filtrujesz danych - możliwy atak.

3 odpowiedzi

+1 głos
odpowiedź 27 czerwca 2018 przez michh123 Bywalec (2,790 p.)
wybrane 27 czerwca 2018 przez MakaBresk
 
Najlepsza

Pomyliłeś chyba trochę JS z PHP.

<input type="submit" onclick="rekrutuj();" value="REKRUTACJA">

Możesz spokojnie wyrzucić stąd zapis

onclick="rekrutuj();"

Bo tak jak Panowie wyżej pisali - zdarzeniami onclick zajmuje się JavaScript. Tak na marginesie używanie onclick wewnątrz HTML to zło! Poczytaj o addEventListener
A wszystko co musisz zrobić to jak wspomniałem wywalić tego onclick'a, a w pliku PHP wywal funkcję, bo nie jest do niczego potrzebna. Czyli w pliku PHP zostaw samo

<?php
        $imie = $_POST['imie'];
        $nazwisko = $_POST['nazwisko'];
        $stanowisko = $_POST['stanowisko'];
         
        echo $imie ." " .$nazwisko ." " .$stanowisko;
?>

Już bez tej funkcji.
Reasumując: Zdarzenia onclick są przeznaczone dla JS (a i tak lepiej używać addEventListener), a Twój skrypt nie potrzebuje ani onclick'a ani funkcji w pliku PHP

komentarz 27 czerwca 2018 przez MakaBresk Obywatel (1,060 p.)
Dzięki bardzo. Teraz już wszystko jasne, a ja głupi chciałem zdarzeniem w js wywołać funkcję w php. addEventListener działo podobnie jak onclick w js?
komentarz 27 czerwca 2018 przez michh123 Bywalec (2,790 p.)

addEventListener jest w każdym względzie lepsze od onclick, onload i innych zdarzeń wewnątrz HTML.

Zapis:

element.addEventListener('click', function() { 
/* kod w JS... */

działa tożsamo z onclik, tyle że charakteryzują go pewne cechy. Taki zapis może nam obsłużyć każdy element HTML, który podamy. Zauważ, że w kodzie, który podałem wyżej masz zapis:

element.addEventListener

To tym elementem może być to co podasz. Np. klasy pewnych znaczników, które wcześniej uchwycisz poprzez querySelector (zalecane). Do tego addEventListener może obsługiwać nie tylko zdarzenia onclick, ale też onload i inne.
A co chyba najważniejsze addEventListener oddziela nam treść od mechaniki (HTML od JS). Jest jeszcze wiele powodów dlaczego warto używać addEventListener zamiast onclick, ale poszukaj na Forum - napewno znajdziesz tu cechy wypisane przez naszych Ekspertów :)
 

komentarz 27 czerwca 2018 przez MakaBresk Obywatel (1,060 p.)
Dzięki za pomoc. Zamykam post.
+2 głosów
odpowiedź 27 czerwca 2018 przez Bosswell Nałogowiec (36,470 p.)

Zdarzenia typu onclick to są dla javascriptu. Funkcje przenieś do pliku rekrutacja.php a następnie ją wywołaj.

function rekrutuj()
    {
        $imie = $_POST['imie'];
        $nazwisko = $_POST['nazwisko'];
        $stanowisko = $_POST['stanowisko'];
         
        echo $imie ." " .$nazwisko ." " .$stanowisko;
    }

rekrutuj();

 

komentarz 27 czerwca 2018 przez MakaBresk Obywatel (1,060 p.)
edycja 27 czerwca 2018 przez MakaBresk
Ale ja chcę wywołać funkcję rekrutuj po naciśnięciu przycisku rekrutacja. Czy jest taka możliwość?
komentarz 4 lipca 2018 przez RobertBaj Użytkownik (810 p.)
Po wciśnięciu przycisku rekrutuj formularz przekieruje cię do pliku rekrutacja.php więc jeśli chcesz wywołać ta funkcję wrzuć ją do pliku rekrutacja.php.
komentarz 8 lipca 2018 przez MakaBresk Obywatel (1,060 p.)
Ok dzięki.
+1 głos
odpowiedź 27 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)
<input type="submit" onclick="rekrutuj();" value="REKRUTACJA">

co robi funkcja rekrutuj o jej nie pokazaleś? (chodzi mi o funkcję "rekrutuj" w JS, nie tę w PHP i dlaczego przechwytujesz zdarzenie click a nie submit?)

Tak na marginesie to zdarzenia lepiej podpinać inaczej, ale tym się potem zajmiemy.

Podobne pytania

0 głosów
1 odpowiedź 213 wizyt
pytanie zadane 2 grudnia 2017 w C i C++ przez ayo1001 Obywatel (1,890 p.)
0 głosów
1 odpowiedź 304 wizyt
pytanie zadane 4 czerwca 2018 w PHP przez VendE Użytkownik (980 p.)
0 głosów
2 odpowiedzi 336 wizyt

92,757 zapytań

141,679 odpowiedzi

320,437 komentarzy

62,101 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...