функция php не запускается, как только пользователь вводит данные в форму

#php

#php

Вопрос:

Функция T_CONTINUE не запускается и выдает ошибку неопределенного индекса: city1 в строке 82, наряду с городами 2 и 3. Остальные статменты if работают, проверяя ввод от пользователя. Если пользователь забывает ввести часть формы, сначала отображаются отдельные сообщения об ошибках, а затем должно отображаться общее сообщение об ошибке, но этого не происходит.

После того, как пользователь введет всю правильную информацию и continue == true, он должен опубликовать обратно то, что он выбрал в форме.

  <HTML> 
    <head>
    <h1>Weather Wizards Registration Verification Form</h1>
<hr>
<br>
  <?php //start PHP codeing
    $name=
    $parentName=
    $email=
    $phone=
    $member=
    $city1="";
    $city2="";
    $city3="";
    $nameErr="";
    $parentNameErr="";
    $parentEmailErr="";
    $parentPhoneErr="";
    $memberErr="";
    $errMessage ="";
    $continue=true;

    if ($_SERVER["REQUEST_METHOD"] == "POST"){
    $name = test_input($_POST["name"]);
    $parentName = test_input($_POST["parentName"]);
    $email = test_input($_POST["email"]);
    $phone = test_input($_POST["phone"]);
}
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {  //Name
  if (empty($_POST["name"])) {
    $nameErr = "You forgot to enter your name.";
    $continue==false;
    echo $nameErr;

  } else {
    $name = test_input($_POST["name"]);
  }
  if (empty($_POST["parentName"])) { //Parent Name
    $parentNameErr = "You forgot to enter your parent or guardian’s name";
    echo $parentNameErr;
    $continue==false;
  }else {
    $parentNameErr = test_input($_POST["parentName"]);
  }
  if (empty($_POST["email"])) {  //Email
    $parentEmailErr = "You forgot to enter your parent or guardian’s email.";
    echo $parentEmailErr;
    $continue==false;
  }else {
    $parentEmailErr = test_input($_POST["email"]);
  }
  if (empty($_POST["phone"])) { //phone number
    $parentPhoneErr = "You forgot to enter your parent or guardian’s phone";
    echo $parentPhoneErr;
    $continue==false;
  }else {
    $parentNameErr = test_input($_POST["phone"]);
  }
   if (empty($_POST["member"])) { //membership
    $memberErr = "You forgot to enter your membership status.";
    echo $memberErr;
    $continue==false;
  }else {
    $memberErr = test_input($_POST["member"]);
  }
}
T_CONTINUE();
// if ($continue) { T_CONTINUE(); }

    function T_CONTINUE(){
  if($continue = false){
    $errMessage = "We need your name and your parent or guradians name,email,phone and your membership status to send information about our workshop. Hit the back button on the browser to try again";
    echo $errMessage;
  }else if ($continue =true){
if( $_POST["city1"]){
    // if Charleston is selected:
    echo"You are nearest to our Charleston SC location, the Holy City! Go River Dogs!";
}else if( $_POST["city2"]){
    // if per Summerville is selected:
 echo"You are nearest to our Summerville SC location, the Birthplace of Sweet Tea! Refreshing!";
}else if( $_POST["city3"]){
    // if per Mt. Pleasant is selected:
 echo"You are nearest to our Mt. Pleasant, SC location that has a historical and beachy vibe!";
}
}
}

  ?> 
</body>
<style type="text/css">
html{
    background-color: lightgray;
}
</style>
</HTML>
  

Комментарии:

1. Значит, функция T_CONTINUE() не запущена, даже несмотря на то, что она вызывается в последней строке? Включены ли у вас отчеты об ошибках, и если да, все ли выполняется без каких-либо ошибок или предупреждений?

2. T_CONTINUE() ссылается на кучу переменных, которые никогда не задаются: $email , $parentName , $name и т.д.

3. $_POST[($name)] вероятно, должно быть $_POST['name']

4. Что такое test_input() ?

5. Но вы никогда не используете $continue после всех проверок проверки. Вероятно, это должно быть что-то вроде if ($continue) { T_CONTINUE(); }

Ответ №1:

Итак, есть пара проблем с тем, что у вас есть.

  1. Внутри T_CONTINUE функции вы присваиваете false значение $continue . Вы выполняете присваивание вместо сравнения. = против ==
  2. Для доступа к глобальной переменной $continue вам нужно использовать глобальный массив, подобный $GLOBALS['continue'] .
  3. Во время разработки включите сообщение об ошибках в ALL . Упрощает отладку. В этом случае это не сильно помогло бы, поскольку вы выполняли присваивание в условии, и технически это не является незаконным.

Комментарии:

1. Куда бы я добавил $ globals [‘continue’].

2. вместо $continue