在我的注册表单上收到“未定义的变量”错误,我不知道如何修复它

时间:2017-10-05 20:05:18

标签: php mysql phpmyadmin

所以我正在创建一个注册表单,我收到一个“Undefined variable”错误,完整的错误是这样的:

  

注意:未定义的变量:用户名在   第8行的C:\ xampp \ htdocs \ phpacademy \ cms \ admin \ signup.php

     

注意:未定义的变量:密码在   第9行的C:\ xampp \ htdocs \ phpacademy \ cms \ admin \ signup.php

现在首先我的注册表格数据库是这样的:

Schema Name:cms

Tables:users,articles

Users table:user_id,user_name,user_password

现在代码我有index.phpconnection.phpsignup.php以下是代码:

的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;

?>

和connection.php:

 <?php

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

现在只是让你们知道这是index.php是一个更大的代码的一部分,也因为这是一个更大的文件的一部分当我把connection.php放在另一个文件夹中我得到一个错误找不到connection.php,如果你们还有其他问题我会回答,谢谢!

2 个答案:

答案 0 :(得分:0)

signup.php没有$ username或$ password的值。您需要为密码

添加import hashlib import codecs import base64 m = hashlib.md5() m.update("abc123".encode('utf-8')) print (base64.b64encode(codecs.decode(m.hexdigest(), 'hex')).decode()) 和相同的内容

答案 1 :(得分:0)

定义变量。

在signup.php中

$username = $_POST['username'];

$password = $_POST['password'];

将此修改置于

下方
require('connection.php');

也不要以纯文本格式存储密码。这非常不安全。 使用:

password_hash 

password_verify

EDIT 您没有正确绑定占位符。您也正在访问错误的列。修改后的版本低于

$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;