|
|
|
| Здравствуйте хотел спросить у вас совета.
Есть код записи данных в файл:
<?php
$mail = $_POST['mail'];
$name = $_POST['name'];
$msg = $_POST['msg'];
$mail = str_replace('--', ' - - ', $mail);
$mail = str_replace('\"', '"', $mail);
$mail = htmlspecialchars(stripslashes($mail));
$name = str_replace('--', ' - - ', $name);
$name = str_replace('\"', '"', $name);
$name = htmlspecialchars(stripslashes($name));
$msg = str_replace('--', ' - - ', $msg);
$msg = str_replace('\"', '"', $msg);
$msg = nl2br($msg);
$msg = htmlspecialchars(stripslashes($msg));
$msg = preg_replace("/[\r\n]{2,}/i", "", $msg);
$file = fopen("base.txt", "a");
fwrite($file, $mail."--".$name."--".$msg."\r\n");
?>
<meta http-equiv='refresh' content='0; url=http://site.ru'>
|
безопасен ли данный код, и какие еще меры стоит применить к нему?
заранее спасибо! | |
|
|
|
|
|
|
|
для: tima2010
(07.05.2010 в 21:35)
| | / | |
|
|
|
|
|
|
|
для: tima2010
(07.05.2010 в 21:35)
| | А можно Вас попросить прокомментировать этот код?
Очень любопытен ход мысли, приведший к такому алгоритму..
Видимо я что то в этой жизни упустил, раз не могу понять.
Для чего это:
<?
$mail = str_replace('--', ' - - ', $mail);
|
и это...
<?
$mail = str_replace('\"', '"', $mail);
$mail = htmlspecialchars(stripslashes($mail));
|
а дальше опять тоже самое..
<?
$name = str_replace('--', ' - - ', $name);
$name = str_replace('\"', '"', $name);
|
и дальше.... Можно пару комментариев коду? | |
|
|
|
|
|
|
|
для: Николай2357
(08.05.2010 в 06:47)
| | Да конечно
<?php
$mail = $_POST['mail']; // переданные данные загоняем в перменную
$name = $_POST['name'];
$msg = $_POST['msg'];
$mail = str_replace('--', ' - - ', $mail); // на случай если в данных будет двойное -- то заменяем его тере с пробелми так как тере используется как разделитель данных в txt файле
$mail = str_replace('\"', '"', $mail); // такое вот решение с кавычками
$mail = htmlspecialchars(stripslashes($mail));
$name = str_replace('--', ' - - ', $name);
$name = str_replace('\"', '"', $name);
$name = htmlspecialchars(stripslashes($name)); // преобразовываем все спец символы
$msg = str_replace('--', ' - - ', $msg);
$msg = str_replace('\"', '"', $msg);
$msg = nl2br($msg);
$msg = htmlspecialchars(stripslashes($msg));
$msg = preg_replace("/[\r\n]{2,}/i", "", $msg); // убираем лишние ентеры из textarea
$file = fopen("base.txt", "a"); \\ открываем и записываем
fwrite($file, $mail."--".$name."--".$msg."\r\n"); // записываем переменные в виде данные--данные2 где -- это разделитель данных
?>
<meta http-equiv='refresh' content='0; url=http://site.ru'>
|
ну так как по поводу безопасности? | |
|
|
|
|
|
|
|
для: tima2010
(07.05.2010 в 21:35)
| | Можно в качестве разделителя использовать | и заменят его на | так можно вводить вообще любые символы | |
|
|
|
|
|
|
|
для: Ури Геллер
(10.05.2010 в 15:18)
| | а искать их потом среди текста - как?
деревянных пуль не хватает. | |
|
|
|
|
|
|
|
для: Trianon
(10.05.2010 в 16:08)
| | а зачем их искать, скрипт пусть сам ищет при выводе:
<?
$arr=file("base.txt");$c=count($arr);
for($i=$c-1;$i>=0;$i--){
$row=explode('--',$arr[$i]);
?>
<?=$row[0];?><br>
<?=$row[1];?><br>
<?=$row[2];?><br>
<?
}
?>
|
Ну все же спецы товарищи, что скажете по поводу безопасности записи данных таким методом? | |
|
|
|
|
|
|
|
для: tima2010
(10.05.2010 в 16:46)
| | Разделители, это отдельная головная боль. Для начала попробуйте проанализировать этот участок
<?
$mail = str_replace('\"', '"', $mail); // такое вот решение с кавычками
$mail = htmlspecialchars(stripslashes($mail));
$name = str_replace('--', ' - - ', $name);
$name = str_replace('\"', '"', $name);
|
Сделать это не сложно. Вот так:
<?
$mail = '"Кавычка"';
echo $mail = str_replace('\"', '"', $mail); // такое вот решение с кавычками
echo $mail = stripslashes($mail);
echo $mail = htmlspecialchars($mail);
|
и дальше. Только смотреть метаморфозы нужно в "исходном коде" браузера, не на экране. | |
|
|
|
|
|
|
|
для: tima2010
(07.05.2010 в 21:35)
| | Вы же в файл записываете, а не в бомба-убежище на случай атомной войны. | |
|
|
|