bin eine einfache Anwendung zu erstellen, um ein- und ausloggen mit einer dateibasierten Authentifizierung zu testen, aber ich habe in ein bisschen eine enge gerannt, ich kann nicht meinen Kopf wickeln.var_dump zeigt mir unerwartete Ergebnisse
Hier sind die Inhalte der Textdatei, die meine Anwendung testen bin mit der filetest_02.txt gestattet
david, codeslave
chris, bigboss
Am auch PHP-Skripte verwenden, sind die Tests zu tun Hier werden die Inhalte für login.php
<?php
$error = '';
if (isset($_POST['login'])) {
session_start();
$username = trim($_POST['username']);
$password = trim($_POST['pwd'] );
// location of usernames and passwords
$userlist = 'C:/private/filetest_02.txt';
// location to redirect on success
$redirect = 'http://localhost/php/powers/solutions/ch09/menu.php';
require_once './includes/authenticate.inc.php';
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Login</title>
</head>
<body>
<?php if ($error) : ?>
<p><?php echo $error; ?></p>
<?php endif; ?>
<form id="form1" method="post" action="">
<p>
<label for="username">Username:</label>
<input type="text" name="username" id="username">
</p>
<p>
<label for="pwd">Password:</label>
<input type="password" name="pwd" id="pwd">
</p>
<p>
<input name="login" type="submit" id="login" value="Log in">
</p>
</form>
</body>
</html>
Und hier sind die Inhalte für authenticate.inc.php
<?php
if (!file_exists($userlist) || !is_readable($userlist)) {
$error = 'Login facility unavailable. Please try later.';
} else {
// read the file into an array called $users
$users = file($userlist);
// loop through the array to process each line
for ($i = 0; $i < count($users); $i++) {
// separate each element and store in a temporary array
$tmp = explode(', ', $users[$i]);
var_dump($tmp);
$name = trim($tmp[0]);
$pwd = trim($tmp[1]);
var_dump($name, $pwd);
var_dump($_POST);
// check for a matching record
if ($name == $username && $pwd == $password) {
$_SESSION['authenticated'] = 'Jethro Tull';
session_regenerate_id();
break;
}
}
// if the session variable has been set, redirect
if (isset($_SESSION['authenticated'])) {
/* header("Location: $redirect");
exit; */
} else {
$error = 'Invalid username or password.';
}
}
Das Problem ist, wenn ich auf den Button Login klicken Sie auf login.php, erhalte ich die folgende Ausgabe
Warum ist die var_dump Ausgang die Länge der Zeichenfolge ‚David‘ zu sein, zeigt gleich 8 sogar bis 8 auch nach dem Trimmen? Was könnte das alles verursachen? Danke.
Ja, ich spiele herum, aber wie Sie aus dem Code, den ich geschrieben habe, sehen, soll ich auf den Benutzernamen und das Passwort aus der Datei mit dem Benutzernamen und Passwort aus meinem Formular auf Gleichheit testen und ich denke, der Grund der Sitzung wird nicht gesetzt, weil der Benutzername aus der Datei und aus dem Formular offensichtlich nicht gleich sind, da dort Längen – kellymandem
vergessen, nur debuggen und verfolgen Sie Ihren Code. Ich habe ein Login-System, aber es sieht zu anders aus als Sie es teilen. Ich würde es debuggen, aber ich habe die Dateien nicht. – bedtime21