2015-02-07 2 views
0

Я пытаюсь использовать страницу update_form.php, чтобы обрабатывать 3 отдельные, но идентичные области сайта. Например,URL-адрес перенаправления PHP с использованием заголовка

У меня 3 страницы данных: data1.php, data2.php, data3.php. Вся ссылка на update_form.php. Как только update_form.php отправляется и новые данные хранятся в базе данных, какой код я использовал бы для перенаправления на соответствующую страницу данных.

Если я обновляю data1.php, после отправки формы для обновления, я хочу вернуться на эту страницу. Нужно сделать это, используя PHP и MYSQL. Любая помощь приветствуется.

Вот код, с которым я работаю от Dreamweaver. Можете ли вы помочь мне редактировать, чтобы сделать то, о чем я говорил выше. В настоящее время я не могу перенаправить только data1.php независимо от того, в какой форме я вхожу от:

$updateGoTo = "data1.php"; 
    if (isset($_SERVER['QUERY_STRING'])) { 
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?"; 
    $updateGoTo .= $_SERVER['QUERY_STRING']; 
    } 
    header(sprintf("Location: %s", $updateGoTo)); 
    } 

ответ

0

Один из способов сделать это было бы с помощью Ajax. Вы просто отправляете свои данные на update_form.php и соответствующим образом обновляете страницу. Вам не придется иметь дело с переадресацией.

Например, с JQuery было бы похоже на это:

$.post("update_form.php", { field1: "value1", field2: "value2" }) 
    .done(function(data) { 
    // update your page here 
    }); 

Если вы не хотите идти по этому пути, что вы можете сделать, это передать URL страницы вместе с другой формой Титулы. Вы можете добавить его как скрытый ввод в свою форму.

<form action="update_form.php" method="POST"> 
    <input type="hidden" value="[URL]" name="redirect_url"> 
    <input type="text" value="OTHER VALUE"> 
    ... 
</form> 

Тогда на вашем сервере, вы можете получить URL в $ _POST [ 'REDIRECT_URL'] и сделать:

header('Location: ' . $_POST['redirect_url']);

Просто убедитесь, дезинфицировать REDIRECT_URL или это может быть безопасность дырка :)

+0

Благодарим за информацию. Каждая страница данных уже передает значение скрытого идентификатора для обновления этой конкретной записи базы данных. Будет ли это иметь значение, если я передам еще одну скрытую ценность? Связано ли это с ссылкой в ​​строке URL в дополнение к уже пройденному идентификатору? – CAM308

+0

Единственное различие будет вашим дополнительным значением, доступным в параметре $ _GET или $ _POST. Если вы уже передаете скрытый идентификатор, вы должны уже получить его на сервере с помощью $ _POST ['id'] или чего-то подобного. BTW обязательно добавьте метод = "POST" в вашу форму. Таким образом, параметры будут отправляться в тело запроса, а не через URL. Это рекомендуемый способ сделать это. – Adrien

-1

С помощью PHP/MySQL просто просто использовать header(); следующим

пример взять data1.php имеет под кодом

<?php session_start(); // session value to check the return msg from update_form.php 
    if(!empty($_SESSION['msg']){ 
     echo '<div style="">'.$_SESSION['msg'].'</div>;  
     unset($_SESSION['msg']); // destroy msg after being visible to user 
    } ?> 
<html> 
<form action="update_form.php"> 
    <input type="text" name="FullName" pattern="" /> 
    <input type="submit" value="update" /> 
</html> 

then in update_form.php у вас будет следующий код.

<?php session_start(); 
    //Run your DB connection, eg i use mysqli 

if(!empty($_POST)){ 

    $name = mysqli_real_escape_string($link,$_POST['FullName']; 
    //run your update query successful 
    $msg = "Data updated successfully.."; 
     } 
else{ 
    $msg = "Updation of data encounter error plz try again.."; 
     } 
$_SESSION['msg'] = $msg; // variable to return msg to user in other page 
header("location: data1.php"); //this functin require page reload, if you know jquery is the best opt for this 
+0

Можете ли вы объяснить свой голос? –