難しい問題ではないと思いますが、行き詰まりました。現在、phpを使用してログインおよびサインアップ(登録)インターフェイスを構築しています。私の考えは直接的です: index.php は「ログイン」と「サインアップ」を示します。データベースにアカウントがない場合は、必要なすべての情報を入力した後、「サインアップ」ページに誘導されます。 「あなたは次のように登録されています」と表示されるページにユーザーを誘導します。問題はここにあります。ユーザーが誰であるかに対応するために $_SESSION['username'] を使用しようとしました。残念ながら、ユーザー名は出力されません。$_SESSION['username'] が設定されているかどうかを確認するために、registered.php で isset() を使用しました。設定されていないことを示していますが、そこにあるはずです!!!
流れはsignup.php→register.php→registered.phpです。私の質問は、$_SESSION['username'] は、session_start() の宣言後に php ファイルに渡される必要があるということです。以下は私のコードです。どこが間違っているか指摘してください。
どうもありがとう。
signup.php
<?php
session_start(); // attention add session_start() again, am I wrong?
$title = "Sign up";
print_r($_SESSION);
?>
<html>
<head>
<title><?= $title ?></title>
<!--
<link href="index.css" type="text/css" rel="stylesheet"></link>
-->
<link href="signup.css" type="text/css" rel="stylesheet"></link>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="index.js"></script>
</head>
<body>
<div id="main-content">
<form method="post" action="register.php">
<label><input class="defaultText" title="username" name="username" type="text"></label><br/>
<label><input class="defaultText" title="email" name="email" type="text"></label><br/>
<label><input class="defaultText" title="company" name="company" type="text"></label><br/>
<label class = "password">password:<input name="pass1" type="password" /></label><br/>
<label class = "password">password (again):<input name="pass2" type="password"/></label><br/>
<input type="submit" value="Sign up!">
</form>
<div style="clear: both;"></div>
</div>
</body>
</html>
register.php
<?php
if(isset($_REQUEST['username']) && isset($_REQUEST['email']) && isset($_REQUEST['company']) && isset($_REQUEST['pass1']) && isset($_REQUEST['pass2'])){
$username = $_REQUEST['username'];
$email = $_REQUEST['email'];
$company = $_REQUEST['company'];
$pass1 = $_REQUEST['pass1'];
$pass2 = $_REQUEST['pass2'];
if(strlen($username) <= 0) {
die("Username must be greater than 0 characters\n");
}
if(strlen($email) <= 0) {
die("Email must be greater than 0 characters\n");
}
if(strlen($company) <= 0) {
die("Company name must be greater than 0 characters\n");
}
if($pass1 != $pass2 && $pass1 <= 0) {
die("Passwords are not the same.");
}
$hash = hash('sha256', $pass1);
# connect to world database on local computer
check(mysql_connect("localhost", "root", "123456"), "connect");
$connect = mysql_connect("localhost", "root", "123456");
# in order to insert data into database tables, database is already there built via mySQL command from terminal
# connect with the database
check(mysql_select_db("product"), "selecting db");
# mysql_real_escape_string() This function must always (with few exceptions) be used to make data safe before sending a query to MySQL.
$username = mysql_real_escape_string($username);
$email = mysql_real_escape_string($email);
$company = mysql_real_escape_string($company);
# this $query query is to send the "insert values" query into a table
$query = "INSERT INTO admins ( username, hash, email, company ) VALUES ( '$username', '$hash', '$email', '$company' );";
$results = mysql_query($query);
check($results, "adding user"); // if not pass show error message
header("Location: registered.php");
}
function check($result, $message) {
if (!$result) {
die("SQL error in $message: " . mysql_error());
}
$_SESSION['username'] = $_REQUEST['username'];
$_SESSION['email'] = $_REQUEST['email'];
$_SESSION['company'] = $_REQUEST['company'];
}
?>
登録済み.php
<?php
$title = "Registered!";
?>
<html>
<head>
<title><?= $title ?></title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="index.js"></script>
</head>
<body>
<?php
print_r($_SESSION);
if(isset($_SESSION['username']))
print "hello";
print $_SESSION['username'];
echo $_SESSION['company'];
?>
<div id="main-content">
<h3>You have registered in administration system as <?= $_SESSION['username'] ?></h3>
<table border="1">
<tr>
<th>Name</th>
<th>Company</th>
<th>Email</th>
</tr>
<tr>
<td><?= $_SESSION['username'] ?></td>
<td><?= $_SESSION['email'] ?></td>
<td><?= $_SESSION['company'] ?></td>
</tr>
<h3>please log in into the administration system</h3>
<h4><a href = "index.php">Log In</a></h4>
</table>
<div style="clear: both;"></div>
</div>
</body>
</html>