我目前正在开发一个网站,但我的注册页面中不断收到 2 个错误。这些是错误:
Notice: Undefined variable: error in C:'xampp'htdocs'olympus'register.php on line 35
Notice: Undefined variable: message in C:'xampp'htdocs'olympus'register.php on line 36
这些是他们引用的代码行:
line 35 - $smarty->assign('error',$error);
line 36 - $smarty->assign('message',$message);
我已经仔细检查了所有内容,但找不到为什么会出现这些错误。有人可以帮我这些吗?
编辑:这是到目前为止的完整寄存器.php文件。
<?php
require_once 'smarty.php';
if($_POST) {
$password = $_POST['password'];
$confirm = $_POST['confirm'];
if($password != $confirm) {
$error = 'Passwords do not match!';
} else {
require_once 'config.php'; // our database settings
$conn = mysql_connect($dbhost,$dbuser,$dbpass)
or die('Error connecting to mysql');
mysql_select_db($dbname);
$query = sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('%s')",
mysql_real_escape_string($_POST['username']));
$result = mysql_query($query);
list($count) = mysql_fetch_row($result);
if($count >= 1) {
$error = 'that username is taken.';
} else {
$query = sprintf("INSERT INTO users(username,password) VALUES ('%s','%s')",
mysql_real_escape_string($_POST['username']),
mysql_real_escape_string(md5($password)));
mysql_query($query);
$userID = mysql_insert_id($conn);
require_once 'stats.php';
setStat('atk',$userID,'5');
setStat('def',$userID,'5');
setStat('mag',$userID,'5');
$message = 'Congratulations, you registered successfully!';
}
}
}
$smarty->assign('error',$error);
$smarty->assign('message',$message);
$smarty->display('register.tpl');
?>
你的错误清楚地描述了正在发生的事情:
未设置$error
和$message
。仅此而已。
您至少应该在该行之前初始化它们:
$error = $message = '';
或
$error = $message = array();
而且,顺便说一句:它只是注意,而不是语法错误,所以可以避免该错误在开始时不显示此代码:
error_reporting(E_ALL & ~E_NOTICE);
编辑:
如果未设置$_POST
(未发送表单(,则不会进入条件。因此,您的两个变量是未定义的。因此,只需在开始时预先定义它们即可。将您的代码更改为以下内容:
<?php
require_once 'smarty.php';
$error = $message = ''; // THIS IS ADDED HERE...
if($_POST) {
$password = $_POST['password'];
$confirm = $_POST['confirm'];
if($password != $confirm) {
$error = 'Passwords do not match!';
} else {
require_once 'config.php'; // our database settings
$conn = mysql_connect($dbhost,$dbuser,$dbpass)
or die('Error connecting to mysql');
mysql_select_db($dbname);
$query = sprintf("SELECT COUNT(id) FROM users WHERE UPPER(username) = UPPER('%s')",
mysql_real_escape_string($_POST['username']));
$result = mysql_query($query);
list($count) = mysql_fetch_row($result);
if($count >= 1) {
$error = 'that username is taken.';
} else {
$query = sprintf("INSERT INTO users(username,password) VALUES ('%s','%s')",
mysql_real_escape_string($_POST['username']),
mysql_real_escape_string(md5($password)));
mysql_query($query);
$userID = mysql_insert_id($conn);
require_once 'stats.php';
setStat('atk',$userID,'5');
setStat('def',$userID,'5');
setStat('mag',$userID,'5');
$message = 'Congratulations, you registered successfully!';
}
}
}
$smarty->assign('error',$error);
$smarty->assign('message',$message);
$smarty->display('register.tpl');
?>
或者只是移动这个:
$smarty->assign('error',$error);
$smarty->assign('message',$message);
在那个条件下,if($_POST) {
在最后。