Использование php для отображения приветственного сообщения на той же странице с помощью условных операторов

#php #html #forms

#php #HTML #формы

Вопрос:

Когда пользователь посещает страницу журнала посетителей, он должен видеть приглашение с просьбой ввести свое имя. После отправки формы на той же странице должно отображаться совершенно другое сообщение, приветствующее пользователя на веб-странице. Когда пользователь обновляет страницу, процесс начинается заново.
Это то, что я пробовал до сих пор, это работает, но я все еще не понимаю, как я буду отображать совершенно новое сообщение после ввода.
Вот код, который у меня есть, мне нужна помощь только с использованием PHP для получения правильного желаемого результата

Попытка

 <?php
// define variables and set to empty values
$nameErr = "";
$name = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (empty($_POST["name"])) {
    $nameErr = "Name is required";
  } 
  
  
  else {
    $name = test_input($_POST["name"]);
    // check if name only contains letters and whitespace
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
      $nameErr = "Only letters and white space allowed"; 
    }
    
  }
  
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

<p2 id="example-id-name" class="centered-text "></p>
<p><span class="error"></span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
   <input type="text" name="name" value="<?php echo $name;?>">
   
   <span class="error"> <?php echo $nameErr;?></span>
  <br> <br>
  
 <input type="submit" name="submit" value="Submit">
 
 
</form>

<?php

echo "$name";
echo "<br>";

?>
  

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

1. отредактировано с отступом извините

Ответ №1:

Там, где вы повторяете имя, вы можете проверить, есть ли оно у вас или нет, и выбрать сообщение для отображения

 <?php
if($name) {
  echo "Hi $name!n Welcome to our store!"
}
else {
  echo "Please enter your name"
}
echo "<br>";
?>
  

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

1. Так что вместо того, что у меня есть, <?php echo «$name»; echo «<br>»; ?> Я хотел бы включить этот код? Когда я попытался реализовать это, мне выдали сообщение об ошибке

Ответ №2:

Вы можете написать встроенный php и функции.

Код:

 <?php
# filter input
function filter($var) {
    return htmlspecialchars(stripslashes(trim($var)));
}
  
 # validate name
function validate_name(amp;$name, amp;$err){
    if(empty($name)){
        $err = "Name is required";
        return;
    }
    $name = filter($name);
    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
        $err = "Only letters and white space allowed";
    }
}
  
 $method = filter_input(INPUT_SERVER, 'REQUEST_METHOD');
$err = "";

# If client post a name, then validate the name
if ($method === "POST"){
    $name = $_POST["name"] ?? "";
    validate_name($name, $err);
}
?>
  
 <!-- The form  -->
<form method="post">
    <label>
        <input type="text" name="name" value="<?=$name ?? ""; ?>">
    </label>

    <!-- Show if error  -->
    <?php if (!empty($err)) { ?>
        <span class="error">
        <?=$err ?>
        </span>
    <?php } ?>

    <br>
    <input type="submit" name="submit" value="Submit">
</form>

<?php if (isset($name) amp;amp; empty($err)) { ?>
    <p>Hi <?=$name ?>!</p>
    <p>Welcome to our store!</p>
<?php } ?>

  

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

1. итак, когда я добавил этот код, я получил сообщение об ошибке, что языковая функция несовместима с версиями PHP, указанными в моем проекте, который вы использовали?

2. Я обновил код для совместимости со старыми версиями.

3. PHP 7.1.19 (cli) (построен: 17 августа 2018 20:10:18) (NTS ) Авторское право (c) 1997-2018 Группа PHP Zend Engine v3.1.0, Авторское право (c) 1998-2018 Zend Technologies

4. Это зависит от того, какая языковая функция. Можете ли вы сказать мне, что это за ведьма?

5. Это очень помогло есть ли способ сохранить поле ввода даже после отправки?