로그인 폼 유효성 검증 후 $_SESSION['admin']=1
을 설정했습니다.
페이지가 리디렉션 된 후 $_SESSION['admin']
값을 확인하고 내용을로드하십시오.
지역에서 잘 작동했습니다. 그러나 그것은 온라인 리눅스 서버에서 할 수 없습니다. 어떤 도움이 ..?PHP 온라인 서버의 세션 검증 문제
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);
?>
내가 도망 t 사용자 이름과 암호가 관리자 인 경우 성공을 경고합니다. 그러나 리디렉션 된 후 다시 온라인 서버에만로드됩니다. 그러나 현지에서는 환영 문안이로드되었습니다. 그러나 온라인의 다른 페이지에서는 세션이 정상적으로 작동합니다. 아무도 나를 도울 수 있습니까?
많은 것들이 잘못되었을 수도 있습니다. 웹 서버/모듈/php.ini – Gntem
@GeoPhoenix의 모든 내용을 점검하십시오. 세션은 다른 페이지에서도 잘 작동합니다. 그러나 문제는 $ _SESSION [ 'admin'] 변수에서만 가능합니다. – vinu
"작동하지 않습니다"보다 자세한 정보가 필요합니다. 어떤 종류의 오류가 있었습니까? 어떤 테스트와 디버깅을 했습니까? 우리는 자신의 물건에 접근 할 수 없으므로 이미 수행 한 작업 만 수행 할 수 있습니다. 몇 가지 테스트를 수행 한 경우 결과를 해석 할 수 있습니다. 그러나 "작동하지 않습니다"라고 우리에게 말하면, 우리는 어디로 대답 할 것인지 전혀 모른다. – Palladium