Vervolg op mijn vorige topic.... das nooit goed!

Maar ik kom er niet uit, de databaseresultaten krijg ik niet uitgelezen, ze geven allemaal ' '...


<?php

session_start();

include('../connection.php');

if(isset($_POST['username'],$_POST['password'])) {
	
	// Bouw query op om gegevens te testen
	
	$query = sprintf("SELECT `username`,`email`,`ingame_name`,`am_money`,`am_coins`,`premium`,`premium_ends` FROM `users` WHERE `username` = '%s' AND `password` = '%s' LIMIT 1", $_POST['username'], sha1($_POST['password']));
	
	// Maak verbinding met de database en voer de query uit
	
	$connection = mysql_pconnect($connection_host,$connection_user,$connection_pass);
	$database = mysql_select_db($connection_db);
	$result = mysql_query($query);
	$row = mysql_fetch_assoc($result);
	$num_rows = mysql_num_rows($result);
	
	// Controleer of er een match is gevonden voor combinatie gebruikersnaam/wachtwoord, stuur anders terug
	
	if($num_rows =! 1) {
		header("Location: ".$_SERVER['HTTP_REFERER']);
		exit;
	} else {
		
		// Start een sessie en geef user vars mee
		
		unset($_SESSION['userinfo']);
		
		$_SESSION['userinfo'] = array();
		$_SESSION['userinfo']['username'] = $row['username'];
		$_SESSION['userinfo']['email'] = $row['email'];
		$_SESSION['userinfo']['ingamename'] = $row['ingame_name'];
		$_SESSION['userinfo']['money'] = $row['am_money'];
		$_SESSION['userinfo']['coins'] = $row['coins'];
		$_SESSION['userinfo']['premium'] = $row['premium'];
		$_SESSION['userinfo']['premium_ends'] = $row['premium_ends'];
		$_SESSION['userinfo']['loggedin'] = date("Y m d H:i");
		
		$_SESSION['login'] == true;
		
		echo '<script type="text/javascript">window.alert(\'Gebruikersnaam: '.$row['username'].' // Ingame-naam: '.$row['ingame_name'].'\');</script>';
		
		// Stel een cookie in om automatisch naar de loginpagina te gaan
		
		if((isset($_POST['gotologinpage'])) && (!empty($_POST['gotologinpage'])) && ($_POST['gotologinpage'] == 1)) {
			setcookie("autologinpage",true,time()+(86400 * 365),'/');
		} else {
			setcookie("autologinpage",false,0,'/');
		}
		
		// Stuur door naar spel
		
		header("Location: ./");
	}
	
	mysql_close($connection);
	mysql_free_result($result);
	
} else {
	header("Location: ".$_SERVER['HTTP_REFERER']);
}

?>


Op dit moment is het zo dat als ik hier de sha1 functie weghaal, en in de database de hash vervang door de waarde die hij moet vertegenwoordigen, werkt het wel
Gebruik geen backtics en maak eens een nette foutafhandeling.

Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Ik krijg geen errors... Alleen dat de headers al verzonden zijn (door de echo om te kijken of er resultaat is). Verder geen extra info....
SanThe schreef op 05.10.2009 19:34
Gebruik geen backtics en maak eens een nette foutafhandeling.

Verder klopt regel 23 niet en regel 42 is nutteloos.
42 is idd nutteloos ;) dankje. En helemaal bedankt voor die vergelijking, dat is idd een fout ivm snel typen.

En waarom geen backtics gebruiken?
Het probleem wordt nog gekker, als ik de SHA1 functie weghaal en de hash uit mijn db vervang door een 'gewone' string (bijv. in db admin opslaan ipv d033e22ae348aeb5660fc2140aec3585), dan werkt het wel....

Gelieve Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.
Waarom wel?

Ze zorgen toch enkel maar voor problemen...
Het moet wel veilig ;) en het is niet de bedoeling dat ik iemands wachtwoord kan zien, veel mensen zijn nog zo gek overal hetzelfde ww voor te gebruiken.
Dan zal je databaseveld wel te klein zijn voor de sha(). Minimaal 40 characters.
hij is 40 lang... ik maak hem ff 41 miss helpt dat

Reageren