PHP ログインについて
PHPを使い会員サイトを作っています。
遷移としては
index→login→top
でログインして中の各ページで、サイトロゴをクリックすればマイページトップに戻るようにしたいです。
ログイン時はPOSTでデータを受け取り、ログイン後はセッションで全ページを繋いでいます。
そののtopで困っています。
ログインしようとすると画面が真っ白になり、検証を見てもエラーは出ていませんでした。エラー表示になるよう設定しており、今までのエラーは見れていました。
session_start();
if(!isset( $_SESSION["uid"])&&(!isset( $_SESSION["pass"]))){
if(!isset ( $_POST ["uid"] )&&(!isset( $_POST["pass"]))){
header ( "Location: login.php" );}
}
if((isset ( $_POST ["uid"] ))&&(isset( $_POST["pass"]))){
login();
exit;
}
上記で$_SESSIONのuidとpassがなければ$_POSTのuidとpassをチェック。$_POSTもなければ、login画面に移動。
$_POSTが入っていたら次のIF文で、関数login()。
関数login()は下記の通りです。
function login(){
function inputCheck($uid, $pass){
$flg=0;
// IDの登録チェック
require("dbConnect.php");//接続
$sql = "select * from usr where uid ={$uid}" ;
//echo "sql=".$sql."<br>";
$result = $dbInfo->query ( $sql );
$record = $result->fetch ( PDO::FETCH_ASSOC );
$count = $result->rowCount ();
if($count<=0){
echo "このIDは存在しません<br>";
$flg=1;
}
if($pass<>$record["pass"]){
echo "パスワードが違います<br>";
$flg=1;
// データベースの切断
$dbInfo = null;
}
return $flg;
}
// 送信データの取得
$uid = htmlspecialchars($_POST ["uid"], ENT_QUOTES);
$pass = htmlspecialchars($_POST ["pass"], ENT_QUOTES);
$flg=inputCheck($uid, $pass);
if($flg<>0){
require("login.php");
exit;
}}
関数に入れ子で関数が使えると見たので中に入れましたが、inputCheck()をlogin()の外に出してみても同じように画面が真っ白になりました。
最初にログインだけ作って動かした際にはログインすることが出来ました。
ログイン状態のチェックが悪いのか関数の使い方が悪いのか、わかりません。
ご教授いただければ幸いです。
補足
すばやい回答ありがとう御座います。 スライドするつまみと言うのはセキュリティのことでしょうか? そこでしたら一度「低」にしてみたのですがダメでした。