0

我希望我能得到一些帮助。当我尝试登录该系统时,我收到会话注册错误: *致命错误:在第 18 行的 C:\xampp\htdocs\check.php 中调用未定义的函数 session_register()* 顺便说一句,我刚刚开始学习 PHP所以我是那里的新手:)

有一个代码Register.php:

<?php

include('MySQL.php');
include('password.php');

$Username = $_POST['user'];
$Password = $_POST['password'];
$Re_Password = $_POST['password2'];



if($Username == "")
{
die("You don't enter a username!");
}

if($Password == "" || $Re_Password == "")
{
die("You didn't enter one of your passwords!");
}

if($Password != $Re_Password)
{
die("Your passwords don't match! Try again.");
}

$query = mysql_query("SELECT * FROM users WHERE username='$Username'");

if(mysql_num_rows($query) != 0)
{
echo "Username already exists";
}
else
{
$hash = password_hash($Password, PASSWORD_BCRYPT);
if (password_verify($Password, $hash)) {
if(!mysql_query("INSERT INTO users (username, password)
VALUES ('$Username', '$hash')"))
{
die("Connection problems!");
}
echo "<center>";
echo "Registration was successfull!<br>";
echo "Your user name: $Username<br>";
echo "<a href='login.php'>Login to the system</a>";
echo "</center>";
}
}

?>

检查.php:

<?php

ob_start();

include('MySQL.php');



$username=$_POST['user']; 
$password=$_POST['password']; 


$query = mysql_query ("SELECT * FROM users WHERE username='$username' AND password='$password'");
if(mysql_num_rows($query) == 1)
{

// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("username");
session_register("password"); 
header("location:success.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>
4

4 回答 4

2

include('MySQL.php');
放之前session_start()
接下来,而不是像这样session_register("username");
放置$_SESSION['username'] = $username;和阅读它:echo $_SESSION['username'].
session_register已弃用,现在从 5.4.0 中删除。

于 2013-04-25T08:44:32.680 回答
1

您不能使用 session_register 它在 php 最新版本中已被弃用。

你可以直接使用

$_SESSION['username'] = $username;

并且不要忘记在文件开头添加 session_start() 来启动 PHP 会话。

于 2013-04-25T08:43:33.457 回答
1
session_register("username");
session_register("password");

应该

session_start();
$_SESSION["username"]=$username;
$_SESSION["password"]=$password;

请注意,DB 代码根本不安全。如果没有别的,至少运行mysql_real_escape_string()它。更好地迁移到 MySQLI 或 PDO

于 2013-04-25T08:44:58.910 回答
1

您应该从现代教程或书籍中学习 PHP(您的似乎来自 2000 年代中期)。该session_register()功能已被弃用多年,最终在 PHP/5.4.0 发布时被删除。官方手册包含一些使用示例

mysql_query() 也会发生类似的事情。遗留的 mysql 功能尚未删除,但这只是时间问题。请参阅选择 API以了解替代方案。

最后但同样重要的是,您需要阅读并理解如何防止 PHP 中的 SQL 注入?在你走得更远之前,否则你会养成坏习惯,迟早会给自己带来麻烦。

于 2013-04-25T08:47:49.283 回答