显示从 HTML 到 php 未发生的错误消息
Posted
技术标签:
【中文标题】显示从 HTML 到 php 未发生的错误消息【英文标题】:Display of error messages not happening from HTML to php 【发布时间】:2014-04-05 14:26:39 【问题描述】:我正在使用 php 和 html 对表单进行验证。我的 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 未发生的错误消息的主要内容,如果未能解决你的问题,请参考以下文章