2011-09-16 20 views
7

AJAX aracılığıyla oturum açan ve daha sonra SQL'e karşı denetlemek için verileri bir .php dosyasına geçiren bir kodum var. Bir test için, kullanıcı adı ve şifre bende - ben yine de bu beni tekrar girişten gelmiyor, oturumun kurulmadığı gibi görünüyor.PHP oturumları ayarlanmadı

log.php

<script type="text/javascript"> 
$(document).ready(function() 
{ 
$("#login_form").submit(function() 
{ 
    //remove all the class add the messagebox classes and start fading 
       $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000); 
    //check the username exists or not from ajax 
    $.post("ejaxlog.php",{ username:$('#username').val(),password:$('#password').val(),rand:Math.random() } ,function(data) 
    { 
     if($.trim(data)=='yes') //if correct login detail 
     { 
     $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox 
     { 
      //add message and change the class of the box and start fading 
      $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900,1, 
      function() 
      { 
      //redirect to secure page 
      document.location='http://www.google.com'; 
      }); 

     }); 
     } 
     else 
     { 
     $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox 
     { 
      //add message and change the class of the box and start fading 
      $(this).html('Your login detail sucks...').addClass('messageboxerror').fadeTo(900,1); 
     });  
     } 

    }); 
    return false; //not to post the form physically 
}); 
//now call the ajax also focus move from 
$("#password").blur(function() 
{ 
    $("#login_form").trigger('submit'); 
}); 
    }); 
    </script> 

    <link type="text/css" href="formboxes.css" rel="stylesheet"> 

    </head> 

    <body> 
    <? 
    echo $_SESSION['u_name'];?> 
    <form method="post" action="" id="login_form"> 
<div align="center"> 

<div > 
    User Name : <input name="username" type="text" id="username" value="" maxlength="20" /> 

</div> 
<div style="margin-top:5px" > 
    Password : 
    &nbsp;&nbsp; 
<input name="password" type="password" id="password" value="" maxlength="20" /> 

</div> 
<div class="buttondiv"> 
<input name="Submit" type="submit" id="submit" value="Login" style="margin-left:-10px; height:23px" /> <span id="msgbox" style="display:none"></span> 

</div> 

    </div> 
</form> 

bu daha sonra, bir sonraki kodu aracılığıyla MySQL denetler o benim HTTP başlıklarında gördüğümüz "evet" (şimdiye doğru olmalıdır) ama doesnt dışarı echos başarılı olduğunu log.php dosyasında belirtilen şekilde "eindex.php" adresine yönlendir.

<?php 
session_start(); 
require("../mcfrdb.php"); 
// Included database once using the require method 
?> 

    <?php 


$username = mysql_real_escape_string(stripslashes($_POST['username'])); 
$pass = mysql_real_escape_string(stripslashes($_POST['password'])); 


$result = mysql_query("SELECT user, pass FROM mcfruse WHERE user='$username'")or die(mysql_error()); 
$row=mysql_fetch_array($result); 

if(mysql_num_rows($result)>0) 
{ 

    if(strcmp($row['pass'],$pass)==0) 
    { 
      echo "yes"; 
      $_SESSION['name']=$username; 
    } 
    else 
      echo "no"; 
} 
else 
    echo "no"; 

Benim HTML kundakçı kullanarak

evet

yani evet doğru pwd geçer ve onu doğrular, ama yine de diyor yani echo'ed ediliyor "Oturum detay dediğinde berbat" ve eindex.php beni yönlendirmek doesnt

eindex.php

<?php 
session_start(); 
if(!isset($_SESSION['name'])) 
header("Location:../index.php"); 
//if logout then destroy the session and redirect the user 
if(isset($_GET['logout'])) 
{ 
session_destroy(); 
header("Location:../index.php"); 
} 

require("../mcfrdb.php"); 
?> 

Kodu birkaç kez kontrol ettim, ancak hiçbir şey bulamadım. Tüm cevaplar ve herhangi bir yardım takdir edildi. Çok teşekkürler.

DÜZENLEME: Hatta ben hala "evet" olsun ve ben kullanıcı adı ve karma yankı, onlar bot eşleştirme vardır (bu koddan atlanmıştır) md5 pwd karma ekleyerek, oturum ancak ve hala değil set yönlendirme varlık değildir ben mi. eğer üzerinde AJAX aracılığıyla erişmek Herhangi sayfanın ayrı istek olduğunu

+0

['session_start()'] (http://php.net/manual/en/function.session-start.php) adresiniz nerede? – feeela

+1

Güzel hata mesajı broker –

+0

içinde, üst satırda jsut, onun ihmal edilmiş mt mt kodu, sanırım ben bu kadar sıkışmış olmalıyım; D – ben

cevap

1

Sizin ejaxlog.php döner yes üstündeki

+0

ahhhh ekledim, hiç kimse buna sahip olamazdı. (veri) = "evet" geri döndü çünkü tüm html saçmalığını geri döndürmeye çalışıyordu, sadece "evet" yerine 'u bile Yüklü, şimdi mükemmel çalışıyor. Teşekkürler – ben

7

($. (veri) == 'evet' Döşeme) ile doldurulması süper küresel oturum için sırayla session_start() aramanız gerekmektedir. senin ejaxlog.php sayfa

0

kullanım session_start()? Emin misiniz? Neyin döndüğünü görmek için alert(data) veya console.log(data) eklemeyi deneyin. Komut dosyanızın yes veya sadece yes'u döndürmemesi gibi görünüyor (bazı hatalar olabilir mi?). Açıkçası, JavaScript'iniz uygun bir dize almadığı için yönlendirilmediniz, bu yüzden sizi yönlendirmiyor. Yine, komut dosyası tarafından döndürülen verileri günlüğe kaydetmeyi/uyarmayı deneyin. Veya JavaScript tarafından yapılan tüm istekleri görmek için FireFox FireFox için bir şey yükleyin.

+0

İçerde var, sadece koddan çıkarıldım ....şimdi – ben