Проверка / проверка электронной почты - ошибка

Я думаю, что этот пост может показаться "не по теме" другим. Но это будет большое спасибо, если вы поможете мне с этим.

Я нашел код подтверждения электронной почты в Интернете. Каким-то образом я нахожу это смущающим сначала, но когда я начал понимать это и помещал это в свой код. Там ошибка, и я не знаю как.

Проблемы:

  • Код подтверждения электронной почты.
  • Правильный синтаксис / использование кода.

Код:

  <?php

 if(isset($_POST['submit']))
    {
     $a = $_POST['username'];
     $b = $_POST['password'];
     $c = $_POST['firstname'];
     $d = $_POST['lastname'];
     $e = $_POST['month'];
     $f = $_POST['day'];
     $g = $_POST['year'];
     $h = $_POST['contact'];
     $i = $_POST['email'];
     $j = $_POST['confirm'];

     $code = md5(uniqid(rand()));

    include("dbconnect.php");
    $query = "SELECT * FROM `users`.`info` WHERE `username`='".$a."' AND `email_address`='".$i."'";
     $queryQuery=$con->query($query);

    $checker = mysqli_num_rows($queryQuery);


    if (($a && $b && $c && $d && $h && $i && $j) == "")
        {
         print "<script type=text/javascript>
        alert('All fields are required');
        </script>";
        }
    else
    {

    if ($checker == 0 && $b != $j)

        {

        print "<script type=text/javascript>
           alert('Password Mismatch');
        </script>";


        }

    else if($checker == 0)
        {

        //print $a,$b,$c,$d,$e,$f,$g,$h,$i;

                            $insertQuery="INSERT INTO `users`.`info` (`username`,`password`,`firstname`,`lastname`,`month`,`day`,`year`,`contact_number`,`email_address`,`confirm_code`) VALUES ('$a','$b','$c','$d','$e','$f','$g','$h','$i','$code')";
                            $insertQueryResult=$con->query($insertQuery);

                            if ($insertQueryResult)
                                {
                                    // send e-mail to ...
                                    $to=$i;

                                    // Your subject
                                    $subject="Your confirmation link here";

                                    // From
                                    $header="From Admins of Publisita.com";

                                    // Your message
                                    $message="Your Comfirmation link \r\n";
                                    $message.="Click on this link to activate your account \r\n";
                                    $message.="http://www.gmail.com/confirmation.php?passkey=$code";

                                    // send email
                                    $sentmail = mail($to,$subject,$message,$header);
                                }

                                    // if not found 
                            else 
                                {
                                    print "<script type=text/javascript>
                                            alert('Not found your email in our database')
                                            </script>";
                                }

                            // if your email succesfully sent
                            if($sentmail)
                            {
                                print "<scrpit type=text/javascript>
                                        alert('Your Confirmation link Has Been Sent To Your Email Address')
                                        </script>";
                            }

                            else 
                            {
                                print "<script type=text/javascript>
                                    alert('Cannot send Confirmation link to your e-mail address')
                                    </script>";
                            }

                            }





                        print "<script type=text/javascript>
                        alert('Successfully Registered');
                        </script>";

                        }

                        else
                            {
                            print "<script type=text/javascript>
                                    alert('Information are already been used');
                                </script>";
                            }

                    }
                }



        ?>

Было бы здорово, если бы кто-то помог мне

1 ответ

Эта строка:

if (($a && $b && $c && $d && $h && $i && $j) == "")

неверный синтаксис Если вы хотите убедиться, что эти значения не пусты, вам нужно проверить их по отдельности (вы также хотите использовать или (||), так как только один должен быть пустым, чтобы вы могли показать свою ошибку. Ваш текущий код потребовал бы, чтобы все они были пустыми):

if ($a == "" || $b == "" ....) // or if (empty($a) || empty($b) ....)

или придумайте более краткий способ сделать это:

$fields = array($a, $b, $c, $d, $h, $i, $j);
if (count(array_filter($fields)) !== count($fields))

Приведенный выше код принимает все проверяемые значения и помещает их в массив. Затем звонит array_filter() чтобы удалить любые значения, которые являются ложными (пустая строка типа жонглируется, чтобы быть логическим ложным). Если количество оставшихся элементов не равно начальному количеству элементов, то один или несколько элементов были пустыми, и вам нужно показать свою ошибку.

Как отмечает Nicolas Defranoux, вы широко открыты для SQL-инъекций. Перед публикацией кода убедитесь, что вы закрыли эту дыру.

Другие вопросы по тегам