ログインフォームの検証にセッション変数を使用しています。ユーザーが正しい名前とパスワードを指定すると、セッション変数が設定され、ページがリダイレクトされます。ページはセッション変数をチェックし、関連するコンテンツをロードします。
私のコードはローカル サーバーでは正常に動作しますが、オンライン サーバーではセッション変数が設定されていません。
admin.php
<?php
session_start();
$admin = 0;
if(isset($_SESSION['admin'])){
$admin = $_SESSION['admin'];
}
if($admin == 0){
?>
<form action="" class="login">
<label>User Name :</label>
<input type="text" class="uname"/>
<label>Password :</label>
<input type="password" class="pwd"/>
<input type="submit" class="lSubmit" value="SUBMIT"/>
<p class="alert lAlert">test alert</p>
</form>
<?php }elseif($admin == 1){ ?>
<h1>Welcome Site Admin..!!</h1>
<?php } ?>
jQuery
$('.lSubmit').click(function(){
var name = $('.uname').val();
var pwd = $('.pwd').val();
$.post("validation/login.php",{name:name,pwd:pwd}).success(function(data){
var obj = jQuery.parseJSON(data);
if(obj.success == 1){
$('.alert').css('color','#067800');
window.location = "/admin.php";
}else{
$('.alert').css('color','#CC0000');
}
$('.lAlert').text(obj.msg);
$('.lAlert').fadeIn('slow');
});
return false;
});
検証/login.php
<?php
session_start();
$name = $_POST['name'];
$pwd = $_POST['pwd'];
$err['success'] = 0;
$err['msg'] = '';
if($name == ''){
$err['msg'] = 'Name required';
}else if($pwd == ''){
$err['msg'] = 'Password required';
}else if($name != 'admin'){
$err['msg'] = 'Wrong username';
}else if($pwd != 'admin'){
$err['msg'] = 'Wrong password';
}else{
$err['msg'] = 'Success';
$err['success'] = 1;
$_SESSION['admin'] = 1;
}
echo json_encode($err);
?>
ユーザーがadminとして名前とパスワードを指定すると、ウェルカム テキストがローカル サーバーに正常に読み込まれました。しかし、オンラインサーバーでは、フォームが再度読み込まれるだけでした。$_SESSION['admin']
がオンライン サーバーに設定されていませんでした。誰でも私を助けることができますか?