#php #html
#php #HTML
Вопрос:
у меня есть несколько простых вопросов. 1-как я могу изменить страницы php в определенных точках? например
if($flag)
//go to 1.php
else
// go to 2.php
что я заменяю вместо перехода к?.php
2-
<form action="index.php" method="post">
<input type="button" name ="submit" value="comfirm">
если я нажму на кнопку index.php выполняется
если есть какой-либо способ в определенном состоянии, который я хочу index.php вызывается
например, у нас есть два текстовых поля и кнопка, пользователь должен заполнить оба текста и нажимать на кнопку, пока не перейдет к следующим страницам, но если пользователь заполняет один из текстов, он не должен переходить, но вторым способом index.php не должен вызываться.
Ответ №1:
if ($flag) {
header("Location:1.php");
exit(0);
}
else {
header("Location:2.php");
exit(0);
}
Для второго вопроса вы можете либо использовать Javascript (не у всех пользователей включен javascript, поэтому его работа не гарантируется) и проверить значение полей, либо выполнить проверку сайта сервера и перенаправить пользователя с помощью header
, как указано выше.
Комментарии:
1. Это может быть опасно. Пожалуйста, добавьте
exit(0)
послеheader
.2. мммм, это вообще не сработает. вы забыли обернуть инструкции с
{}
3. @Neal Да, забыл добавить их, когда я добавлял инструкции exit. Добавили их сейчас. Спасибо за предупреждение.
Ответ №2:
Попробуйте это:
if($flag) {
//go to 1.php
header("Location: 1.php");
exit(0);
}
else {
//go to 2.php
header("Location: 2.php");
exit(0);
}
И для второй части вы можете захотеть использовать какой-нибудь клиентский скрипт для двойной проверки входных данных и серверный скрипт для их двойной перепроверки
Комментарии:
1. 1 Правильно, но лучше, по хорошей привычке, ставить вызов die() после заголовка(«Местоположение: ….»), даже если в данном конкретном случае это строго не требуется. По этому поводу есть опасения по поводу безопасности.
2. @mehdi: помните, что заголовки могут игнорироваться браузерами. Например, если вы используете
header()
для перенаправления пользователя на страницу входа, если он не зарегистрирован, чем если вы не используетеexit(0)
, он может легко проигнорировать заголовок и перейти к остальной части страницы.3. @Giacomo. Почему нам нужен exit(0) вместо exit()? Почему вы говорите, что вместо этого лучше использовать die(). В документации PHP не упоминается ни о какой проблеме безопасности и вообще о каких-либо различиях между двумя.
4. @Charlie,
die
это просто другой способ написанияexit
, и0
это системный код5.
die
иexit
совершенно одинаковы. Однако в документах PHP не упоминается о какой-либо проблеме безопасности сheader()
, потому что никто не сказал, что HTTP-перенаправление, выполняемое сheader()
, останавливает выполнение скрипта, поэтому проблема безопасности зависит от того, что скрипт делает послеheader()
вызова. Проблема не связана сheader()
собой. Иногда все это очень опасно, и я когда-либо видел некоторые довольно популярные инструменты PHP, которые из-за этого становятся уязвимыми.
Ответ №3:
Мне нравится использовать META refresh..
<meta http-equiv="refresh" content="3;url=somewhere.php">
3 — это число в секундах перед перенаправлением средства просмотра
Ответ №4:
Для form
проверки вам нужно использовать javascript.
<head>
<script type="text/javascript">
function validateForm()
{
// Conditions to check whether the text box is empty or not.
}
</script>
</head>
<form action="index.php" method="post">
<input type="button" name ="submit" value="comfirm" onsubmit = " return validateForm() ">
Если validateForm()
возвращает true, то только при нажатии кнопки он переходит к index.php
Комментарии:
1. вам также нужно использовать какую-то проверку на стороне сервера, с js можно поиграть на стороне клиента
2. @Neal — Пожалуйста, прочтите вопрос OP. OP должен оставаться на самой текущей странице, когда любой элемент формы пуст . Зачем нужно переходить к проверке на стороне сервера?? Буду рад узнать, если я что-то неправильно понял.
3. @Mahesh. да, но вы можете выполнить проверку на стороне сервера с помощью некоторой магии ajax
4. @Neal — В прошлом семестре я выучил javascript для своего школьного проекта. Итак, это осталось свежим в моей памяти. Я не знаком с ajax .
5. @Mahesh посмотри это 🙂 вот руководство, которое я только что нашел в Google: tizag.com/ajaxTutorial/ajax-javascript.php
Ответ №5:
Я думаю, что это лучший способ, потому что вам не нужно бороться с возможной потерей $ _POST[]
if($flag)
require '1.php';
else
require '2.php';