ユーザーがサインインしているかどうか (つまり、メニュー項目が表示されているかどうか) に基づいてトリガーされる多くのフロントエンド関数がありますが、ユーザーがサインインしたときにそれらがリダイレクトされたり、ページが変更されたりしない限り、それらをトリガーするのに問題があります。リフレッシュされます。
$logged_in
ユーザーがログインしたときに設定される値を変更するにはどうすればよいですか? $_SESSION['SESS_USER_ID'] = $member['user_id'];
サインイン後の設定も含め、機能はすべて正常に動作しています。
Index.php (このコードの多くはサイト全体でも使用されています)
ドキュメントの冒頭:
<?php
require_once('auth.php'); // This file starts session, and checks if(!isset($_SESSION['SESS_USER_ID']) || (trim($_SESSION['SESS_USER_ID']) == ''))
require_once('config.php'); // Connects to database connection
$user_id = $_SESSION['SESS_USER_ID'];
$logged_in = (isset($_SESSION['SESS_USER_ID']));
?>
次に、関連する関数が $logged_in によってトリガーされ、次の基本的な形式に従います。
<?php if ($logged_in) : ?>
// Some HTML or Script
<?php else : ?>
// Some HTML or Script
<?php endif; ?>
サインインフォームと機能
AJAX の一部が無関係である場合は、申し訳ありません。
<form id="loginForm" name="loginForm" action="login-exec_pdo.php" method="post">
<label for="user_name">Username </label><input type="text" name="user_name" required />
<label for="password">Password </label><input type="text" name="password" required />
<div id="return_result"></div><div id="messageBox5">Please complete the highlighted fields</div>
<input type="submit" id="login" value="Sign in" />
</form>
<script type="text/javascript">
$(function () { $('#loginForm').validate({
rules: {user_name: {required: true, minlength: 2,}, password: {required: true, minlength: 6,},}, messages: {user_name: "", password: "",},
errorLabelContainer: "#messageBox5",
submitHandler: function (form){
$.ajax({
type: 'POST',
url: 'login-exec_pdo.php',
data: $("#loginForm").serialize(),
success: function(data) {
if(data == "true") {
$("#loginForm").fadeOut("fast");
}
else {
writeToTarget('return_result', 'Incorrect Username or Password');
} } }); } }); });
</script>
login-exec.php ファイル
<?php
session_start();
require_once('config/config_pdo.php'); // Includes db connection, salt, & PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION
$password = $_POST['password'];
$hashedPassword = sha1($salt . $password);
try {
$stmt_user = $conn->prepare("SELECT * FROM customer_info WHERE user_name = :user_name and password = :hashedPassword");
$stmt_user->bindValue(':user_name', $_POST['user_name'], PDO::PARAM_STR);
$stmt_user->bindValue(':hashedPassword', $hashedPassword);
$stmt_user->execute();
session_regenerate_id();
$member = $stmt_user->fetch();
if($member) {
$_SESSION['SESS_USER_ID'] = $member['user_id'];
$_SESSION['SESS_USER_NAME'] = $member['user_name'];
session_write_close();
echo "true";
exit();
}else {
echo "false";
exit();
}
}catch(PDOException $e) {
echo $e->getMessage();
}
?>
また、javascript と php の両方を使用して、サインイン関数内の成功関数 (上記の場所) に設定しようとしましたが、設定しなかったか、ログイン関数が正しく完了しませんでした。私が試したことのいくつかは次のとおりです if ($logged_in) :
$logged_in = (isset($_SESSION['SESS_USER_ID']));
$logged_in = "true";
。 $logged_in = 1;