2013-02-05 4 views
0

Эй, может кто-нибудь посмотреть мой код и помочь мне ... Я использую apache, и я пытаюсь сделать это, если пользователь вводит пароль и имя пользователя неправильно 3 раза. просто отправьте их на страницу 404 html. К сожалению, я получаю код, отображаемый в моем браузере, и я не знаю, почему. Я знаю, что php, если код небрежный или неправильный, пожалуйста, не преследуйте меня об этом.Переменные сеанса Php, блокировать пользователя

login.php:

<?php 
session_start(); 
$_SESSION['wrong']=0; 
$user = $_POST['user']; 
$pass = $_POST['pass']; 
if($user == "school" 
&& $pass == "homework") 
{ 
echo"Password system work!"; 
}else{ 
$_SESSION['wrong']=$_SESSION['wrong']+1; 
header('Location: http://localhost') ; 
} 
?> 

Index.html:

<? session_start(); 
include 'login.php'; 
global $_SESSION['wrong']; 
if($_SESSION['wrong']>=3){ 
header('Location: 404_File_Not_Found.html') ; //This is what the browser is showing 

} 
?> 
<html> 
<head> 
<style type="text/css"> 

#form{ 
width: 340px; 
height: 400px; 
box-shadow: 0px 2px 5px rgba(0,0,0,0.25); 
position: relative; 
-webkit-box-shadow: 0px 2px 5px; 
border: solid 1px #ddd; 
padding: 30px 30px 60px 30px; 
background: #fff; 
border-radius: 10px; 
} 
p{ 
font-family: Verdana; 

} 
div{ 
margin-left:auto; 
margin-right:auto; 
margin-top:5%; 

} 
img{ 
width: 120; 
height: 133; 
left: 100px; 
position: relative; 
} 
input{ 
margin-left:10%; 
margin-right:5%; 
font-size: 14px; 
width: 264px; 
padding: 9px 7px 7px; 
background: none !important; 
position: relative; 
z-index: 10; 
margin-bottom: 20px; 
border-radius: 5px; 

} 
.button:hover{ 
color: red; 
} 
</style> 


</head> 
<body> 
<div id="form">  
<img src="http://traceybaptiste.files.wordpress.com/2011/01/homework2.jpg" /> 
    <form method="POST" action="login.php"> 
    <p>User:</p> <input type="text" name="user"></input> 
    <p>Pass:</p> <input type="password" name="pass"></input> 
    <input type="submit" name="submit" class="button"></input> 
    </form> 
</div> 
</body> 
</html> 

404.html:

<html> 
<head> 
<style> 
html{ 
background-color:grey; 
} 
body{ 
background-image:url("404.jpg"); 
background-repeat:no-repeat; 
margin-left: 25%; 
margin-right: auto; 
margin-top: 10%; 

} 
</style> 
</head> 
<body> 
</body> 
</html> 
+0

Ваш 'index.html' не будет анализироваться как PHP от Apache. Переименуйте его в 'index.php'. –

+0

И получить в привычку вызывать 'exit()' сразу после 'header (" Location ... ")' –

ответ

0
<?php 
session_start(); 
$_SESSION['wrong']=0; 
$user = $_POST['user']; 
$pass = $_POST['pass']; 
if($user == "school" 
&& $pass == "homework") 
{ 
echo"Password system work!"; 
}else{ $_SESSION['wrong']=$_SESSION['wrong']+1; if($_SESSION['wrong'] == 3) 

header('Location: diepage.html') ; 
} 
?> 
+0

Я применил ваш код, и когда я ввожу неверные данные, я пересылаю их в логин, но я остаюсь там , Я хочу, чтобы он возвращался на страницу входа (localhost .. также называемый index.html), пока не набрал 3, затем переадресовывается на 404, наконец-то чувствуя, что число равно 3+, они не могут вернуться в файл index.html попробуйте войти в систему. Спасибо –

0

Если файл имеет имя index.html, он не будет анализироваться PHP.

Кроме того, используйте <?php вместо <?, он более надежный, поскольку он не зависит от конкретной конфигурации.

+0

Спасибо вам, я сейчас начну использовать

+0

Точно. Назовите его 'index.php' –

+0

Спасибо вам за ваш ввод. Я переименовал файл сейчас, но когда я перейду на login.php, он останется там, он не переместит меня обратно на localhost. –

2

Я не уверен, но думаю, вы не должны включать login.php (вторая строка index.html). Я тоже новичок в php, но, похоже, ваша форма находится на index.html, после чего вы отправляете данные в login.php и перенаправляете пользователя оттуда. Мне действительно не имеет смысла, что вы включаете свой login.php в начале своей формы. Я могу ошибаться, но просто пытаюсь помочь.

Я также думаю, что код William N написал тоже неправильно, вот почему вы застряли в login.php, он не перенаправляет вас на локальный хост, если ваш пароль неверен.

<?php 
session_start(); 
$_SESSION['wrong']=0; 
$user = $_POST['user']; 
$pass = $_POST['pass']; 
if($user == "school" 
&& $pass == "homework") 
{ 
echo"Password system work!"; 
}else{ 
$_SESSION['wrong']=$_SESSION['wrong']+1; 
header('Location: http://localhost') ;} 

if($_SESSION['wrong'] == 3) 

header('Location: diepage.html') ; 

?> 

попробуйте это.

Редактирование: О, также кажется, что вы делаете свой сброс $ _SESSION ['wrong'], назначая ему 0 каждый раз при загрузке login.php ($ _SESSION ['wrong'] = 0;), поэтому его никогда не будет добраться до 3. может быть, вы можете сделать что-то вроде:

if (!isset ($_SESSION['wrong'])){ 
$_SESSION['wrong']=0;} 

Так что вы бы начать и сделать это ноль, только если он не приготовьтесь ранее. Но снова я не совсем уверен.

Смежные вопросы