Nun, eine Sache, die Sie anstelle von sich wiederholenden Code tun können, nach unten in der Nähe der Unterseite ist dies:
if($result === true) {
$gPageTitle = 'Registration successful';
$response = <p>You have successfully registered as ' . htmlspecialchars($username) . ' on this site.</p>';
} elseif($result == 'exists') {
$gPageTitle = 'Username already taken';
$response = '<p>Someone is already using the username you have chosen. Please try using another one instead.</p>';
} else {
trigger_error('This should never happen');
}
require_once 'bgsheader.php';
echo $response;
require_once 'bgsfooter.php';
Auch Sie können false zurück, anstatt die Zeichenfolge ‚existiert‘ in der Funktion, nicht, dass es macht viel Unterschied.
Überprüfen Sie die Fehlernummer ist nicht schlecht, ich bin mir sicher, deshalb ist es eine im Lieferumfang enthaltene Funktion. Wenn Sie wirklich etwas anderes machen wollten, könnten Sie überprüfen, ob es bereits einen Benutzer mit diesem Namen gibt, indem Sie den Benutzernamen auswählen. Wenn kein Ergebnis vorhanden ist, fügen Sie den Benutzer ein, andernfalls geben Sie den Fehler ein.
Eine Sache, die ich gerne mit der Fehlerbehandlung in Formularen tun würde, ist, alle Fehlerzeichenfolgen in einem Array wie $ error ['username'], $ error ['email'] usw. zu speichern und dann durchlaufen zu lassen der Fehler an jedem Eingang Überprüfung einzeln alle Fehlerstrings zu setzen, und dann eine Funktion hat, die so etwas wie dies funktioniert:
function error($field)
{
global $error;
if(isset($error[$field]))
{
echo $error[$field];
}
}
und rufen Sie dann, dass in der Form nach jedem Feld der Fehlerberichterstattung auf dem Formular zu geben. Natürlich muss die Formularseite an sich selbst übergeben werden, aber Sie könnten alle Fehlerüberprüfungslogik in einer separaten Datei haben und ein Include ausführen, wenn $ _POST ['whatever'] gesetzt ist. Wenn Ihr Formular in einer Tabelle oder einem anderen Format formatiert ist, können Sie beispielsweise echo '<tr><td class="error">' . $error[$field] . '</td></tr>
eingeben und automatisch eine weitere Zeile direkt unter dem Feld einfügen, um den Fehler zu speichern, falls vorhanden.
Denken Sie auch immer daran, Ihre Eingaben zu filtern, auch wenn sie automatisch gefiltert werden sollten. Übermitteln Sie Post-Infos niemals direkt in eine Datenbank, ohne sie auszuprobieren.Ich würde auch vorschlagen, die spezifische superglobale Variable für die Aktion zu verwenden, wie $ _POST anstelle von $ _REQUEST, weil $ _REQUEST die Variablen $ _GET, $ _POST und $ _COOKIE enthält und jemand möglicherweise etwas Seltsames tun könnte, wie es auf der Seite einreicht ? username = was auch immer nach der Seite, und dann haben Sie sowohl $ _POST ['Benutzername'] und $ _GET ['Benutzername'], und ich bin mir nicht sicher, wie $ _REQUEST das handhaben würde. Wahrscheinlich würde es einen $ _REQUEST ['username'] [0] und $ _REQUEST ['username'] [1] geben.
Auch ein bisschen über die Seitentitel. Weiß nicht, ob Sie es so eingerichtet haben, aber Sie können in Ihrem Header etwas tun:
$pageTitle = "My Website";
if(isset($gPageTitle))
{
$pageTitle .= "- $gPageTitle";
}
echo "<title>$pageTitle</title>";
, die die Seite zu laden, die normalerweise mit „Meine Website“ als Titel machen würde, und fügen Sie „- Benutzername existiert bereits "oder was auch immer für" Meine Website - Benutzername existiert bereits "als Titel, wenn $ gPageTitle gesetzt ist.
Also, Sie haben eine Funktion, die etwas wie folgt macht: 'function escapestring ($ input) {return mysql_real_escape_string (trimmen ($ input));}' und dann tun $ filterinput = array_map ('escapestring', $ _ POST); 'und Sie erhalten $ filterinput ['username'] $ filterinput ['password'] usw., die über die im ersten Argument von array_map angegebene Funktion übergeben wurden. – Phoenix