2014-12-15 2 views
-1

Я новичок в php, и я создал простую систему входа с php и mysqli для моего веб-сайта, однако мой код не проверяет такие, как «имя пользователя не существует», и я не уверен, как сделать учетную запись для пользователя так, чтобы это индивидуально. Мой код в 3 файлах и все связаны. connection.php содержит session_star(); и подключение к базе данных Homepage.php - что наПростой php-логин с mysqli не проверяется?

<?php 
include 'login.php'; 
?> 
<section> 
<img id="image1" src="homepic.jpg" alt="logo" /> 
</section> 

LoginForm.php

<link rel="stylesheet" href="homecss.css"/> 
<div id="form"> 
<h2>Login</h2> 
<form method="post" action="loginSubmit.php"> 
User Name: <br/> 
<input type="name" name="username" type="text" /><br /> 
Password: <br/> 
<input id="password" name="password" type="password" /><br /> 
<input type="submit" name="logsubmit" value="Login" /> 
</form></div> 

login.php появляется форма

<link rel="stylesheet" href="homecss.css"/> 

<?php 
include './connection.php'; 
?> 
<div id="form"> 
<?php 

if(!isset($_SESSION['authenticatedusername'])){ 
include './loginform.php'; 

if (!empty($_POST['username'])) { 
echo "Username is required"; 
} 
if (!empty($_POST['password'])) { 
echo "Password is required"; 

} 
} 
else{ 
echo 'welcome '. $_SESSION['authenticatedusername']; 
echo '<br/><a href ="logout.php"> logout </a>'; 
echo '<br/><a href ="account.php"> My account </a>'; 

//check to see if error message is to be displayed 
if (isset($_SESSION['message'])){ 
echo $_SESSION['message']="login failed"; 
} 

?> 
</div> 

loginSubmit.php

<?php 
include "connection.php"; 
if(isset($_POST['logsubmit'])){ 
$user=$_POST['username']; 
$pass=$_POST['password']; 
$query= "SELECT * FROM users WHERE user_name='$user' AND user_password='$pass'"; 
$result=mysqli_query($connection, $query); 

if ($row = mysqli_num_rows($result) >0){ 
$_SESSION['authenticatedusername']=$user; 
header ("Location: homepage.php"); 

} else{ 
echo $_SESSION['message']; 
header("Location: homepage.php"); 
} 
} 
?> 
+0

Ваш код уязвим для SQL-инъекций; вы должны прочитать [как предотвратить их в PHP] (http://stackoverflow.com/q/60174/53114). – Gumbo

ответ

0

Вы принимаете неправильное условие на empty()

if (!empty($_POST['username'])) { // If username is filled, you are showing error. 
echo "Username is required"; 
} 
if (!empty($_POST['password'])) { // If password is filled, you are showing error. 
echo "Password is required"; 

} 

Должно быть

if (empty($_POST['username'])) { // If username is not filled, show error. 
echo "Username is required"; 
} 
if (empty($_POST['password'])) { // If password is not filled, show error. 
echo "Password is required"; 
} 
+0

Я изменил его, однако, как только я обновляю страницу и не нажимаю ничего, «требуемое имя пользователя» и пароль требуются «только на странице, как будто они повторяются, как мне это изменить? – b1234

+0

Добавьте это условие до вышесказанного: if (isset ($ _ POST ['logsubmit'])) { – Pupil

+0

Я пробовал, что, тем не менее, он все еще делает то же самое и больше не входит в систему? – b1234

0

Этот код должен найти ошибку в запросе MySQL, так как он указывает там. Ошибка может быть вызвана невыпадающими переменными пользователя и пропуском или опечаткой в ​​имени поля ... что угодно, оно покажет вам.

<?php 
include "connection.php"; 
if(isset($_POST['logsubmit'])){ 
$user=mysqli_real_escape_string($connection, $_POST['username']); 
$pass=mysqli_real_escape_string($connection, $_POST['password']); 
$query= "SELECT * FROM users WHERE user_name='$user' AND user_password='$pass'"; 


if (!$result=mysqli_query($connection, $query)) { 
echo "<div>$query</div>"; //this outputs your query as sent to MySQL 
echo "<div>".mysqli_error($connection)."</div>"; // this will output the mysql error 
} 


if ($row = mysqli_num_rows($result) >0){ 
$_SESSION['authenticatedusername']=$user; 
header ("Location: homepage.php"); 

} else{ 
echo $_SESSION['message']; 
// header("Location: homepage.php"); //disabled to see the error 
} 
} 
?> 
<a href="homepage.php"> Homepage </a> 
Смежные вопросы