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

Problem z formularzem rejestracyjnym.

Object Storage Arubacloud
0 głosów
316 wizyt
pytanie zadane 2 czerwca 2015 w PHP przez sulas99 Początkujący (340 p.)
	<div id="registration">
																																	
																																	<form action="new_user.php" method="post">

																																				<table id="formularz">
																																				<tr>
																																				        <td class="leftcolumn" name="name">Imię: </td><td class="rightcolumn"><input type="text"/></td>
																																				</tr>
																																				<tr>
																																				        <td class="leftcolumn" name="surname">Nazwisko: </td><td class="rightcolumn"><input type="text"/></td>
																																				</tr>
																																				<tr>
																																				        <td class="leftcolumn" name="date">Data urodzienia [DD/MM/RRRR]: </td><td class="rightcolumn"><input type="text"/></td>
																																				</tr>
																																				<tr>
																																				        <td class="leftcolumn" name="login">Login: </td><td class="rightcolumn"><input type="text"/></td>
																																				</tr>
																																				<tr>
																																				        <td class="leftcolumn" name="password">Hasło: </td><td class="rightcolumn"><input type="password"/></td>
																																				</tr>
																																				<tr>
																																				        <td class="leftcolumn" name="password_one">Powtórz hasło: </td><td class="rightcolumn"><input type="password"/></td>
																																				</tr>
																																				<tr>
																																				        <td class="leftcolumn" name="email">E-mail: </td><td class="rightcolumn"><input type="text"/></td>
																																				</tr>
																																				
																																				</table>
																																				
																																				<input type="submit" value="Zarejestruj się"/>

																																	</form>
																																	
																																	</div>
<?php 

require_once"connect.php";

                 $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
			
			if($polaczenie->connect_errno!=0)
			{
			echo "Error: ".$polaczenie->connect_errno . "Opis: " . $polaczenie->connect_error; 
			}
			else
			{
		$imie = $_POST['name']; 
		$nazwisko = $_POST['surname']; 
		$data = $_POST['date']; 
		$email = $_POST['email'];
		$login = $_POST['login']; 
		$haslo = $_POST['password'];
			
			  $ins = @mysql_query("INSERT INTO user SET name='$imie', surname='$nazwisko', date='$data', email='$email', login='$login', password='$haslo' "); 
			
			$polaczenie->close();
			}

?>

Mam problem ponieważ przy tym kodzie przy próbie wyskakuje taki błąd: 


Notice: Undefined index: name in C:\xampp\htdocs\KORKI\new_user.php on line 13

Notice: Undefined index: surname in C:\xampp\htdocs\KORKI\new_user.php on line 14

Notice: Undefined index: date in C:\xampp\htdocs\KORKI\new_user.php on line 15

Notice: Undefined index: email in C:\xampp\htdocs\KORKI\new_user.php on line 16

Notice: Undefined index: login in C:\xampp\htdocs\KORKI\new_user.php on line 17

Notice: Undefined index: password in C:\xampp\htdocs\KORKI\new_user.php on line 18

4 odpowiedzi

+1 głos
odpowiedź 2 czerwca 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
edycja 2 czerwca 2015 przez CzlowiekSkrypt
Notice to nie błąd, w tym przypadku informuje tylko że nie ma jeszcze zadeklarowanych indeksów w tablicy POST które zostaną utworzone dopiero po przesłaniu formularza.  Można dodać dodatkowego ifa który sprawdza czy przycisk submit został naciśnięty  if(isset($_POST['submit'])){kod obslugujacy formularz}, oczywiscie w formularzu musisz mu nadać nazwę name="submit"
komentarz 2 czerwca 2015 przez efiku Szeryf (75,160 p.)
Osobiście Notice traktuje tak samo jak błąd i nie ignoruję go, chociaż.. nie pamiętam kiedy ostatnio miałem notice, a na dev zawsze E_ALL odpalone ;)
komentarz 2 czerwca 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
No można powiedzieć że notice to błąd ale jednocześnie nie jest to błąd :D
Tak czy owak - trzeba się go pozbyć !! ;)
+1 głos
odpowiedź 2 czerwca 2015 przez efiku Szeryf (75,160 p.)
edycja 2 czerwca 2015 przez efiku
To problem po stronie HTML jest
Patrz <input type="text"> w input powinieneś mieć name="", ale to masz w <td> dlatego nie działa i krzyczy Ci, że odwołujesz się do nieistniejących kluczy :-3
PS: Wywal te @ operatory ;)
komentarz 2 czerwca 2015 przez efiku Szeryf (75,160 p.)
edycja 2 czerwca 2015 przez efiku
Test bez edytora CK

komentarz 2 czerwca 2015 przez Comandeer Guru (600,810 p.)
Dziwny jest ten escape kodu...
+1 głos
odpowiedź 2 czerwca 2015 przez Comandeer Guru (600,810 p.)

Notice to co prawda nie błąd, ale pokazuje te fragmenty kodu, które taki mogą wywołać.

W Twoim wypadku w Twoim HTML brakuje [name] dla pól formularza.

A operowanie na tablicy $_POST bez sprawdzania czy dostaliśmy formularz to proszenie się o kłopoty takie jak ten: http://forum.php.pl/Automatyczny_start_pomijajacy_formularz_t242566.html

I nie polecałbym sprawdzania czy istnieje pole submita - bo np. Ajaks nie musi serializować przycisków (i tego nie robi, bo żądanie wywołał skrypt, nie przycisk!). Z tego powodu najbezpieczniej sprawdzać czy $_SERVER['REQUEST_METHOD'] jest równe POST

 

Od razu warto ostrzec przed SQL Injection!

–1 głos
odpowiedź 2 czerwca 2015 przez Ivan Maniak (60,650 p.)
edycja 2 czerwca 2015 przez Ivan
Przed zmiennymi sprawdz czy  istnieja

if(isset($_POST["name"])){

$name = $_POST["name"];

}else{

//...

}

Podobne pytania

0 głosów
3 odpowiedzi 479 wizyt
pytanie zadane 2 czerwca 2015 w PHP przez sulas99 Początkujący (340 p.)
0 głosów
3 odpowiedzi 294 wizyt
pytanie zadane 27 maja 2015 w PHP przez sulas99 Początkujący (340 p.)
0 głosów
0 odpowiedzi 461 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...