#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:/");
Я надеюсь, что это поможет вам