我是PHP的新手
我用PHP和HTML(form.php)编写了这个简单的在线表单:
<?php
$errors = array();
$missing = array();
if (isset($_POST['send'])) {
$to = 'david@example.com';
$subject = 'Feedback from contact form';
$expected = array('name', 'email', 'comments');
$required = array('name', 'comments');
require './includes/mail_process.php';
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Contact Us</title>
<link href="../styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>Contact Us</h1>
<?php if ($errors || $missing) { ?>
<p class="warning">Please fix the item(s) indicated.</p>
<?php }?>
<form name="contact" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<p>
<label for="name">Name:
<?php if ($missing && in_array('name', $missing)) { ?>
<span class="warning">Please enter your name</span>
<?php } ?>
</label>
<input type="text" name="name" id="name">
</p>
<p>
<label for="email">Email:
<?php if ($missing && in_array('email', $missing)) { ?>
<span class="warning">Please enter your email address</span>
<?php } ?>
</label>
<input type="text" name="email" id="email">
</p>
<p>
<label for="comments">Comments:
<?php if ($missing && in_array('comments', $missing)) { ?>
<span class="warning">You forgot to add your comments</span>
<?php } ?>
</label>
<textarea name="comments" id="comments"></textarea>
</p>
<p>
<input type="submit" name="send" id="send" value="Send Comments">
</p>
</form>
</body>
</html>
如您所见,有两个主要的PHP部分:
的上层较低的一个,包括“body”部分中的所有if语句。
当我运行form.php时,页面显示我看到3个字段和一个“发送”按钮。
这是否意味着,此时,处理了PHP IF语句(在“body”部分中),并且每个语句都返回false,这就是为什么我没有看到屏幕上显示的错误消息?
OR
if语句(在“body”部分中)仅在单击“发送”按钮后处理?
初始化“错误”和“缺失”数组的相同问题 - &gt;一旦我运行form.php文件并看到3个字段和一个“发送”按钮,那么这些是初始化的,或者只有在我点击“发送”按钮后,上面的PHP部分才会第一次运行?
总结一下,当我运行form.php时,页面是“从上到下,逐行”处理还是有不同的控制流(因为在我点击“发送按钮”后,上面的PHP部分也被调用,所以请澄清)。
重新编辑:首次加载页面时,正在处理多个PHP if语句。正确?有没有办法让它更优化?假设有100万用户第一次访问该页面(在填写表单之前),那么这些if语句将被处理100万次没有任何时间。 从性能角度来看,这不是一件坏事吗?
提前致谢。
答案 0 :(得分:1)
除了循环和调用函数之外,PHP文件将从上到下运行。
您的表单指向生成它的同一PHP文件。单击“发送”按钮时,将再次运行完整的PHP文件。
答案 1 :(得分:0)
要防止PHP在表单为空时运行,请为空表单使用不同的HTML页面。让我们说input.html
,这可以是纯HTML,没有PHP。
<html>
<body>
<form method="post" action="process-the-input.php">
<input id="user">
<button type="submit">Send</button>
</form>
</body>
并且PHP文件将被称为process-the-input.php
,并且将像您的问题中的源一样运行。