Wie die post-Passwort für mysql-Datenbank
Dieses json-fähigen iOS-app ist die Anzeige ein registration failed
Fehler bei der Registrierung wird versucht, aus der app, die Befestigung benötigt. Beim hinzufügen der folgenden Zeile zur Anzeige von Fehlern in der index.php
Datei:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
Der folgende Hinweis wird angezeigt
<br /><b>Notice</b>: Undefined index: command in
<b>/Applications/MAMP/htdocs/iReporter/index.php</b> on line
<b>26</b><br />
Php-code
// line 26
switch ($_POST['command']) {
case "login":
login($_POST['username'], $_POST['password']);
break;
case "register":
register($_POST['username'], $_POST['password']);
break;
Registrierung und log-in-Funktionen
// register API
function register($user, $pass) {
//check if username exists in the database (inside the "login" table)
$login = query("SELECT username FROM login WHERE username='%s' limit 1", $user);
if (count($login['result'])>0) {
//the username exists, return error to the iPhone app
errorJson('Username already exists');
}
//try to insert a new row in the "login" table with the given username and password
$result = query("INSERT INTO login(username, pass) VALUES('%s','%s')", $user, $pass);
if (!$result['error']) {
//registration is successful, try to also directly login the new user
login($user, $pass);
} else {
//for some database reason the registration is unsuccessful
errorJson('Registration failed');
}
}
//login API
function login($user, $pass) {
// try to match a row in the "login" table for the given username and password
$result = query("SELECT IdUser, username FROM login WHERE username='%s' AND pass='%s' limit 1", $user, $pass);
if (count($result['result'])>0) {
// a row was found in the database for username/pass combination
// save a simple flag in the user session, so the server remembers that the user is authorized
$_SESSION['IdUser'] = $result['result'][0]['IdUser'];
// print out the JSON of the user data to the iPhone app; it looks like this:
// {IdUser:1, username: "Name"}
print json_encode($result);
} else {
// no matching username/password was found in the login table
errorJson('Authorization failed');
}
}
Befehl aufgerufen wird, von der iOS-app
NSMutableDictionary* params =[NSMutableDictionary dictionaryWithObjectsAndKeys:command, @"command", fldUsername.text, @"username", hashedPassword, @"password", nil];
Kann die app mit der Datenbank verbinden, da es zeigt das username already exists
Fehlermeldung, wenn Sie einen vorhandenen Benutzernamen versucht wird, in der Registrierung. Auch, wenn $pass = '';
ist Hinzugefügt, um die Funktion register, der Benutzer autorisiert ist, und sich angemeldet hat, aber eine leere Zeichenkette in der Datenbank gespeichert. Wenn Sie versuchen: $pass = $_POST['password'];
es funktioniert auch nicht. Wo sollte der code aktualisiert werden, um die Aufgabe abzuschließen?