-1

ログインフォームで抱えていた問題を解決しようとしています。基本的な html フォームに続いて、使用している php スクリプトを投稿しました。ログインしようとするたびに、うまくいきません。

Html - ユーザー名: パスワード:   

フィリピンペソ -

$link = mysqli_connect('host', 'db', 'pw', 'db');
$login = mysqli_query($link, "SELECT * FROM users WHERE (username = '" .($_POST[username]) . "') and (password = '" .($_POST[password]) . "')");

if (mysql_num_rows($login) == 1) {
$_SESSION[username] = $_POST[username];
header('Location: adminpage.php');
}
else {
header('Location: login.html');
}
?>

どんな助けでも大歓迎です。ありがとう

4

3 に答える 3

3

以下のコードでphpコードを変更します:-

session_start();

$link = mysqli_connect('host', 'db', 'pw', 'db');
$username = $_POST['username'];
$password = $_POST['password'];
$login = mysqli_query($link, "SELECT * FROM users WHERE username = '$username' AND  password = '$password'");

if (mysql_num_rows($login) == 1) {
    $_SESSION['username'] = $username;
    header('Location: adminpage.php');
}
else {
    header('Location: login.html');
}
于 2013-05-02T05:35:05.177 に答える
0

$_POST および $_SESSION 変数を引用符で囲む必要があります。

$_POST['username']
$_SESSION['username']

また、 を使用mysqli_num_rowsしているため、使用する必要がありますmysqli。(だけでなくmysql_num_rows)

また、SQL インジェクションの防止についてもよく読んでください。これらの $_POST 変数を SQL クエリに挿入する前にクリーンアップしないと、だれかがデータベースに簡単にハッキングする可能性があります。

以下の変更を行いました。


// Make sure to replace the 4 parameters in the next line with your actual database info.
$link = mysqli_connect('THE_URL_TO_YOUR_DATABASE', 'YOUR_USERNAME', 'YOUR_PASSWORD', 'YOUR_DATABASE_NAME');
$login = mysqli_query($link, "SELECT * FROM users WHERE (username = '" .$_POST['username'] . "') and (password = '" .$_POST['password'] . "')");

if (mysqli_num_rows($login) == 1) {
    $_SESSION['username'] = $_POST['username'];
    header('Location: adminpage.php');
} else {
    header('Location: login.html');
}
于 2013-05-02T05:30:05.527 に答える
0

タスクを実行する前に必ずエラーチェックを行う

session_start();

$link = mysqli_connect('host', 'un', 'pw', 'db');
// Check connection
if (mysqli_connect_errno($link))
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// Perform a query, check for error
$user = $_POST['username'];
$pswd = $_POST['password'];
$login = mysqli_query($link, "SELECT * FROM users WHERE (username = '$user') and (password = '$pswd')");

if (mysql_num_rows($login) == 1) {
      $_SESSION['username'] = $user;
      header('Location: adminpage.php');    
}else {
    echo("Error description: " . mysqli_error($link));
}
于 2013-05-02T05:53:08.870 に答える