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

时间:2015-05-01 15:12:41

标签: php html excel

我在PHP / HTML中遇到了一些问题。我一般都是VBA的家伙,所以这对我来说有点奇怪。我正在尝试创建一个用户可以填写的表单,并使用提交按钮:

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

到目前为止,这是我设法组建的代码。如果那里的代码完全没用,我也不知道。

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

2 个答案:

答案 0 :(得分:1)

无状态网络应用程序与桌面应用程序不同。来自VBA背景意味着您需要以不同的方式考虑这一点。

提交按钮本身无法在服务器上执行任何操作。这就是为什么......

浏览器

浏览器加载并向HTTP服务器提交数据,而不知道之前发生的事情 - 它是无状态的。 Web开发人员使用各种类型的cookie来控制有状态机制,以便服务器端能够保留有关HTTP请求的知识。

PHP

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

提交按钮会导致浏览器向HTTP服务器发送一个全新的请求,其中包含HTML文档指定的数据 - 如果是表单,则会发送表单数据。发送表单数据的方法由表单标记上的method属性确定。 method属性会更改PHP中可用数据的位置($ _GET或$ _POST),还可以更改浏览器中的URL(如果methodGET

当在服务器上处理这个新请求时,重新加载并重新执行整个PHP文件,而不知道前一页加载。某人完全有可能编写一个直接向您的程序发送数据的机器人。

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

结论

  • 验证服务器上的数据非常重要,因为服务器上的PHP不会执行任何基于浏览器的验证,即使它位于同一个文件中。
  • 使用安全方法prevent CSRF attacks
  • 非常重要
  • 为方便起见,HTML和PHP代码允许在同一个文件中,但这并不意味着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