hallo ik ben voor mijn website bezig om een admin gedeelte te bouwen zodat ik makkelijk content kan toevoegen/verwijderen/wijzigen en heb niet altijd mijn laptop met mijn bestanden bij me natuurlijk :)

dus heb ik nu een zo veilig mogelijke login proberen te maken met de vele criteria en tips die hier gegeven wordt en ben tot een stukje php script gekomen en wil aan jullie vragen of dit goed is en zal werken.

hieronder dan het stukje code

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){

include ('connect.php');

$gebruikersnaam = trim($_POST['name']);
$wachtwoord = trim($_POST['password']);
$salt = "#@#123456789876548946234986$$23#423#%FAW%#AWD1314";
$pass = sha1('password' .$salt);

if(empty($_POST[$gebruikersnaam])){

$noName = "vul uw naam in";
}

if(empty($_POST[$wachtwoord])){

$noPassword = "vul een wachtwoord in";
}

$gUser = ("SELECT name, password
FROM members
WHERE name='" .mysql_real_escape_string($_POST[$gebruikersnaam]). "'
");
if($gUser === false){

$errDB = "er ging iets fout in de database";
}

else {


if (sha1($_POST[$wachtwoord] .$salt)== $pass && ($_POST[$gebruikersnaam])== 'name' ){

header("location: http://www.reshadfarid.nl/admin/admin.php";);

exit;

}

else {

$noMatch = "er is geen match gevonden voor desbetreffende wachtwoord en gebruikersnaam";
}
}
}


?>


	<form method="post" id="loginForm" action="">
		  <div>
				<label for="name">Naam:</label>
				<input id="name" name="name" type="text" />
				<?php if(isset($noName)){
						echo $noName;
				} ?>
		  </div>
		  	<div>
		  		<label for="password">Wachtwoord:</label>
		  		<input id="password" name="password" type="password" />
		  		<?php if(isset($noPassword)){
		  				echo $noPassword;
		  		}
		  		?>
		  	</div>

		  	<div><input type="submit" id="send" name="send" value="login"></div>
		  <?php if(isset($noMatch)){
		  				echo $noMatch;
		  		}
		  		if(isset($errDB)){
		  			echo $errDB;
		  		}
		  		?>
		  	</form>
	
ah oke ik snap em denk ik heb het nu zo

password = '" .mysql_real_escape_string(sha1($_POST[$pass])). "'

is het zo wel goed?

ik krijg als error voor deze regel Notice: Undefined index: 1f1422db4fcf3ecf3d3a0103a83f35920286301c in /var/www/vhosts/reshadfarid.nl/httpdocs/admin/index.php on line 29

volgens mij heb ik niet op de juiste manier een wachtwoord gegenereerd.

kan je een voorbeeldje geven hoe ik dit zou moeten doen?
Kom op, dat kan je beter. Nu plaats je de variabele $pass weer in $_POST[]. $pass is een variabele, geen key van de $_POST array.
ik snap wat je bedoeld maar ik snap niet hoe ik dit zou moeten doen ik denk zelf dan op dit moment haal de POST weg in je query doe alleen de variable erin omdat je de post al doet bij $pass

dus dan kom je hierop: password = '" .mysql_real_escape_string(sha1($pass)). "'
Uiteraard! Hoe kan het anders?
$pass = sha1($_POST['password'] .$salt);
password = '" .mysql_real_escape_string(sha1($pass)). "'

Je stopt het ingegeven password plus de salt in $pass. Als je dan verder wilt met het password heb je toch $pass nodig? Eerlijk gezegd verbaast het me een beetje dat je dit niet automatisch deed. Te veel uur achter een pc gezeten wellicht?
haha nouja ik ben al wakker sinds 5 uur vanochtend en hele dag gewerkt tot nu dus een beetje bekaf :P

ik krijg nu geen foutmeldingen maar ik heb nog steeds niet voor elkaar gekregen om een wachtwoord hardcore te echoen. en deze in mijn database handmatig in te zetten.

enig idee hoe ik dit doe?
Waarom maak je niet gewoon een klein insert scriptje? Alleen een SQL statement met daarin de insert voor de gebruiker en het wachtwoord, waarbij je alle stappen neemt (salt en encryptie) die je wilt gebruiken. Zoiets als dit dus:

<?php
$pass = "Maak_er_iets_leuks_van".$salt;
$sql = "INSERT INTO members(name, password)
VALUES('mijn_username', '".sha1($pass)."')";
?>
En dan het hele mysql verhaal natuurlijk.
Een keer het script runnen en je hebt een user en password in je database staan.
hier had ik zelf inderdaad aan gedacht.. maar zoals altijd dacht ik dat het NOG makkelijker kon maar ik zal het zo wel even uitwerken! :)
Erwin H op 14/03/2012 19:05:33

Uiteraard! Hoe kan het anders?
$pass = sha1($_POST['password'] .$salt);
password = '" .mysql_real_escape_string(sha1($pass)). "'

Je stopt het ingegeven password plus de salt in $pass. Als je dan verder wilt met het password heb je toch $pass nodig? Eerlijk gezegd verbaast het me een beetje dat je dit niet automatisch deed. Te veel uur achter een pc gezeten wellicht?


Je gebruikt nu twee keer sha1(). Vast niet de bedoeling.
bedankt santhe! dat had ik helemaal over het hoofd gezien :) het script doet nu zijn werk! bedankt voor de hulp allen

Reageren