2017-08-05 2 views
0

私はPHPでセッションを作成し、admin.phpページを制限しました。ユーザーがログインしていない場合、またはエイリアン/ロボットはそのページにアクセスできません。ログイン後、管理ページに移動する必要があります。しかし、check.phpに記載されているcontact.phpに行きます。 admin.phpにcheck.phpを含めていない場合。ログイン後はadmin.phpに行きますが、admin.phpはログインなしでもアクセスできます。私が間違っている場所を確認できますか?PHPを使用してHTMLページを保護するにはどうすればよいですか?私はエラーを取得しています

これはlogin.php--

<?php 
include('connect.php'); // Include connect for login Script 
if ((isset($_SESSION['username']) != '')) 
{ 
header('Location: admin.php'); 
} 
?> 

<!DOCTYPE html> 
<html> 
<head> 
<link href='http://fonts.googleapis.com/css?family=Montserrat:400,700' rel='stylesheet' type='text/css'> 
<meta charset="UTF-8"> 

<title>Admin Login</title> 

</head> 

<body> 

<div class="login-block"> 
<form action="" method="POST"> 
    <h1>Login</h1><span><img src="/img/loginlogo.png"/></span> 
    <span id="invalid"><?php echo $error; ?></span> 
    <input type="text" name="username" placeholder="Username" id="username" /> 
    <span><?php echo $usererror; ?></span> 
    <input type="password" name="password" placeholder="Password" id="password" /> 
    <span><?php echo $pwderror; ?></span> 
    <input id= "btn" name="submit" type="submit" value=" Login "/> 

    <a href="register.php" id="frgt">Forgot Password</a> 
    <a href="register.php" id="register">Register Now</a> 

</form> 
</div> 
</body> 

</html> 

これはadmin.php--

<?php 
    include('check.php'); 
?> 

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Home</title> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 

<body> 
<h1 class="hello">Hello, <em><?php echo $login_user;?>!</em></h1> 
<br><br><br> 
<a href="logout.php" style="font-size:18px">Logout?</a> 
</body> 
</html> 

これはcheck.php--

<?php 
include('db.php'); 
session_start(); 
$user_check=$_SESSION['username']; 

$sql = mysqli_query($db,"SELECT username FROM credentials WHERE username='$user_check' "); 

$row=mysqli_fetch_array($sql,MYSQLI_ASSOC); 

$login_user=$row['username']; 

if(!isset($user_check)) 
{ 
header("Location: contact.php"); 
} 
?> 

これは私の接続であるであるです.php--

<?php 
session_start(); 
include("db.php"); //Establishing connection with our database 

$error = ""; //Variable for storing our errors. 
if(isset($_POST["submit"])) 
{ 
    if(empty($_POST["username"]) || empty($_POST["password"])) 
    { 
     $usererror = "Username can not be left blank"; 
     $pwderror = "Password can not be left blank"; 
    } 

    else 
    { 
     // Define $username and $password 
     $username=$_POST['username']; 
     $password=$_POST['password']; 

     // To protect from MySQL injection 
     $username = stripslashes($username); 
     $password = stripslashes($password); 
     $username = mysqli_real_escape_string($db, $username); 
     $password = mysqli_real_escape_string($db, $password); 
     //$password = md5($password); 

     //Check username and password from database 
     $sql="SELECT id FROM credentials WHERE username='$username' and password='$password'"; 
     $result=mysqli_query($db, $sql); 
     $row=mysqli_fetch_array($result, MYSQLI_ASSOC); 

     //If username and password exist in our database then create a session. 
     //Otherwise echo error. 

     if(mysqli_num_rows($result) == 1) 
     { 
      $_SESSION['username'] = $login_user; // Initializing Session 
      header("location: admin.php"); // Redirecting To Other Page 
     } 
     else 
     { 
      $error = "Incorrect username or password."; 
     } 

    } 
} 

?> 
+0

あなたは何らかのチュートリアルに従っていますか? – Martin

+0

はい。しかし、それは動作しません。あなたは助けてもらえますか? –

+3

私はあなたを助けることができ、あなたはそのチュートリアルに従うことを止めるべきだと言います。 'HTML'、' PHP'、 'MySQL'の使い方について教えていることはすべて、推奨されず、ベストプラクティスではなく、間違っています。 ***このチュートリアルを使って***を止め、あなたの仕事を捨てて 'Prepared SQL Statements'と' HTML5'と 'PHP 7'を読んでください。がんばろう。 – Martin

答えて

0

私はあなたを助けることができますし、そのチュートリアルに従うことをやめてください。 HTML、PHP、MySQLの使い方を教えてくれるすべてのものが推奨されていますが、ベストプラクティスではなく、間違っています。そのチュートリアルを使用して停止し、あなたの仕事を捨てて、Prepared SQL StatementsとHTML5とPHP 7を読んでください。

    常に
  • header("Location: ...);呼び出した後die()exitを置きます。あなたのログインはあなたのセッション値をチェックしている

  • 一度正しくログインしたら、それゆえ、そのセッションの値が記憶されるだろうと、あなたは常に「ログイン」されます。このサイクルを解除するには、このウェブサイトのブラウザデータをクリアしてください。ページを更新。

あなたは全く正しくログインすることができました場合、私はあなたShowing me what PHP errors (if any) you are gettingと明確にすることなく、より詳細なヘルプを提供することはできませんか?

+0

ログでこれを取得しています: 'PHPの注意:未定義の変数:ログイン時のusererror。php on line 150 \ n PHP Notice:未定義変数:行152のlogin.phpのpwderror PHP Notice:未定義の変数:行150のlogin.phpでのusererror PHP Notice:未定義の変数:login.phpのオンラインでのpwderror 152 未定義の変数:37行目のconnect.phpのlogin_user @ –

+1

@RaviSharmaこのエラーには、質問のどこにも言及されていないファイル(login.php)が含まれています。 – duskwuff

+0

私は今含まれています。あなたは確認できますか? –

1

この問題は修正されました。

私はからconnect.phpに私のコードを置き換える:

$_SESSION['username'] = $login_user; // Initializing Session 

へ:

$_SESSION['username'] = $username; // Initializing Session 

みんなありがとう。

関連する問題