2017-10-05 3 views
-1

So erstelle ich ein Registrierungsformular, und ich bekomme einen Fehler "Undefinierte Variable", der vollständige Fehler lautet wie folgt:Fehler "Undefinierte Variable" auf meinem Registrierungsformular erhalten und ich weiß nicht, wie ich es beheben kann

Notice: Undefined variable: Benutzername in C: \ xampp \ htdocs \ phpacademy \ cms \ admin \ signup.php on line 8

Hinweis: Nicht definierte Variable: Passwort in C: \ xampp \ htdocs \ phpacademy \ cms \ admin \ signup.php in Zeile 9

Jetzt

zunächst meine Datenbank für das Anmeldeformular so geht:

Schema Name:cms 

Tables:users,articles 

Users table:user_id,user_name,user_password 

Jetzt für den Code, den ich habe index.php, connection.php und signup.php Hier ist der Code:

index.php:

 <?php 

echo "<form action='signup.php' method='POST'> 
     <input type='text' name='username' placeholder='Username'><br> 
    <input type='password' name='password' placeholder='Password'><br> 
    <button type='submit'>SIGN UP</button> 
</form>"; 
?> 

signup.php:

<?php 
 

 
require 'connection.php'; 
 

 
$statement = $pdo->prepare("INSERT INTO users (username, password) 
 
    VALUES(:username, :password)"); 
 
$result = $statement->execute(array(
 
    "username" => $username, 
 
    "password" => $password 
 
)); 
 
$statement = null; 
 

 
?>

und connection.php:

<?php 
 

 
try{ 
 
$pdo = new PDO('mysql:host=localhost;dbname=cms', 'root', ''); 
 
} catch (PDOException $e) { 
 
\t exit('Database error.'); 
 
\t 
 
} 
 
if(empty($pdo)) die("pdo variable is empty!"); 
 
?>

Jetzt nur so ihr wissen, ist dies index.php ist ein Teil eines größeren Code, auch weil dies ein Teil von a viel größere Datei, wenn ich die connection.php in einem anderen Ordner Ich bekomme einen Fehler der connection.php konnte nicht gefunden werden, wenn Sie noch Fragen haben, werde ich ihnen antworten, danke!

+4

Mögliche Duplikat [PHP: "Hinweis: Nicht definierte Variable", "Notice: Undefined index" und "Hinweis: Undefined offset"] (https: // Stackoverflow.com/questions/4261133/php-notice-undefined-variable-notice-undefined-index-und-notice-undef) – aynber

+0

Sie zeigen nicht die richtigen Zeilen von signup.php, so dass wir nicht das genaue Problem angeben können, aber überprüfe den Dup Link. – aynber

+0

Sorry, ich weiß nicht, was passiert ist, ich habe den Post bearbeitet, hoffe, es hilft! – Crepi

Antwort

0

Definieren Sie Ihre Variablen.

In signup.php

$username = $_POST['username']; 

$password = $_POST['password']; 

Ort, um diese Änderungen nur unter den

require('connection.php'); 

Auch im Klartext keine Passwörter speichern. Es ist sehr unsicher. Verwendung:

password_hash 

Und

password_verify 

EDIT Sie haben nicht richtig die Platzhalter binden. Außerdem greifen Sie auf die falschen Spalten zu. Die modifizierte Version ist unter

$statement = $pdo->prepare("INSERT INTO users (user_name, user_password) 
VALUES(:username, :password)"); 
$result = $statement->execute(array(
":username" => $username, //bind placeholders properly 
":password" => $password // bind placeholders properly 
)); 

$statement = null; 
+0

ich den Code bearbeitet und jetzt keinen Fehler bekomme ich aber nichts in meiner Datenbank eingegeben wird: vorbereiten ("INSERT INTO users (Benutzername, Passwort) VALUES (: username,: password)"); $ result = $ statement-> execute (Array ( "Benutzername" => $ Benutzername, "Passwort" => $ Passwort )); $ Anweisung = null; ?> – Crepi

+0

Überprüfen Sie die aktualisierte Antwort – Akintunde007

+0

Entschuldigung, was haben Sie tatsächlich in der Abfrage selbst geändert? Ich scheine es zu vermissen. EDIT- Nevermind, ich sehe jetzt die Doppelpunkte. Beachten Sie @Crepi, Sie könnten einfach "VALUES (?,?)" Machen und dann mit "execute ([$ username, $ password])" binden. Mit PDO glaube ich, dass die Abfrage auf diese Weise an die Datenbank gesendet wird und für mich einfacher zu lesen ist. – GrumpyCrouton

0

signup.php hat keinen Wert für $ username oder $ password. Sie müssen $username = $_POST['username'] und das gleiche für das Passwort hinzufügen

+0

tut es in der editierten Frage – CptMisery

+0

Hallo meinen Code Dank für die Hilfe bearbeitet, aber jetzt nicht, dass ich einen Fehler, aber nichts ist meine Datenbank eingegeben: vorbereiten ("INSERT INTO users (Benutzername, Passwort) VALUES (: username,: password)"); $ result = $ statement-> execute (Array ( "Benutzername" => $ Benutzername, "Passwort" => $ Passwort )); $ Anweisung = null; ?> – Crepi

+0

Es scheint, dass die Spaltennamen Ihrer Tabelle nicht korrekt sind. Die Abfrage versucht, in 'username' einzufügen, aber Ihre Frage besagt, dass die Tabelle' user_name' hat. Sie sollten auch die PDO-Fehlerberichterstattung aktivieren: https://stackoverflow.com/questions/8776344/how-to-view-query-error-in-pdo-php – CptMisery

Verwandte Themen