перенаправление страницы после нажатия кнопки и обновления базы данных

#php #mysql #redirect

#php #mysql #перенаправление

Вопрос:

Я пытаюсь перенаправить страницу после нажатия кнопки и после обновления базы данных, но, похоже, это не работает.

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

форма и обновление базы данных:

     <div id = "errormsg">amp;nbsp;</div>
    <?php 

    echo "<table border="0" align="center" cellpadding="2" cellspacing="7" style="font-family:Arial;font-size:11px">";
    echo "<tr>";
        echo "<td>amp;nbsp;</td>";
echo "<td>amp;nbsp;</td>";
echo "</tr>";
echo "<tr>";
        echo "<td><form name="confhome" method="post" action="" onsubmit="return valText()"><textarea name="tag" cols="20" rows="3" id="tag">$row[tagbrief]</textarea></td></tr>";
        echo "<tr><td><input type="submit" value="Edit"></form></td></tr>";
        echo "<tr></tr>";
        echo "</table><br/>";


    $tagbrief = $_POST['tag'];
    mysql_query("UPDATE quackedup SET tagbrief='$tagbrief' WHERE id='1'");
    ?>
  

Проверка JS для ссылки

 <script type="text/javascript">
function valText(){

    var text = document.getElementById('tag');
    var div = document.getElementById('errormsg');

    var lets = /^[0-9a-zA-Zs-'()amp;,:.!?] $/;

    if((text.value == '') || (text.value == ' ')){
        div.innerHTML="<b>Please enter your changes</b>";
        text.focus();
        return false;}
    else if(text.value.match(lets)){
        div.innerHTML="<b>Content updated</b>";
        return true;}
else {
    return false;}

}
  

Любая помощь приветствуется, спасибо.

Комментарии:

1. Следите за атаками SQL-инъекций там — вы используете значение из POST, не очищая его.

2. да, спасибо 🙂 я планирую очистить его после того, как у меня все заработает полностью 🙂

Ответ №1:

Я не уверен, что полностью следую, но я бы перенастроил это, чтобы это было так:

 <?
    if($_POST)
    {
        $tagbrief = mysql_real_escape_string($_POST['tag']);
        mysql_query("UPDATE quackedup SET tagbrief='$tagbrief' WHERE id='1'");

        header("Location: /path/to/script");
        exit;
    }
?>

<div id = "errormsg">amp;nbsp;</div>
<?php 

echo "<table border="0" align="center" cellpadding="2" cellspacing="7" style="font-family:Arial;font-size:11px">";
echo "<tr>";
    echo "<td>amp;nbsp;</td>";
echo "<td>amp;nbsp;</td>";
echo "</tr>";
echo "<tr>";
    echo "<td><form name="confhome" method="post" action="" onsubmit="return valText()"><textarea name="tag" cols="20" rows="3" id="tag">$row[tagbrief]</textarea></td></tr>";
    echo "<tr><td><input type="submit" value="Edit"></form></td></tr>";
    echo "<tr></tr>";
    echo "</table><br/>";
?>
  

Теперь поле обновляется только в том случае, если вы действительно публикуете форму, а содержимое формы экранируется для базы данных (чтобы предотвратить внедрение SQL). Просто измените / path / на/script на путь / URL, по которому вы хотите перейти.

Комментарии:

1. это здорово! работает отлично. единственное, что мне пришлось изменить, это изменить расположение заголовка на мета-обновление, потому что заголовок уже был отправлен. я прочитаю это в надежде извлечь из этого урок для себя. большое спасибо!

Ответ №2:

Я думаю, вам просто нужно написать header("Location:/"); Я надеюсь, что это поможет вам