如何在PHP中更轻松地读取帖子值

时间:2018-09-24 13:23:05

标签: php

我正在将HTML表单中的值发布到php文件中。在我当前的代码中,我正在提交多个post值,并且必须检查每个post变量(如果已设置)的值。

我想知道是否有更有效的方法可以做到这一点。一个要求是将这些值按顺序插入。

HTML表单:

if (isset($_SERVER['HTTP_ORIGIN'])) {
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400'); // cache for 1 day

}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) {
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
    }
    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) {
        header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
    }
    exit(0);
}

SQL表:

<form>
<input type=text name=exercise1> <input type=text name=sets1>
<input type=text name=exercise2> <input type=text name=sets2>
<input type=text name=exercise3> <input type=text name=sets3>
<input type=text name=exercise4> <input type=text name=sets4>
...
</form>

我尝试了下一个代码:

id autoincrement
exercise varchar(200)
sets varchar(10)

1 个答案:

答案 0 :(得分:2)

默认的<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Canvas Grid.Column="1" Background="Green" Width="{Binding Path=ActualWidth, ElementName=text}"> <TextBlock Text="asdfsdf" FontSize="23" x:Name="text"/> </Canvas> </Grid> 方法是form,因此尝试读取GET时可能什么也没得到。要修复它,您需要更改此内容:

$_POST

对此:

<form>

为了简化操作,您应该重新定义表单,使其为数组:

<form method="post">

这将保持代码中的顺序。某些浏览器没有发送空值,因此最好对它们进行手动排序(这样,您将知道是否没有答案或其他答案):

<input type="text" name="exercise[]"> <input type="text" name="sets[]">
<input type="text" name="exercise[]"> <input type="text" name="sets[]">
<input type="text" name="exercise[]"> <input type="text" name="sets[]">
<input type="text" name="exercise[]"> <input type="text" name="sets[]">

现在您可以像这样在PHP中进行迭代:

<input type="text" name="exercise[1]"> <input type="text" name="sets[1]">
<input type="text" name="exercise[2]"> <input type="text" name="sets[2]">
<input type="text" name="exercise[3]"> <input type="text" name="sets[3]">
<input type="text" name="exercise[4]"> <input type="text" name="sets[4]">

请注意,您的SQL查询可能容易受到注入攻击!

您应该使用类似<?php foreach($_POST["exercise"] as $id => $exercise){ echo "EXERCISE $id: " . $exercise . ", SETS $id: " . $_POST["sets"][$id] . "<br />"; } ?> (或类似内容;取决于您使用的是哪个lib来连接数据库),而不是原始查询:

mysqli_real_escape_string()