Bejelentkezési hiba
Van egy login rendszerem. A hibája az, hogy ha valaki rossz adatot ír be (pl nincs az adatbázisban olyan felhasználónév) és ezt a rossz adatot elküldi, akkor kiírja a hibát, de ha még egyszer elküldi, akkor beengedi az oldalra. Ezt hogy lehetne kiküszöbölni? Ez a kódom:
  
 ■ 
<?php
	if($_POST['login']){
	$name=mysql_real_escape_string(trim($_POST['name']));
	$pass=mysql_real_escape_string(md5($_POST['pass']));
		$login=true;
		if(!$name){
			echo "<div id='error2'>Add meg a felhasználóneved</div>";
			$login=false;
		}
		
		if(!$pass){
			echo "<div id='error2'>Add meg a jelszavad</div>";
			$login=false;
		}
		
		if($login){
			$result=mysql_query("SELECT * FROM user WHERE name='$name' AND pass='$pass'");
			while($row=mysql_fetch_array($result)){
				$name=$row['name'];
				$acti=$row['acti'];
			}
			
			if(mysql_num_rows($result)!=1){
				echo "<div id='error2'>Hibás felhasználónév és/vagy jelszó</div>";
				$login=false;
			}elseif($acti!=2){
				echo "<div id='error2'>Nincs megerősítve regisztrációd</div>";
				$login=false;
			}
			
			if($login){
				$_SESSION['name']=$name;
				$_SESSION['login']=true;
				?><script>window.location=window.location;</script><?php
			}
		}
	}
	
?>
<form method="POST">
<input type="text" name="name" placeholder="Felhasználónév" />
<input type="password" name="pass" placeholder="Jelszó" />
<p><input type="submit" name="login" value="Belépek" id="submit" /></p>
<p><a href="register.php">Regisztráció</a><br />
<a href="forgottpass.php">Elfelejtett jelszó</a></p>
</form>
     



$pass
$passsose lesz üres, ergo a hozzá kapcsolódó hibaüzenet sose fog megjelenni? Valamint jó lenne, ha az$actiértékének valami értéket adnál a lekérdezés előtt, csak hogy elkerüljük aregister_globalsbekapcsolása esetén felmerülő biztonsági rést. JavaScripttel ne irányítsuk át a felhasználót, használjunk megfelelőhearderutasítást. Valamint biztosan ennyiből áll a kód? Nem lehet, hogy valamit kihagytál az elején vagy a végén?1. Köszi, hogy mondtad a
2. Azért irányítok át JS-el, mert a header-rel mindig csak a bajvan, 10-ből 8-szor hibát kapok rá vissza. :D
3. Igen ennyi a kód.
2
Output header előtt
Nincs semmi hiba kód, mert
$pass
Ennek így mi értelme?
Az md5 (bocs, nem néztem utána, de gondolom, ez beépített PHP függvény) egy hexadecimális stringet ad vissza, abban tutira nem lesz mit escape-elni. Valamit rosszul tudok?
Az md5() függvény egy 32
Közelítőleg
Returns the hash as a 32-character hexadecimal number.
Részben igaz: a visszaadott érték numerikus, valamint a-f tartományba tartozó karaktereket tartalmazhat.
De még ha a te variációd lenne igaz, akkor is feleslegesnek tűnik az escape-elés.
szerintem írasd ki a 18.