несколько простых вопросов в php

#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';