PHP - Перенаправление на другую страницу - PullRequest
0 голосов
/ 05 июля 2018

Мой вопрос очень прост. но я борюсь с этим слишком сильно. Проблема в том, что когда я нажимаю кнопку «Отправить», эта страница перенаправляется на другую страницу. Пожалуйста, просто скажите мне, что я сделал не так? Потому что я все перепробовал.

Код:

Update-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);
         }
      }
  }

в списке дел-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>

Пожалуйста, помогите !!!

Ответы [ 6 ]

0 голосов
/ 17 июля 2019

Также лучше ничего не выводить до заголовка () .. например; not echo "ОШИБКА: не удалось выполнить $ sql." mysqli_error ($ ссылка);

0 голосов
/ 05 июля 2018

заголовок (местоположение: имя страницы с расширением)

Если приведенный выше код работает неправильно и выдает ошибку, что «заголовок не изменяется», поместите строку ниже в верхней части страницы и в нижней части страницы соответственно

ob_start () - вверху страницы ob_end_flush () - нижняя часть страницы

0 голосов
/ 05 июля 2018

у вас есть «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

Jus для деталей:

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

Будет выглядеть намного чище и его легче читать, как:

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

Сохраняет слова MySQL заглавными. Перенос имен столбцов и таблиц в обратные метки предотвратит ошибку " MySQL serverd word "

Как это сделать:

<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-инъекции. Чтобы решить эту проблему, вы можете экранировать переменную, если она является строкой, но вы должны использовать подготовленный оператор .

0 голосов
/ 05 июля 2018

Это должно быть примерно так:

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);
    }
}
0 голосов
/ 05 июля 2018

Отредактировано!

Попробуйте это:

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

конечно, вы можете заполнить полный URL, если вы ссылаетесь.

Внимание! Перед этой строкой не должно быть никаких выходных данных, поскольку она будет генерировать заголовок. Ни одного echo перед отправкой заголовка ответа!

0 голосов
/ 05 июля 2018

Вы Location строка неверна, перенаправьте с помощью:

header('Location: /url');

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

обновление

Я считаю, что ваше заявление не выполняется. Попробуйте снова включить ведение журнала ошибок и var_dumping внутри каждого условного раздела, чтобы увидеть, в чем заключается настоящая проблема. Теперь вы обновили свой код, чтобы использовать header, что теоретически должно работать. Но я думаю, что $ _POST не возвращает то, что вы хотите / ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...