1

どうか、これを手伝ってくれませんか。私はプログラミングの初心者なので、それがばかげた質問であるなら、私に忍耐を持ってください。ありがとうございました。

ログインフォーム(ユーザー名、パスワード)を含むindex.phpページと、コードのこの部分を含むlogin.phpがあります。

<? if(!$_POST['username'] || !$_POST['password']){
$data['msg'] = 'All fields have to be filled!';
$data['success'] = false;}else{


mysql_query("   INSERT INTO log_access(user,ip,datetime)
                            VALUES(
                            '".$_POST['username']."',
                            '".$_SERVER['REMOTE_ADDR']."',
                            NOW()
                            )");

$row = mysql_fetch_assoc(mysql_query("SELECT id,login FROM users WHERE login='".$username."' AND pwd='".md5($password)."'"));

if($row['login'])
{
    $_SESSION['login'] = $row['login'];
    $_SESSION['id'] = $row['id'];

    $data['success'] = true;
    $data['redirect'] = "index.php";    
}
else 
{
    $data['success'] = false;
    $data['msg']='Wrong username or password!';
}}echo json_encode($data);?>

ユーザー名または/およびパスワードで空のフィールドを送信すると、login.phpは$dataを返します。しかし、入力されたフィールドを送信すると、index.phpにデータが返されません。index.phpに次のものがあります。

<script> 
    $(document).ready(function() 
            { 
                $('#frmLogin').submit(function() 
                { 
                    $.post('/scripts/login.php',{username: $('[name=username]').val(), password: $('[name=password]').val()}, function(data)
                        {
                            if(data.success)
                            {
                                $('#login-msg').html("Logged");
                            }
                            else
                            {
                                $('#login-msg').html(data.msg);
                            }
                        }
                        ,'json');
            return false; 
        }); 
            }); 
</script> 

最初の条件、またはその前(login.php)に何かを入れても、同じ問題が発生します。わからない、何が間違っているのか:(

助けてくれてありがとう!鷲羽

解決済みの編集 !ログインスクリプトからDBへの接続が不良です。初心者の間違い。すべての返信をありがとう。

4

1 に答える 1

2

Firebugのコンソールをチェックして、POSTが発生していて、応答コードが200であるかどうかを確認できますか?また、取得されている応答を確認することもできます。

次の内容でtest.phpを呼び出してみてください。

<?
 if(!$_POST['username'] || !$_POST['password']){
$data['msg'] = 'All fields have to be filled!';
$data['success'] = false;
}else{
$data['success'] = true;
$data['redirect'] = "index.php";  
echo json_encode($_POST);
}
?>

また、ユーザー名とパスワードが正しく渡されているかどうかを確認してください。

alert( $('[name=username]').val() + | + $('[name=password]).val()); 

$.postのすぐ上。

ユーザー名とパスワードをハードコーディングしてjsを確認しましたが、正常に機能しています。通常、分割統治するのは良い考えです。login.phpページの入力をハードコーディングし、最初に実行します。その後、$_POSTパラメーターを入力として作成します。このようにして、多くの問題を防ぐことができます。

 ****Important Please ESCAPE ALL POST OR GET VARIABLES FOR MYSQL INSERT.
   Otherwise your scripts are vulnerable to SQL injections.
    ex: mysql_real_escape_string($_POST['username']);
    mysql_real_escape_string($_POST['password']);
Please ignore if you are already doing this!
于 2012-06-21T22:47:06.403 に答える