0

SQL インジェクションやその他のセキュリティの問題はさておき、次のコードを動作させるのに問題があります。私は近くにいることを知っていますが、それを行う方法がわかりません。現在、次のエラー メッセージが表示されます。

「成功した接続の警告: mysqli_fetch_array() は、パラメーター 1 が mysqli_result であると想定しています。ブール値は C:\xampp\htdocs\proper\checklogin.php の 30 行目でユーザー名/パスワードが間違っています」

Checklogin.php

 <?php
    session_start();


    // Connect to server and select databse.
    $conn= mysqli_connect("localhost", "root", "")
    or die ('No connection');
    print "Successful Connection";
    mysqli_select_db($conn , 'ssssg3') or die ('database will not open');

    // username and password sent from form
    $email=$_POST['email'];
    $password=$_POST['password'];


    $sql = "SELECT * FROM log_in_info where email=$email";

    $result=mysqli_query($conn, $sql);  

    $row=mysqli_fetch_array($result);


    if ($row['password'] == $password) {
    header('location:main1.php');
    } 
    else 
    {
    echo 'wrong username/password';
    }

    ?>   
4

2 に答える 2

3
$sql = "SELECT * FROM log_in_info where email=$email";

これがエラーの原因です。試す:

$sql = "SELECT * FROM log_in_info where email='$email'";

リテラルを ' ' に入れる必要があるため、クエリは失敗します。の戻り値を確認し、実際のエラー メッセージを判断するためにmysqli_query使用してください。mysqli_error

$email適切なエラーチェックを行うには、お勧めします(適切にエスケープされていると仮定します)

$sql = "SELECT * FROM log_in_info where email='$email'";
if(!$sql) die(mysqli_error($conn));
于 2013-03-24T19:18:55.697 に答える
0

エラーメッセージではないことに注意してください。「未定義のインデックス: パスワード」とは、配列キーにアクセスしているもの、存在しないものを意味します。id を回避するには、次のようなものを使用できます (コード用):

if (array_key_exists( 'password', $row ) and $row['password'] === $password) {
于 2013-03-24T19:34:30.903 に答える