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>";
}
}

?>

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

4 に答える 4

2

include('MySQL.php');
置く前にsession_start()。次に、次のように置いて読む
代わりに: . は廃止され、5.4.0 で削除されました。session_register("username");
$_SESSION['username'] = $username;echo $_SESSION['username']
session_register

于 2013-04-25T08:44:32.680 に答える
1

最新のチュートリアルまたは本から PHP を学ぶ必要があります (あなたの本は 2000 年代半ばのもののようです)。このsession_register()関数は何年も前から非推奨であり、PHP/5.4.0 がリリースされたときに最終的に削除されました。公式マニュアルにはいくつかの使用例が含まれています。

mysql_query() でも同様のことが起こります。従来の mysql 関数はまだ削除されていませんが、時間の問題です。代替手段については、API の選択を参照してください。

最後になりましたが、PHP で SQL インジェクションを防止する方法を読んで理解する必要があります。先に進む前に、遅かれ早かれトラブルを引き起こす悪い習慣を身につけてください。

于 2013-04-25T08:47:49.283 に答える
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の最近のバージョンでは廃止されているsession_registerを使用することはできません。

直接使用できます

$_SESSION['username'] = $username;

PHP セッションを開始するために、ファイルの先頭に session_start() を追加することを忘れないでください。

于 2013-04-25T08:43:33.457 に答える