Peter: Probleme, Fragen zu $insert->execute und Datenbankabfrage

Beitrag lesen

Hallo liebe Fachleute und Profis auf dem Gebiet von PHP und Datenbank, ich habe über die Seite php-einfach.de ein Loginscript Script. Das läuft, aber ich würde es gerne verstehen.

Und leider habe ich eine Zeile die ich nicht verstehe.


1. $error_msg = "";
2. if(isset($_POST['email']) && isset($_POST['passwort'])) {
3. 	$email = $_POST['email'];
4. 	$passwort = $_POST['passwort'];
5. 
6. 	$statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
7. 	$result = $statement->execute(array('email' => $email));
8. 	$user = $statement->fetch();
9. 
10. 
11. 	//Überprüfung des Passworts
12. 	if ($user !== false && password_verify($passwort, $user['passwort'])) {
13. 		$_SESSION['userid'] = $user['id'];
14. 
15. 		//Möchte der Nutzer angemeldet beleiben?
16. 		if(isset($_POST['angemeldet_bleiben'])) {
17. 			$identifier = random_string();
18. 			$securitytoken = random_string();
19. 				
20. 			$insert = $pdo->prepare("INSERT INTO securitytokens (user_id, identifier, securitytoken) VALUES (:user_id, :identifier, :securitytoken)");
21. 			
22. 			$insert->execute(array('user_id' => $user['id'], 'identifier' => $identifier, 'securitytoken' => sha1($securitytoken)));
23. 			setcookie("identifier",$identifier,time()+(3600*24*365)); //Valid for 1 year
24. 			setcookie("securitytoken",$securitytoken,time()+(3600*24*365)); //Valid for 1 year
25. 		}
26. 
27. 		header("location: internal.php");
28. 		exit;
29. 	} else {
30. 		$error_msg =  "E-Mail oder Passwort war ungültig<br><br>";
31. 	}
32. 
33. }

In der Zeile 6-8 wird die Mail überprüft und der Inhalt der Zeile aus der Datenbank an $user übergeben

Nach der Überprüfung des Passwortes Zeile 12 wird bei Zeile 20 die Daten

user_id, :identifier, :securitytoken

in die Datenbank geschrieben.

Jetzt kommt die Frage, was passiert in Zeile 22


$insert->execute(array('user_id' => $user['id'], 'identifier' => $identifier, 'securitytoken' => sha1($securitytoken)));

das verstehe ich nicht.

Auch verstehe ich nicht warum die setcookie erst in Zeile 23,24 geschrieben werden und nicht vor dem INSERT in Zeile 20.

Für jeden Hinweis bin ich mehr als Dankbar

Peter