2016-11-24 8 views
0

私は簡単なログインフォームを作成しました。正しいusernamepasswordと入力すると、アクセス拒否メッセージが常に表示されます。私のログインフォームは常に拒否アクセス

verify.php:

<?php 

session_start(); 

$conn = mysqli_connect('localhost','root','') or die(mysqli_error()); 
mysqli_select_db($conn,'maindata') or die(mysqli_error($conn)); 

$uname=$_POST['username']; 
$pass=$_POST['password']; 
$password = md5($pass); 

$result = mysqli_query($conn,"select * from users where username='$uname' and password='$password'") 
    or die("Could not execute the select query."); 

$row = mysqli_fetch_assoc($result); 

if(is_array($row) && !empty($row)) 
    { 
     $validuser = $row['username']; 
     $_SESSION['valid'] = $validuser; 
    } 
else 
    { 
     echo "<center></h1>Access Denied</h1></center>"."<br />"; 
     echo "<center></h6>Please wait while you are redirected in 3 seconds</h6></center>"."<br />"; 
     header('Refresh: 3; url=login.html'); 
    } 


if(isset($_SESSION['valid'])) 
    { 
     header("Location:index.html"); 
    } 

login.htmlと:

+1

、 –

+0

はまたあなたのhtmlコードを共有して期待されているようならば、チェックアウト:あなたのログインだけで離れてあなたのページを起動することができますか? – C2486

+5

'md5()'を使わず、代わりに 'password_hash()'を使用するように教えています...おそらくSQLインジェクションまで自分自身を開いていないことを示唆しています。 – Rasclatt

答えて

0
<?php 
session_start(); 

if(isset($_SESSION['valid'])){ 
    header("Location:index.html"); 
} 
else 
{ 
    header("location:login.html"); 
} 
?> 

<form method="post" action="verify.php" class="login" class="contact_form"> 
<p> 
    <label for="login">Email:</label> 
    <input type="text" name="username" placeholder = "Enter Username Here..."> 
</p> 

<p> 
    <label for="password">Password:</label> 
    <input type="password" name="password" placeholder = "*******"> 
</p> 

<p class="login-submit"> 
    <button type="submit" class="login-button">Login</button> 
</p> 

<p class="forgot-password"><a href="#">Forgot your password?</a></p> 
</form> 

You'rコードは、それが自己、login.htmlとチェックはユーザがログインしている場合にループ(それらがarrent彼らためcant login)、それらをLogin.htmlからLogin.htmlにリダイレクトします。つまり、PHPコードを入力することはありません。ログインページにアクセスしようとしているときにユーザーが既にログインしているかどうかを確認しないでください。

また、あなたはそれがこのようなものになる可能性があり、ユーザーがログインしているかどうかをチェックするためのファイルを作成する考慮する必要があります。

checkloggedin.phpユーザーがいるかどうかを確認する必要があり

<?php 
    if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
    } 
    if($_SESSION['loggedin'] == false) 
    { 
    die(header("Location: ./index.php")); 
    } 
?> 

var_dump($行)

<?php 
include"checkloggedin.php" 
?> 
関連する問題