Я знаю, что первое, что каждый скажет, это то, что это было опубликовано сотни раз; тем не менее, я пробовал все разные методы, которые люди предложили, но еще не повезло … Я пытаюсь получить всплывающее сообщение с предупреждением, если вход не удался, но по какой-то причине сообщение не хочет появляться. Вот что я до сих пор:
if($conn) { $result=sqlsrv_query($conn, "SELECT * FROM Operator WHERE Username='{$_POST['login']}'"); $pass=sqlsrv_fetch_array($result); if($pass["Password"] === $_POST['password']) { session_start(); $_SESSION['loggedin']=true; header("Location: home.php"); exit; } else { header("Location: login.php"); echo '<script type="text/javascript">'; echo 'alert("Password Invalid!")'; echo '</script>'; } } sqlsrv_close($conn);
PHP работает нормально, но по какой-то причине я не могу заставить javascript работать. Есть идеи?
Я думаю, проблема здесь. вы перенаправляете страницу перед предупреждением
header("Location: login.php"); /* Redirect browser */
попробуйте удалить его или перенаправить через пару секунд, например
header( "refresh:5;url=login.php" ); //redirect after 5 seconds
или вы предлагаете диалог для пользователя, чтобы перейти к следующей странице. удалите заголовок () tho
<script type="text/javascript"> <!-- var retVal = confirm("Login FAILED! Do you want to continue ?"); if( retVal == true ){ window.location.href = "login.php"; return true; }else{ alert("User does not want to continue!"); return false; } //--> </script>
В header("Location: login.php");
кода header("Location: login.php");
есть ли перед вашим js-кодом, чтобы он никогда не выполнял js-код, который он перенаправляет на страницу входа в систему, удалите его и попробуйте.
Используйте этот код
echo '<script>'; echo 'alert("Password Invalid!");'; echo 'location.href="login.php"'; echo '</script>';
вместо
header("Location: login.php"); echo '<script type="text/javascript">'; echo 'alert("Password Invalid!");'; echo '</script>';
Благодарю.
Ваш код, который появляется после заголовка, не запускается, возможно, попробуйте установить переменную сеанса и проверить эту переменную в login.php. Затем вы можете вызвать предупреждение или просто показать простое сообщение на странице.
рядом с оповещением находится отсутствующая точка с запятой:
if($conn) { $result=sqlsrv_query($conn, "SELECT * FROM Operator WHERE Username='{$_POST['login']}'"); $pass=sqlsrv_fetch_array($result); if($pass["Password"] === $_POST['password']) { session_start(); $_SESSION['loggedin']=true; header("Location: home.php"); exit; } else { header("Location: login.php"); echo '<script type="text/javascript">'; echo 'alert("Password Invalid!");'; echo '</script>'; } } sqlsrv_close($conn);
разве вы не проверяли консоль javscript?
EDIT: Извините, моя ошибка, точка с запятой не обязательно, конечно.
Я тестирую ваш php-код на моем сервере, и он все равно работает!