0

こんにちは、私は PHP を初めて使用するので、私を非難しないでください。ただし、このコードの問題が何であるかを理解することはできません。したがって、基本的にはいくつかの形式の出力がありますが、mysql で何かを行うとすぐに (接続して切断するだけでも!)、どのような出力も行うことができません。また、リダイレクトも許可されません。

mysql 接続コードと切断コードの間のすべてのコードを取り出してみましたが、何も解決しませんでしたが、mysql 接続コードをコメントアウトするとすぐに、すべての出力とリダイレクトが機能します! 別のフォームから電子メールとパスワードを取得する単純なログイン スクリプトを作成しようとしています。残りの部分が機能するかどうかを判断できるように、これを解決したいと思います。そして、「ヘッダー」が機能しないことを知っていechoます; これが機能していることを確認でき次第、エコーとファイルの書き込みは表示されません。どんな助けでも大歓迎です!ありがとう!

<?php
/*
    Login.php searches for the email address given by loginPage.php in the data base.
    If the email is found and the password given by loginPage.php matches that stored 
    in the data base, a session will begin and the client will be redirected to the 
    main page.
    *** INCOMPLETE ***  
*/
echo "HELLO!";
$email = $_POST["email"];
$password = $_POST["password"];

$errorLog = fopen("login.txt", "w");    
    fwrite($errorLog, "***Sesion started***");
$mysql_id = mysql_connect("localhost", "root", "12131");
if (!$mysql_id)
    {
        die('Could not connect: ' . mysql_error());
    }
mysql_select_db('informationStation', $mysql_id);

$results = mysql_query("SELECT password FROM Personals WHERE email = '" . $email . "';", $mysql_id);

if($results != null && $password == mysql_fetch_array($result)) 
    {
         $redirect  = 'Location: http://127.0.1.1/main.php';
    }
else 
    {
         $redirect  = 'Location: http://127.0.1.1/loginPage.php';
    {   
mysql_close($mysql_id); 
fwrite($errorLog, "result: " . $results);
fwrite($errorLog, "redirect: " . $redirect); 
fclose($errorLog);
header($redirect);  
?>
4

2 に答える 2

0
$mysql = mysql_connect("localhost", "root", "12131") or die('Could not connect: ' . mysql_error());
mysql_select_db('informationStation', $mysql);


function loged($email, $password) {
    $result = mysql_query("SELECT id FROM Personals WHERE email = '" . $email . "' AND password='" . $password . "'");
    if(mysql_num_rows($result) != 1)
        return false;
    return true;
}


if(loged(mysql_real_escape_string($email), md5($password))) {
    header('Location: http://127.0.1.1/mainPage.php');
    exit;
}   

header('Location: http://127.0.1.1/loginPage.php');

この例では、md5 暗号化方式を使用してユーザーのパスワードを保存する必要があります (他のより安全な暗号化方式を検索してください)。

また、SQL インジェクションに対して電子メール アドレスをエスケープしました。

ユーザーがログインしているかどうかを確認するたびに呼び出すことができる関数を作成しました。

これは完全なログイン スクリプトではないことに注意してください。また、ユーザーごとに新しいセッションを開始する必要があるログイン機能を作成する必要があります。

于 2012-08-02T15:58:02.710 に答える
0

始めるためにこれを試してください..

$results = mysql_query("SELECT password FROM Personals WHERE email = '" . $email . "'", $mysql_id) or die(mysql_error());

ただし、SQL インジェクションについても読む必要があります。

また、パスワードをソルト化してハッシュ化せずにデータベースに保存しないでください。

また、結果からデータにアクセスするには、配列構文を使用する必要があります...

于 2012-08-02T15:48:06.727 に答える