表单脚本中的PHP错误

时间:2016-07-27 02:56:58

标签: php

我正在尝试制作一个php联系表单,但我收到以下消息:

  

注意:未定义的变量:第45行的C:\ wamp \ www \ contactform_test \ index.php中的错误

我的第45行看起来像这样:

if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
        $errors .=$invalidEmail;
    }

有答案的人吗?

7 个答案:

答案 0 :(得分:0)

if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
        $errors .=$invalidEmail;
    }

您使用了.运算符,该运算符用于连接但您之前从未声明过$errors

$errors = "";  //add this line before if checking

答案 1 :(得分:0)

使用前定义variable $error

$errors = '';// or at the top of page before you assign any value to this `variable`

我们应该在variable中声明我们将要使用的每个code以避免此类errors

 if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
            $errors .=$invalidEmail;
        }

答案 2 :(得分:0)

如果在调用之前没有初始化变量,PHP将显示Undefined变量。您应该在启动范围之前初始化变量。

如果有全局变量的条件结构和循环结构,则应首先调用并初始化变量

$error ='';

if(something conditional){
    $error = 'some message' or $error .="something";
}

if looping structure 

$error ='';

for and foreach and while loop{

   $error = 'some message' or $error .="something";
}

如果您使用RAW PHP代码的主要原因是在PHP脚本启动时调用和初始化变量会更好,例如

<?php
  $error='';


if(something conditional){
    $error = 'some message' or $error .="something";
}

 ?>

另一个原因是你的语法,你用$ error变量联系字符串消息,它在IF语句和字符串连接之前没有全局定义和初始化。这就是为什么它显示未定义的变量。这将是安全的调用并在它的使用范围之前初始化变量。

答案 3 :(得分:0)

第45行使用了两个变量。

  $errors=" ";
  $invalidEmail="any error message";

在if条件之前使用代码。

答案 4 :(得分:0)

我将添加一个替代品,仅仅是因为它并不一定需要先设置$error变量。此选项用于将错误收集到数组中:

if(!filter_var($email,FILTER_VALIDATE_EMAIL)){
    $errors[]  =  $invalidEmail;
}

要输出所有错误,请使用implode()

if(!empty($errors))
    echo implode('<br />',$errors);

答案 5 :(得分:0)

我删除了。运营商,这有帮助!

但我在表单上收到错误消息。

我的完整脚本如下所示:

 <?php
        $name = (!isset($_POST["name"]));
        $email = (!isset($_POST["email"]));
        $message = (!isset($_POST["message"]));
        $missingname = '<p><strong>Venligst indtast dit navn:</strong></p>';
        $missingemail = '<p><strong>Venligst indtast din email:</strong></p>';
        $invalidEmail = '<p><strong></strong>Venligst indtast en valid email adresse:</p>';
        $missingmessage = '<p><strong>Venligst indtast en besked:</strong></p>';

    if(!isset($_POST['submit'])) {

        if(!$name) {
            $errors = $missingname;
    }else{
        $name = filter_var($name, FILTER_SANITIZE_STRING);


    if(!$email){

        $errors =$missingemail;
    }else{
        $email = filter_var($email, FILTER_SANITIZE_EMAIL);

    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        $errors =$invalidEmail;
    }

    }
    if(!$message){
        $errors =$missingmessage;
        }else {
            $message = filter_var($message, FILTER_SANITIZE_STRING);
        }
     if($errors) {
         $resultMessage ='<div class="alert alert-danger">' . $errors . '</div>';
          }else {
              $to = "xxxxx@mail.com";
              $subject = "Kontakt";
              $message  = "<p>Navn: $name.</p>
                            <p>Email: $email.</p>
                            <p>Besked:</p>
                            <p><strong>$message</strong></p>";
              $headers ="Content-type: text/html";
              if(mail($to, $subject, $message, $headers)){

                  $resultMessage ='<div class="alert alert-success"> Tak for din mail, vi vender tilbage snarest med et svar.  </div>';
          }else{

              $resultMessage ='<div class="alert alert-warning">Din mail blev ikke sendt! Prøv igen senere..</div>';

          }

          }
     echo $resultMessage;
    }

    }

&GT;

答案 6 :(得分:0)

实际上,你的变量$ email没有设置为什么它给出错误Undefined变量。您可以做的是,您需要添加检查以确保定义您的变量。

他们可以通过多种方式进行检查,如下所示,

  1. 使用isset函数

    如果(isset($电子邮件)){ // ...你的代码 }

  2. 只需在if条件中添加变量即可。

    如果($电子邮件){ // ...你的代码 }

  3. 如果条件允许,您可以简单地将变量设置为某个值。

    $ email =&#39;&#39;;