我在PHP / HTML中遇到了一些问题。我一般都是VBA的家伙,所以这对我来说有点奇怪。我正在尝试创建一个用户可以填写的表单,并使用提交按钮:
到目前为止,这是我设法组建的代码。如果那里的代码完全没用,我也不知道。
<!DOCTYPE html>
<html>
<head>
<style>
.error {
color: #FF0000;
}
</style>
</head>
<body>
<?php function test_input($data) { $data=t rim($data); $data=s tripslashes($data); $data=h tmlspecialchars($data); return $data; } ?>
<align left></align>
Name:</br>
<input type="text" select name="Name" placeholder="Name">
<br>
<br>
<input type="checkbox" name="Alergy" value="Alergy">Alergy
<input type="checkbox" name="Gluten" value="Gluten">Gluten Free</br>
</br>
<text>City</text>
</br>
<Align Center>
<select name="City">
<option value=""></option>
<option value="Arvada">Arvada</option>
<option value="Boulder">Boulder</option>
<option value="Ft. Collins">Ft. Collins</option>
<option value="Greeley">Greeley</option>
<option value="Littleton">Littleton</option>
<option value="Longmont">Longmont</option>
<option value="Loveland">Loveland</option>
<option value="Thornton">Thornton</option>
<option value="Out of State">Out of State</option>
</select>
</br>
<Text>Prefered Meal</Text>
</br>
<Align Center>
<select name="Meal">
<option value=""></option>
<option value="Chicken">Chicken</option>
<option value="Beef">Beef</option>
<option value="Fish">Fish</option>
<option value="vegetarian">vegetarian</option>
</select>
<Align Center>
</br>
<text></text>
</br>
<input type="checkbox" name="RSVP" value="RSVP">RSVP
<br>
</form>
<input type="submit" value="Submit">
</br>
</form>
</Align>
</body>
</html>
答案 0 :(得分:1)
无状态网络应用程序与桌面应用程序不同。来自VBA背景意味着您需要以不同的方式考虑这一点。
提交按钮本身无法在服务器上执行任何操作。这就是为什么......
浏览器加载并向HTTP服务器提交数据,而不知道之前发生的事情 - 它是无状态的。 Web开发人员使用各种类型的cookie来控制有状态机制,以便服务器端能够保留有关HTTP请求的知识。
即使PHP允许您在源文件中混合HTML代码旁边的服务器端PHP代码,但这并不意味着在按下提交按钮时会执行PHP代码。
提交按钮会导致浏览器向HTTP服务器发送一个全新的请求,其中包含HTML文档指定的数据 - 如果是表单,则会发送表单数据。发送表单数据的方法由表单标记上的method
属性确定。 method
属性会更改PHP中可用数据的位置($ _GET或$ _POST),还可以更改浏览器中的URL(如果method
为GET
)
当在服务器上处理这个新请求时,重新加载并重新执行整个PHP文件,而不知道前一页加载。某人完全有可能编写一个直接向您的程序发送数据的机器人。
如果您需要跟踪已登录的用户(超出此问题的范围),您将使用会话或Cookie。即便如此,如果在提交表单之前访问过该页面,PHP文件也不会知道。
答案 1 :(得分:0)
这是一个相当广泛的问题,但结构可能是这样的:
<?php
// Init database here
if ($_POST)
{
// Save to database here
// Redirect to self if successful, and then exit
// Put validation/errors in an array if not
// (i.e. let the page render in a POST op)
}
?>
<!DOCTYPE html>
<html>
<head>
<style>
.error {
color: #FF0000;
}
</style>
</head>
<!-- remainder of your HTML here -->
我注意到您错过了开始<form>
标记。你会想要这样的东西:
<form method="post">
如果您要发布到同一页面,则不需要action
。