привожу часть кода
выводится список значение из БД, которые нужно редактировать
$result=mysql_query("SELECT `answer`, `id`
FROM `poll_answers`")
or die ("Could'n create a table: ".mysql_error());
while ($myrow=mysql_fetch_assoc($result))
{
$id=mygetcod((float)$myrow['id']);
echo '<tr> <td> '.htmlspecialchars($myrow['answer']).'</td>
<td> <a href=answer_del.php?id='.$id.'>Delete</a> </td>
<td> <a href=answer_edit.php?id='.$id.'>Edit</a> </td>
</tr>';
}
Вывожу выбранное поле по ссылке и редактирую
=========================================================
if (isset($_GET['id']))
$id=mygetdecod($_GET['id']);
$result=mysql_query("SELECT `answer`, `id`
FROM `poll_answers`
WHERE id=".(float)$id, $db)
or die ("Could'n select a table: ".mysql_error());
if ($result)
$myrow=mysql_fetch_assoc($result);
<form name="CangeAnswer" action="answer_edit_act.php" method="post">
<input value="<?php echo htmlspecialchars($myrow['answer']) ?>" type="text" name="answer" size="30">
<input value="<?php echo htmlspecialchars($myrow['id']) ?>" type="hidden" name="id">
<input type="submit" value="Apply">
</form>
</p>
непосредственное изменение.
========================================================
if (isset($_POST['id']) & isset($_POST['answer']))
$answer=htmlspecialchars($_POST['answer']);
$id=htmlspecialchars($_POST['id']);
$result=mysql_query("UPDATE `poll_answers`
SET `answer`='$answer'
WHERE id=".(int)$id, $db)
or die ("Could'n update a table: ".mysql_error());
Все работает но проблемы возникает когда я набираю в форме редактирования символ " или ' в первом случае вместо " выводится " во втором случае выдает ошибку. Подскажите с этим бороться? Кодировка charset=utf-8;
Спустя 16 минут, 48 секунд (16.01.2012 - 16:41) imbalance_hero написал(а):
`answer`='".mysql_real_escape_string($answer)."'
Спустя 32 секунды (16.01.2012 - 16:41) killer8080 написал(а):
Цитата (Rumata @ 16.01.2012 - 15:24) |
Все работает но проблемы возникает когда я набираю в форме редактирования символ " или ' в первом случае вместо " выводится " во втором случае выдает ошибку. |
Не правильная обработка входных данных. Нужно прогонять не через htmlspecialchars(), а через mysql_real_escape_string()
if (isset($_POST['id']) && isset($_POST['answer']))
$answer=mysql_real_escape_string($_POST['answer']);
$id=$_POST['id']; // числовые значения обрабатывать не нужно, достаточно приведения типов
$result=mysql_query("UPDATE `poll_answers`
SET `answer`='$answer'
WHERE id=".(int)$id, $db)
or die ("Could'n update a table: ".mysql_error());
Ещё одна ошибка, нужно использовать логический оператор && , а не битовый &
PS Rumata знакомый ник :)
Не с crimea-board часом?
Спустя 43 минуты, 19 секунд (16.01.2012 - 17:24) Rumata написал(а):
Спасибо, все работает.
Цитата |
PS Rumata знакомый ник Не с crimea-board часом? |
из миров Стругацких.
Спустя 2 минуты, 41 секунда (16.01.2012 - 17:27) killer8080 написал(а):
Цитата (Rumata @ 16.01.2012 - 16:24) |
из миров Стругацких. |
Пардон, обознался