У меня есть 3 php-страницы, которые являются index.php, login.php и loginSuccess.php index.php содержит только регистрационную форму, а login.php содержит php-коды для входа в систему.
<?php
session_start();
include './dbConnection.php';
$name = mysql_real_escape_string($_POST['userNameText']);
$password = mysql_real_escape_string($_POST['passwordText']);
$userName = stripslashes($name);
$userPassword = stripslashes($password);
$loginQuery = "SELECT * FROM users WHERE User_Name ='$userName' AND Password ='$userPassword'";
$query = mysql_query($loginQuery);
$result = mysql_num_rows($query);
if($result == 1){
$_SESSION['userName'] = $userName;
header("Location: loginSuccess.php");
}else{
header("Location: index.php");
}
?>
Я хочу сделать это в файле index.php с сообщением об ошибке, если пользователь вводит неправильную регистрационную информацию. У меня есть функция jquery ниже, и я хочу назвать ее в состоянии login.php else. Как я могу это сделать? Спасибо за помощь.
$(function(){
$('#errorDiv').fadeIn();
});
Один простой способ сделать это будет примерно так:
+ Изменить
header("Location: index.php");
в
// This is a bit rough, but, I'm guessing you're learning PHP
// so for now it'd do
header('Location: index.php?login=false');
А затем в вашем index.php добавьте что-то вроде
if ('false' === $_GET['login']) {
echo 'Login failed!';
}
И вы получите красивое сообщение о том, что "Login failed!" когда... логин завершается с ошибкой.
Это никоим образом не является "правильным" способом сделать это, но это поможет вам изучить логику, которую вам нужно знать, чтобы такие вещи работали.
Вы не можете поместить свой код jQuery в состояние login.php
else, потому что он все равно будет выполнять перенаправление. Мое предложение состоит в том, что вы храните сообщение об ошибке в переменной сеанса, а затем продолжаете перенаправление обратно на index.php
где вы проверяете, установлена ли эта переменная сеанса. Если это так, вы можете показать сообщение об ошибке и затем "отменить" эту переменную сеанса.
index.php
<?php if (isset($_SESSION['error'])): ?>
<p class="error-message"><?php echo $_SESSION['error']; ?></p>
<?php unset($_SESSION['error']); ?>
<?php endif; ?>
<form>...</form>
login.php
...
else {
$_SESSION['error'] = 'the error message';
header('Location: index.php');
}
Это веский пример, но, надеюсь, вы увидите в нем логику.
У вас может быть форма входа в систему, который POSTs сам по себе. Вид вроде этого:
<form method="POST action="?login">
<input type="text" name="username" />
<input type="password" name="password" />
</form>
Затем на самой верхней части страницы index.php
вы можете включить файл login.php
.
<?php
if(isset($_GET['login']){
include 'login.php';
}
?>
Сделайте то же самое, где бы вы ни захотели JavaScript.
<?php if(isset($_GET['login']){ ?>
<script type="text/javascript>
$(function(){
$('#errorDiv').fadeIn();
});
</script>
<?php } ?>
Если пользователь вошел в систему успешно, вы просто перенаправляетесь на loginSuccess.php
. Если не все загружается снова.