【问题标题】:php form transfer to second page using header location method and backphp表单使用标题位置方法传输到第二页并返回
【发布时间】:2023-04-02 15:23:02
【问题描述】:

好吧伙计们..

我有两页

page1 包含一个表单

<form id="Form1" name="Form1" method="post" action="form1.php">
    //form1.php is the page1 where this form is.. i have redirected to the
    same page because this page contains the php validation code <input
        type="text" class="input" name="txtName"
        value="<?php if(isset($name)){echo $name;} ?>"
        <?php if(isset($flag) && $flag == 1){echo "div style = 'border:2px solid red;'". "/div";}?>>
    <input type="submit" name="submit" value="Submit" class="button3">
</form>

我使用 php header-location 方法将数据发送到 page2

php page1 代码

if(NO ERRORS)) // in the form there is actual code
{
    // insert into database
    $result = mysql_query ( $insert );
    if ($result) {
        echo ("<br>Input data is succeed");
        $lastInsertedId = mysql_insert_id ();
        header ( 'Location:form1_conf.php?id=' . $lastInsertedId ); // form1_conf.php is the name of 2nd page
    } else {
        $message = "The data cannot be inserted.";
        $message .= "<br />" . mysql_error ();
    }
}

现在是第2页

page2 名称是 form1_conf.php & 用于向用户显示表单数据,以便他可以检查表单是否有错误,如果有任何错误,他可以单击编辑并返回主表单 (page1) 并重新- 输入数据并重新提交表单。

这是page2代码

这里我使用php从page1接收数据:

if (isset ( $_GET ['id'] )) {
    $lastInsertedId = $_GET ['id'];
}
$query = "SELECT * FROM db_purchase_form WHERE id=$lastInsertedId";
$result = mysql_query ( $query );
while ( $row = mysql_fetch_row ( $result ) ) {
    $name = $row [1];
}

这里是显示这个的html代码

<div id="DisplayForm">
    <div class="dispText">
    <?php echo $name; ?>
    </div>
</div>

<a
    href="form1.php?id=<?php echo $lastInsertedId; ?>&name=<?php echo $name; ?>"
    class="button3">Edit</a>

现在,当用户在 page2 上单击此 Edit 按钮时,他将被带到 page1。

现在我有两个问题

  1. 当用户点击编辑并返回page1时,名称字段是空的,而我已经使用php代码填充了该名称字段中的数据。

从上面复制,form1 page1代码。

<input type="text" class="input" name="txtName" value="<?php if(isset($name)){echo $name;} ?>"<?php if(isset($flag) && $flag == 1){echo "div style = 'border:2px solid red;'". "/div";}?>> 

我怎样才能做到这一点?当用户点击编辑并返回第1页时,他可以看到他之前在表单1中填写的值保留在表单字段中。

  1. 当用户转到page2时,提交表单后,page2的url是这样的..

    http://mydomainnane.com/site1/form1_conf.php?id=36

现在的问题是,当我将值从 36 更改为任何数字(例如 34 或 24)时,这些值将从位于该位置的 db 中提取并显示。如何仅通过更改 url 中的值来防止这种未经授权的 DB 值视图?

非常感谢大家的帮助。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    在form1.php的顶部定义:

    if(isset($GET['name']) && $GET['name'] != ""){
        $name = $GET['name'];    
    }
    

    【讨论】:

    • 在所有验证和所有包含之前?在最顶端?
    • 在定义 text field 之前编写此行并不重要。只是不要在页面的其他任何地方使用相同的 $name 变量。
    • 如果我不在页面的任何地方使用该 $name 变量,我的表单将如何知道该变量?你看我已经在这里的表单字段中设置了这个.. > 我应该改变这个吗?或者你还有什么建议?
    • 是的,我的朋友就在这行之前&lt;input type="text" class="input" name="txtName" value="&lt;?php if(isset($name)){echo $name;} ?&gt;"&lt;?php if(isset($flag) &amp;&amp; $flag == 1){echo "div style = 'border:2px solid red;'". "/div";}?&gt;&gt;使用我上面写的代码。
    • 你上面写的代码应该包含在 代码中不是吗?像这样..
    猜你喜欢
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2020-01-04
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    相关资源
    最近更新 更多