【问题标题】:PHP- Redirect to another pagePHP-重定向到另一个页面
【发布时间】:2018-07-05 09:59:17
【问题描述】:

我的问题很简单。但我正在为此苦苦挣扎。问题是一旦我点击提交按钮,该页面应该重定向到其他页面。请告诉我我做错了什么?因为我什么都试过了。

代码:

更新-docket.php

<?php
//error_reporting(0);
$link = mysqli_connect("localhost", "home_db", "root", "");

// Check connection 
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Escape user inputs for security
$sql = 'SELECT * FROM prod_details';
$result = mysqli_query($link,$sql);

while ($row = mysqli_fetch_array($result))
{ 
     $Quantity1 = $_POST['p_'.$row['id']. ''];          
     $id = $row['id'];
     $store = $row['rstore'];
     // echo $store;

     foreach ($_POST as $key => $value) 
     {}

     if(!empty($Quantity1)) {
         $query="update prod_details SET rdocket='$Quantity1' WHERE id='$id'";
         if(mysqli_query($link, $query)) {
            header('Location: /docket-details.php');
            exit();
         } else {
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
         }
      }
  }

docket-details.php

<form class="form-horizontal" action="update-docket.php" method="post" name="myform" autocomplete="off">
  <button  type='submit'  name='submit' class='btn c-theme-btn c-btn-square c-btn-uppercase c-btn-bold'>Submit</button>

请帮忙!!!

【问题讨论】:

  • $result?你在哪里定义$result
  • 您似乎在表单上使用了错误的操作...对吗?
  • 代码中有一些额外的{
  • 您有“update-details.php”,但您在表单操作中引用了“update-docket.php”
  • 也许你已经发送了标题。检查:stackoverflow.com/a/21229246/10026429 了解更多信息。

标签: php redirect


【解决方案1】:

你的Location 行不正确,使用重定向:

header('Location: /url');

https://secure.php.net/manual/en/function.header.php

更新

我认为您的 if 语句没有得到满足。尝试再次启用错误记录并在每个条件部分中启用 var_dumping 以查看真正的问题所在。现在您已经更新了代码以使用header,理论上它应该可以工作。但我的猜测是 $_POST 没有返回你想要/期望的。

【讨论】:

  • 试过了。更新了代码。没有变化。还是一样。
【解决方案2】:

已编辑!

试试这个:

header('Location: /docket-details.php');
// i'm sorry, forgot to add exit
exit();

当然,如果您参考,您可以填写完整的网址。

重要提示:在此行之前不应进行任何输出,因为它会生成标题。在发送响应头之前没有一个echo

【讨论】:

  • 不应在此行之前进行输出,因为它会生成标题。在发送响应头之前没有一个回显!
  • 我已经更新了我的代码。仍然面临同样的问题。它只是重定向到 update-details.php
【解决方案3】:

应该是这样的:

if(!empty($Quantity1)) {
    $query="update prod_details SET rdocket='$Quantity1' WHERE id='$id'";
    $res = mysqli_query($link, $query);

    if($res) {
        header('Location: /docket-details.php', true, '200');
    } else {
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}

【讨论】:

  • 此页面不工作目前无法处理此请求。 HTTP 错误 500
  • 嗯,很难从你的描述中看出哪里出了问题。尝试将问题分解为小块,并逐一解决。我建议您在 if - if(!empty($Quantity1)) = if (true) 中将条件设置为 true,然后在 if 正文中只保留重定向行,看看它是否有效。如果是,则尝试执行查询,如果它不起作用,则可能是另一个问题。
  • @RB_ 错误很简单。这是网址的/ 之前的'
【解决方案4】:

您有“update-details.php”,但您在表单操作中引用了“update-docket.php”。所以表单动作会重定向到不同的文件。

正如@thisGuyHasTwoThumbs 所说,您的位置行不正确。

header('Location: /url');
exit();

您还想exit(),因为它会阻止该行之后的任何代码执行。

https://secure.php.net/manual/en/function.header.php https://secure.php.net/manual/en/function.exit.php

详情如下:

"update prod_details SET rdocket='$Quantity1' WHERE id='$id'"

看起来更干净,更容易阅读:

"UPDATE `prod_details` SET `rdocket` = '$Quantity1' WHERE `id` ='$id'"

将 MySQL 单词保留为大写。用反引号包裹列和表名将阻止“MySQL serverd word error

制作:

<form class="form-horizontal" action="update-docket.php" method="post" name="myform" autocomplete="off">

<?php
if (!empty( $Quantity1) )
{
    $query = "UPDATE `prod_details` SET `rdocket` = '$Quantity1' WHERE `id` ='$id'";
    if( mysqli_query( $link, $query ) )
    {
        header( 'Location: /docket-details.php' );
        exit();
    } else {
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}

变量$Quantity1 对SQL 注入开放。要解决此问题,您可以 escape 变量(如果它是字符串),但您应该使用 prepared statement

【讨论】:

    【解决方案5】:

    最好不要在 header() 之前输出任何内容 .. 例如;不要回显“错误:无法执行 $sql。”。 mysqli_error($link);

    【讨论】:

      【解决方案6】:

      您的文件似乎名为“Update-docket.php”,大写字母 U。但在您调用 action="update-docket.php" 的表单操作中。

      【讨论】:

        【解决方案7】:

        标题(位置:带有扩展名的页面名称)

        如果上面的代码运行不正常并且报错“header doesn't change”,则将下面一行分别放在页面顶部和页面底部

        ob_start() - 在页面顶部 ob_end_flush() - 页面底部

        【讨论】:

          猜你喜欢
          • 2017-04-03
          • 1970-01-01
          • 1970-01-01
          • 2021-10-01
          • 1970-01-01
          • 2022-06-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多