如何使用PHP存储表单输出到数据库中?

我在PHP / HTML中遇到了一些问题。 我通常是一个VBA家伙,所以这对我来说有点奇怪。 我试图创build一个用户可以填写的表单,并提交button:

  • 将数据发送到SQL表,稍后再调用
  • 将数据发送到位于共享驱动器或文件夹中的文本或Excel文件

到目前为止,这是我设法join的代码。 如果在那里有代码是完全无用的,我也不知道。

<!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> 

无状态Web应用程序与桌面应用程序是不同的动物。 来自VBA背景意味着您需要以不同的方式思考。

提交button本身不能在服务器上执行任何操作。 这是为什么…

浏览器

浏览器加载并提交数据到HTTP服务器,而不知道之前发生了什么 – 它是无状态的。 Web开发人员使用各种types的Cookie来locking状态机制,以便服务器端能够保留关于进入的HTTP请求的知识。

PHP

即使PHP允许您在源代码文件中将HTML代码旁边的服务器端PHP代码混合使用,但并不意味着PHP代码在按下提交button时被执行。

提交button会使浏览器向HTTP服务器发送一个全新的请求,其中包含HTML文档指定的数据 – 在表单的情况下,它将发送表单数据。 发送表单数据的method由表单标签上的method属性确定。 method属性更改PHP($ _GET或$ _POST)中可用数据的位置,也可以更改浏览器中的URL(如果methodGET

当这个新的请求在服务器上被处理时,整个PHP文件被重新加载并重新执行,而不需要任何前一页加载的知识。 有人可能写一个直接发送数据到你的程序的机器人是完全可能的。

如果您需要跟踪login用户(超出此问题的范围),您可以使用会话或cookie。 即使如此,如果在提交表单之前访问过该页面,PHP文件将不知道。

结论

  • validation服务器上的数据很重要,因为服务器上的PHP即使在同一个文件中也不执行任何基于浏览器的validation。
  • 使用安全的方法来防止CSRF攻击非常重要
  • 在同一个文件中允许使用HTML和PHP代码,但这并不意味着PHP代码在浏览器上下文中执行。

这是一个相当广泛的问题,但结构可能是这样的:

 <?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 // (ie 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任何action