Я новичок в PHP, но у меня есть некоторый опыт работы с HTML и JavaScript. Это моя веб-страница, это простой экран регистрации.

<!DOCTYPE html>
<html>
<head>
<style>
.error{color: #FF0000;}
</style>
</head>
<body>
    <?php
        $name = $password = $confirmPassword = $email = $phone = "";
        $nameErr = $passwordErr = $confirmPasswordErr = $emailErr = $phoneErr = "";

        if($_SERVER["REQUEST_METHOD"] == "POST"){
            //echo "insdie if";
            if(empty($_POST["name"])){
                $nameErr = "Name is required";
            }else {
                $name = $_POST["name"];
                if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
                    $nameErr = "Only letters and white space allowed"; 
                }
            }
            if($_POST["password"]){
                $nameErr = "password is required";
                if(!$_POST["confirmPassword"]){
                    $confirmPasswordErr = "Confirm password doesn't match password.";
                }
            }else {
                $password = $_POST["password"];
                if($password < 8){
                    $passwordErr = "Password should contain more than 8 characters";
                }else
                {
                    if(empty($_POST["confirmPassword"])){
                        $confirmPasswordErr = "Confirm password and password dont match";
                    }else {
                        $confirmPassword = $_POST["confirmPassword"];
                        if($confirmPassword != $password){
                            $confirmPasswordErr = "Confirm password and password dont match";
                        }
                    }
                }

            }
            if(empty($_POST["email"])){
                $nameErr = "Email is required";
            }else {
                $email = test_input($_POST["email"]);
            }
            echo "".$name."";

            function test_input($data) {
                $data = trim($data);
                $data = stripslashes($data);
                $data = htmlspecialchars($data);
                return $data;
            }
        }       
        ?>
    <form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
        <h1>Register to CabsOnline</h1>
        <p>Please fill th fields below to complete your registration</p>
        <table>
            <tr>
                <td>Name:</td>
                <td><input type="text" name="name"/><span class="error"><?php $nameErr;?></span></td>
            </tr>       
            <tr>
                <td>Password:</td>
                <td><input type="password" name="password"/><span class="error"><?php $passwordErr;?></span></td>
            </tr>
            <tr>
                <td>Confirm Password:</td>
                <td><input type="password" name="confirmPassword"/><span class="error"><?php $confirmPasswordErr;?></span></td>
            </tr>
            <tr>
                <td>Emal:</td>
                <td><input type="text" name="email"/><span class="error"><?php $emailErr;?></span></td>
            </tr>
            <tr>
                <td>phone:</td>
                <td><input type="text" name="phone"/><span class="error"><?php $phoneErr;?></span></td>
            </tr>
        </table>        

        <br/>

        <input type="submit" value="Register"/>
        <br/>

        <h4>Already registered?</h4><a href="login.php">Loging here</a>
    </form>
</body>

Код не добавляет проверки, и я не могу понять, почему. Что мне нужно сделать, чтобы получить значение из текстовых полей только при нажатии кнопки «Отправить»? Я все изменил, но просто не могу найти ответа.

0
Niruban Nicholas 8 Сен 2016 в 14:35

4 ответа

Лучший ответ

Вам нужно на самом деле повторить струны.

<?php $nameErr;?>

Сам по себе ничего не делает, это должно быть

<?php echo $nameErr;?>
3
iainn 8 Сен 2016 в 11:39

Ваша проверка работает нормально, но проблема в том, что вы не печатаете сообщения об ошибках ... например, <td><input type="text" name="name"/><span class="error"><?php $nameErr;?></span></td> здесь вы не печатаете значение $nameErr, необходимое для echo значения $nameErr нравится это

<td><input type="text" name="name"/><span class="error"><?php echo $nameErr;?></span></td>
0
Ankur Pathak 8 Сен 2016 в 11:45

Ответ @iainn правильный.

Кроме того, вы можете использовать проверки на стороне клиента с помощью Javascript / jQuery, что предотвратит перезагрузку страницы каждый раз.

Использовать

<form method="post" name="formname" onsubmit="return validateform()">

ИЛИ

<input type="submit" onclick="validateform()" />

Затем добавьте

<script type="text/javascript"> 
function() validatefrom(){
   //your javascript validations
} 
</script>

В верхней или нижней части документа и напишите свои проверки javascript.

0
Developer 26 Сен 2016 в 12:21

Сделай это

 if(isset($_POST['name'])){
      if($_SERVER["REQUEST_METHOD"] == "POST"){
        //echo "insdie if";
        if(empty($_POST["name"])){
            $nameErr = "Name is required";
        }else {
            $name = $_POST["name"];
            if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
                $nameErr = "Only letters and white space allowed"; 
            }
        }
        if($_POST["password"]){
            $nameErr = "password is required";
            if(!$_POST["confirmPassword"]){
                $confirmPasswordErr = "Confirm password doesn't match password.";
            }
        }else {
            $password = $_POST["password"];
            if($password < 8){
                $passwordErr = "Password should contain more than 8 characters";
            }else
            {
                if(empty($_POST["confirmPassword"])){
                    $confirmPasswordErr = "Confirm password and password dont match";
                }else {
                    $confirmPassword = $_POST["confirmPassword"];
                    if($confirmPassword != $password){
                        $confirmPasswordErr = "Confirm password and password dont match";
                    }
                }
            }

        }
        if(empty($_POST["email"])){
            $nameErr = "Email is required";
        }else {
            $email = test_input($_POST["email"]);
        }
        echo "".$name."";

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

    }  

Это проверит, была ли форма отправлена ​​или нет, и установит сообщения об ошибках, только если форма отправлена

0
Ankur Pathak 8 Сен 2016 в 12:01