1
私は学校の論文のバックエンドのウェブサイトを作成しています。私の主な懸案事項は、ユーザがlogin.phpでログインできるようにすることですインデックスページに移動します。バックエンドログインのデバッグ
問題は、「sitename/index.php」に行って、最初にログインしなくてもページを開くことができるということです。
ここでは、コードです:私は私のindex.php
それは単にログに引っかかっだ上logincheck.php
が含まれている場合
<?php
try {
$db = new PDO('mysql:host=localhost;dbname=login', "root", "");
} catch (PDOException $e) {
echo $e->getMessage();
}
$uid = $_POST['uid'];
$pwd = $_POST['pwd'];
$sql = "SELECT * FROM `user` WHERE `uid` = :uid AND `pwd` = :pwd";
$statement = $db->prepare($sql);
$userData = [
'uid'=>$uid,
'pwd'=>$pwd
];
$statement->execute($userData);
if($statement->rowCount() > 0){
header('Location: index.php');
exit();
}
elseif(empty($uid&$pwd)){
header('Location: login.php?error=empty1');
exit();
}
elseif ($uid!=$idvariable&$pwd!=$idvarible){
header('Location: login.php?error=empty2');
exit();
}
?>
:[logincheck.php]
<?php
session_start();
try {
$db = new PDO('mysql:host=localhost;dbname=login', "root", "");
} catch (PDOException $e) {
echo $e->getMessage();
}
$uid = $_POST['uid'];
$pwd = $_POST['pwd'];
$sql = "SELECT * FROM `user` WHERE `uid` = :uid AND `pwd` = :pwd";
$statement = $db->prepare($sql);
$userData = [
'uid'=>$uid,
'pwd'=>$pwd
];
$statement->execute($userData);
if($statement->rowCount() > 0){
$SESSION['uid'] = $_POST['uid'];
header('Location: indextemplate.php');
}
else {
header('Location: login.php');
}
?>
と私の[login.php]について私は正しいユーザー名とパスワードを入力しても - ページに。
**パスワードのセキュリティを処理するには、PHPの[組み込み関数](http://jayblanchard.net/proper_password_hashing_with_PHP.html)を使用してください。 5.5より小さいPHPバージョンを使用している場合、 'password_hash()' [互換パック](https://github.com/ircmaxell/password_compat)を使用することができます。 *** [パスワードをエスケープしない](http://stackoverflow.com/q/36628418/1011527)***を確認するか、ハッシュする前に他のクレンジングメカニズムを使用してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –
セッショントークンなど、チェックできるものが必要です。ユーザーが間違ったページに移動すると、トークンを確認します。トークンがない場合は、ログインページにリダイレクトしてください。 –
私はログインの問題をデバッグすると、 "ハッシュ関数"を実装しようとしています。私はまだxampp localhostを使っています。 編集:ありがとう、私はセッショントークンを試してみます。 –