2011-09-16 17 views
7

私はAJAX経由でログインし、そのデータを.phpファイルに渡してSQLと照合するコードを持っています。テストのために、ユーザー名とパスワードは私ですが、これは私がログインしていないチェックから戻ってきます。セッションが設定されていないようです。PHPセッションが設定されていません

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> 

これは、その後、次のコードを経由してMySQLをチェックし、それは私が私のHTTPヘッダに表示され、「はい」(そう正しくなければなりません)が、それはdoesntのうちエコー表示成功していますlog.phpファイルで指定されているように私を "eindex.php"にリダイレクトします。

<?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"; 

マイHTML放火犯を使用すると、

はい

そうですが、それが正しいPWDを通過し、それが検証しますが、それはまだ言う意味echo'edされている「ログイン詳細は述べているとき吸う」と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"); 
?> 
をeindex.phpために私をリダイレクト0

私は何度かコードをチェックしましたが、何も見つかりませんでした。すべての返信と助けを感謝します。 多くのありがとうございます。

EDIT:このコードでは省略されているmd5 pwdハッシュを追加しても "はい"と表示され、ユーザー名とハッシュをエコーするとボットマッチングが行われますが、セッションはまだ設定されておらず、私。もし上($。)(データをトリム==「はい」)

+0

あなたの['session_start()'](http://php.net/manual/en/function.session-start.php)はどこにありますか? – feeela

+1

いいえ、エラーメッセージの仲間 –

+0

そこにある、最上部の行にjsut、そのコードを除いて、私はそれを詰め込んだはずだと思います; – ben

答えて

1

あなたejaxlog.php戻りyes?本気ですか? alert(data)またはconsole.log(data)を追加して、何が返ってくるか見てみてください。あなたのスクリプトはyesではなく、yes(何らかのエラーがありますか?)だけではありません。 JavaScriptが適切な文字列を受け取っていないため、リダイレクトされないため、リダイレクトされません。 再度、スクリプトによって返されたデータのロギング/アラートを試みてください。 FireFox for FireFoxのようなものをインストールして、JavaScriptで行われたすべてのリクエストを見ることができます。

+0

ああ、誰もそれを持っていないでしょう。戻ってくるだけの "はい"の代わりに、すべてのhtmlを返そうとしていたので、返された(data)= "yes"が悪かった私は持っていてもFBを使うとは思わなかったそれがインストールされ、今完璧に動作します。ありがとう – ben

7

あなたはAJAXを経由してアクセスする任意のページには、個別の要求であり、あなたが移入するスーパーグローバルセッションのためにsession_start()を呼び出す必要があります。あなたのejaxlog.phpページの上部に

0

使用session_start()

+0

私はそこに、ちょうどコードから省略されている....今追加された – ben

関連する問題