2017-01-25 10 views
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]について私は正しいユーザー名とパスワードを入力しても - ページに。

+1

**パスワードのセキュリティを処理するには、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)***を確認するか、ハッシュする前に他のクレンジングメカニズムを使用してください。パスワードを変更すると、パスワードが変更され、不要な追加のコーディングが発生します。 –

+0

セッショントークンなど、チェックできるものが必要です。ユーザーが間違ったページに移動すると、トークンを確認します。トークンがない場合は、ログインページにリダイレクトしてください。 –

+0

私はログインの問題をデバッグすると、 "ハッシュ関数"を実装しようとしています。私はまだxampp localhostを使っています。 編集:ありがとう、私はセッショントークンを試してみます。 –

答えて

0

あなたには伐採しようとする前に、あなたのloginCheckでif文を追加する必要があります。 $_POST情報は、あなたの中に更新する必要があり$_SESSION

if(!isset($_SESSION['uid'])){ 
    //Go to login.php 
    header("Location: login.php"); 
    die(); 
} 

$_SESSION_とは異なり、ページ間に保持されていませんコード。

関連する問題