显示从 HTML 到 php 未发生的错误消息

Posted

技术标签:

【中文标题】显示从 HTML 到 php 未发生的错误消息【英文标题】:Display of error messages not happening from HTML to php 【发布时间】:2014-04-05 14:26:39 【问题描述】:

我正在使用 phphtml 对表单进行验证。我的 HTML 代码如下所示:

<head>
   <style>
      .error color: #FF0000;
   </style>
</head>
<body style="background-color:#F2F2F2">
   <form name="htmlform" method="post" action="test1.php" >
      <table  table align="center" frame="box"  style="margin-    top:25px;margin-bottom:25px; background-color:#ffffff;border-radius:5px;">
         </tr>
         <tr>
            <th colspan="2">
               <h3  align="center">Write to Us</h3>
               <hr>
            </th>
         </tr>
         <tr>
            <td valign="top">
               <label for="name">Name </label>
            </td>
            <td valign="top">
               <input  type="text" name="name" maxlength="50" size="30">
               <span class="error">* <?php echo $nameErr;?></span>
            </td>
         </tr>
         <tr>
            <td valign="top">
               <label for="email">Email Address </label>
            </td>
            <td valign="top">
               <input  type="text" name="email" maxlength="80" size="30">
               <span class="error">* <?php echo $emailErr;?></span>
            </td>
         </tr>
         <tr>
            <td valign="top">
               <label for="telephone">Telephone Number</label>
            </td>
            <td valign="top">
               <input  type="text" name="telephone1" maxlength="30" size="30">
            </td>
         </tr>
         <tr>
            <td valign="top">
               <label for="message">Message </label>
            </td>
            <td valign="top">
               <textarea  name="message1" maxlength="1000" cols="25" rows="6"></textarea>
               <span class="error">* <?php echo $messageErr;?></span>
            </td>
         </tr>
         <tr>
            <td colspan="2" style="text-align:center;">
               <input type="submit" value="Submit" >
            </td>
         </tr>
      </table>
   </form>
</body>

我的 PHP 代码如下所示:

if ($_SERVER["REQUEST_METHOD"] == "POST")

 if (empty($_POST["name"]))
 $nameErr = "Name is required";
 else
 $name = test_input($_POST["name"]);

 if (empty($_POST["email"]))
 $emailErr = "Email is required";
 else
 $email = test_input($_POST["email"]);

 if (empty($_POST["telephone1"]))
 $telephone1 = "";
 else
 $telephone1 = test_input($_POST["telephone1"]);

 if (empty($_POST["message1"]))
 $messageErr = "Message is required";
 else
 $message1 = test_input($_POST["message1"]);


function test_input($data)

$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;


echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $telephone1;
echo "<br>";
echo $message1;
?>

当我尝试在名称、电子邮件、消息字段为空时显示这些错误消息时,它只会进入 test1.php 页面并显示空白数据,尽管注册表单中的字段为空。我正在使用 XAMP 服务器来执行我的文件。

提前致谢。

【问题讨论】:

两个代码都在同一个php中吗?即 test1.php? 尝试在 html 代码上方的同一文件中使用您的 php 代码,并将表单操作留空 php 在不同的文件中,html 在另一个文件中。如果我必须在 html 的同一个文件中使用 php 如何使用 如果文件名是html,将其重命名为php,然后将代码粘贴到页面顶部。就是这样。 【参考方案1】:

通过将操作设置为“”来更改表单标签以发布到同一页面

<form name="htmlform" method="post" action="" >

这将使您的表单发布到同一页面。将所有 php 代码放在具有 html 的当前页面的顶部。通过这样做,您的所有 php 变量都将在 html 中可用。

【讨论】:

在您的帮助下,我能够保持在同一页面上。但我必须对我输入或未输入的输入字段执行验证。那么该怎么做呢。 当我将文件扩展名从 html 更改为 php 时,验证工作正常。但它会清除以前的数据并在那些带有错误消息的字段中显示为空【参考方案2】:

试试这个代码..它的工作原理。但请确保您有 2 个扩展名为 .php 的页面

在您的 php 文件中添加以下代码。

 <?php
 if (empty($_POST["name"]))
 $nameErr = "Name is required";
 else
 $name =test_input($_POST["name"]);

 if (empty($_POST["email"]))
 $emailErr = "Email is required";
 else
 $email = test_input($_POST["email"]);

 if (empty($_POST["telephone1"]))
 $telephone1 = "";
 else
 $telephone1 =test_input($_POST["telephone1"]);

 if (empty($_POST["message1"]))
 $messageErr = "Message is required";
 else
 $message1 = test_input($_POST["message1"]);

function test_input($data)

$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;

if(isset($name) && isset($email) && isset($message1))

echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $telephone1;
echo "<br>";
echo $message1;


$from = $email;
$to = 'YOUR EMAIL ADDRESS';
$subject = 'Call Back Enquiry';
$fullname=$name;
$mobile=$telephone1;
$emailid=$email;
$message=$message1;
$body="Full Name:".$fullname."\n\n"."Mobile:".$mobile."\n\n"."Email:".$emailid."\n\n"."Message:".$message1;

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => 'YOUR MAIL ID',
        'password' => 'YOUR PASSWORD'
    ));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) 
    echo('<p>' . $mail->getMessage() . '</p>');
 else 
   // echo('<p>Message successfully sent!</p>');

?>

在另一个包含 html 代码的 php 文件中,在其中写入以下代码。

<?php include('test.php')?>
<head>
   <style>
      .error color: #FF0000;
   </style>
</head>
<body style="background-color:#F2F2F2">
   <form name="htmlform" method="post">
      <table  table align="center" frame="box"  style="margin-    top:25px;margin-bottom:25px; background-color:#ffffff;border-radius:5px;">
         </tr>
         <tr>
            <th colspan="2">
               <h3  align="center">Write to Us</h3>
               <hr>
            </th>
         </tr>
         <tr>
            <td valign="top">
               <label for="name">Name </label>
            </td>
            <td valign="top">
               <input  type="text" name="name" maxlength="50" size="30" value="<?php if(isset($name))echo $name;?>">
               <span class="error">* <?php if(isset($nameErr))echo $nameErr;?></span>
            </td>
         </tr>
         <tr>
            <td valign="top">
               <label for="email">Email Address </label>
            </td>
            <td valign="top">
               <input  type="text" name="email" maxlength="80" size="30" value="<?php if(isset($email))echo $email;?>">
               <span class="error">* <?php if(isset($emailErr))echo $emailErr;?></span>
            </td>
         </tr>
         <tr>
            <td valign="top">
               <label for="telephone">Telephone Number</label>
            </td>
            <td valign="top">
               <input  type="text" name="telephone1" maxlength="30" size="30" value="<?php if(isset($telephone1))echo $telephone1;?>">
            </td>
         </tr>
         <tr>
            <td valign="top">
               <label for="message">Message </label>
            </td>
            <td valign="top">
               <textarea  name="message1" maxlength="1000" cols="25" rows="6"><?php if(isset($message1))echo $message1;?></textarea>
               <span class="error">* <?php if(isset($messageErr))echo $messageErr;?></span>
            </td>
         </tr>
         <tr>
            <td colspan="2" style="text-align:center;">
               <input type="submit" value="Submit" id="submit" name="submit" >
            </td>
         </tr>
      </table>
   </form>
</body>

【讨论】:

它工作正常 King 但我希望 PHP 在另一个文件中并希望执行验证,然后它应该作为邮件发送给该收件人 嗨,如果我必须将 PHP 文件单独调用到 html 文件,请任何人帮助我,因为在 word press 中执行时它不能识别给出的 php 代码 @Pallavipradeep 我已经编辑了我的代码,请检查并告诉我它是否符合您的要求? 嗨国王感谢您的解决方案。但是在这里你给的Registration.php我可以把它做成html并调用那个php文件。 我尝试保存到 Registration.html 而不是 Registration.php 然后在文本框中它显示了您编写的所有 php 代码,如下所示 "”,当点击提交时,它没有执行任何操作。如果我制作 Registration.php 并执行它,它的效果会如预期的那样漂亮。我需要这个调用 php 代码并在验证为真后发送邮件的 html 页面。

以上是关于显示从 HTML 到 php 未发生的错误消息的主要内容,如果未能解决你的问题,请参考以下文章

是发送还是接收错误?未发送完整消息或未正确解码消息

PHP - 从网页发送消息到手机[关闭]

ZF2 2.5 并不总是显示完整的错误消息

在输入字段下显示表单错误消息 Phalcon php

XAMPP PHP 错误通知:从 HTML 到 PHP 的“未定义变量”

plUpload - 服务器端错误未显示