2013-04-25 151 views
0

我希望生病得到一些幫助。當我試圖登錄該系統即時通訊會話註冊時出現錯誤: *致命錯誤:調用未定義的函數session_register()在C:\ xampp \ htdocs \ check.php在第18行* btw我只是開始學習PHP的,所以我是一個新手在那裏:)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>"; 
} 
} 

?> 

Check.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(); 
?> 

回答

1

不能使用了session_register是藐視在PHP最近的版本。

您可以直接使用

$_SESSION['username'] = $username; 

,不要忘記添加在session_start()在文件的開頭啓動PHP會話。

+0

有什麼建議嗎? – David 2013-04-25 08:44:46

+0

直接使用$ _SESSION ['username'] = $ username; – 2013-04-25 08:45:05

2

之前include('MySQL.php');
session_start()
接下來,代替session_register("username");
$_SESSION['username'] = $username;和讀取它像:echo $_SESSION['username']
session_register已棄用,現在已從5.4.0中刪除。

1
session_register("username"); 
session_register("password"); 

應該

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

被告知請即DB代碼是不是安全的。如果沒有別的,至少運行mysql_real_escape_string()就可以了。更好地轉移到MySQLI或PDO

1

您應該從現代教程或書籍中學習PHP(您似乎是從2000年代中期開始的)。 session_register()函數已被棄用多年,並且在PHP/5.4.0發佈時終於被刪除。官方手冊包含一些usage examples

mysql_query()發生類似的事情。遺留的mysql函數還沒有被刪除,但這只是一個時間問題。有關替代方案,請參見Choosing an API

最後但並非最不重要的是,您需要先閱讀並理解How to prevent SQL injection in PHP?,然後才能進一步學習,否則您將會學習不良習慣,這些習慣會遲早會導致您的介紹麻煩。

+0

感謝您的建議 – David 2013-04-25 09:45:12