Hey,

Ik ben bezig met een auth systeempje maar ik loop tegen een probleem aan. Ik selecteer dus het id van de gebruikers tabel waar het id gelijk is aan een get waarde. Als het resultaat groter is dan 0 dan gaat het script verder. Maar ik krijg dus de error "U bent hier niet toegelaten!3".. Ik voer de query uit in phpMyAdmin en daar krijg ik wel een resultaat. Wat is hier fout aan?


<?php

$query = "SELECT * FROM gebruikers WHERE id = '".$_GET['id']."'";
		$result = mysql_query($query);
		
		if(mysql_num_rows($result) > 0 )
		{
			$query = "SELECT sleutel FROM gebruikers WHERE id = '".$_GET['id']."'";
			$result = mysql_query($query);
			
			if(mysql_num_rows($result) > 0 )
			{
				$row = mysql_fetch_assoc($result);
				if($_SESSION['key'] == $row['sleutel']);
				{
					echo "Hier is alles ok";
				}
			}
			else
			{
				echo "U bent hier niet toegelaten!2";
			}
		}
		else
		{
			echo "U bent hier niet toegelaten!3";
		}
?>


Alvast bedankt
Zo zou je dat inderdaad kunnen doen. Twee dingen: een id is numeriek dus is het niet logisch om daar mysql_real_escape_string() voor te gebruiken. Van numerieke waarden controleer je met is_numeric() of ctype_digit() eerst of ze wel numeriek zijn en pas dan gebruik je ze in een query.

Ik zou in deze sessie geen echo gebruiken, maar ik zou een boolean returnen. Dus return false; als het ip-adres niet overeenkomt.
@Blanche
De functie wordt pas uitgevoerd nadat het id numeriek is.
Maar die return false... Ik moet toch een error msg ofzo weergeven? Of hoe zou jij het doen?
Als je al weet dat het id numeriek is, kun je die waarde gewoon in de functie gebruiken. In ieder geval gebruik je geen mysql_real_escape_string voor integers.

<?php

function ipcheck($id)
{
$query = "SELECT ipadres FROM gebruikers WHERE id = ".$id;
$result = mysql_query($query) or die(mysql_error());;
$db = mysql_fetch_assoc($result);

if($_SERVER['REMOTE_ADDR'] != $db['ipadres'])
{
return false;
}
return true;
}

if(is_numeric($_GET['id']))
{
if(ipcheck($_GET['id']))
{
echo 'IP adressen komen overeen';
}
else
{
echo 'IP adressen komen niet overeen';
}
}
?>
Bedankt Blanche, denk dat het systeem nu wel veilig moet zijn.

Reageren