Помогите с готевой книгой
1.
SIR2100 (08.03.2011 / 22:58)
Есть гостевая. На денвере нормально все. Как только загружаю на сервер, появляются ошибки.
http://prarusyaz.h2m.ru/pages/guest.php - на сервере гостевая.
http://upwap.ru/1349554 - вот на денвере тоже самое.
Есть гостевая. На денвере нормально все. Как только загружаю на сервер, появляются ошибки.
http://prarusyaz.h2m.ru/pages/guest.php - на сервере гостевая.
http://upwap.ru/1349554 - вот на денвере тоже самое.
И еще. Если не сложно, поправьте ошибки, за плюс.
1) добавление сообщений, обработка при ошибках (проверка не фурычит почему-то)
2) перенос строки если в ней больше n-нного кол-ва символов.
3) Ну и соответственно то что вылезает на h2m.ru
121 строка это case 'add':
147 строка это case 'added':
107 строка это for($i=0; $str=$file[$i]; $i++){
Добавлено через 02:04 сек.
часть 1
<?
if(isset($_GET['act']) and $_GET['act']!==NULL) { $act = $_GET['act']; }
switch($act) {
default:
$file = file('../local/quest.dat');
$count = count($file);
if($count==NULL) { echo '<font color="red">Сообщений пока нет!<br></font></div>'; }
for($i=0; $str=$file[$i]; $i++){
$str = explode(':||:',$str);
$name = $str[0];
$date = $str[1];
$info = $str[2];
$mess = wordwrap($str[3], 4, PHP_EOL);
echo 'Сообщение: <a title="'.$info.'">'.$name.'</a></a><font color="red"><br>'.$mess.'
</div></font> </div> <br>';
}
echo '<br><font color="red"><a href="../pages/guest.php?act=add" title="Добавить новое сообщение в гостевую">Добавить сообщение</a><br></font>';
echo '<font color="red">Всего сообщений: '.$count.'.</font>';
echo '</div>';
break;
case 'add':
if($_GET['err']=='1') {
echo '<font color="red">';
echo 'При заполнении формы вы допустили ошибки:<br>';
if($_GET['noname']=='1') { echo '<b>Вы не ввели имя!</b><br>'; }
if($_GET['noinfo']=='1') { echo '<b>Вы не ввели e-mail/icq!</b><br>'; }
if($_GET['nomess']=='1') { echo '<b>Вы не ввели сообщение!</b><br>'; }
echo '</font></div>';
}
2.
SIR2100 (08.03.2011 / 23:01)
2 часть
echo '<form action="../pages/guest.php?act=added&" method="POST">';
echo '<a title="Это нужно для того чтобы мы могли вам ответить">Введите имя: <font color="red">*</font><br>';
echo '<input type="text" maxlength="15" name="post_name"><br>';
echo '<a title="Пример: name@mail.ru/123456 или -/123456 (если нет)">Ваш e-mail/icq: <font color="red">*</font><br>';
echo '<input type="text" maxlength="30" name="post_info"><br>';
echo '<a title="Вы можете задать вопрос, написав его здесь">Введите сообщение:</a> <font color="red">*</font><br>';
echo '<textarea cols="25" rows="3" name="post_mess"></textarea><br>';
echo '<input type="submit" value="Добавить"><br>';
echo '</form>';
echo '<font color="red"><small><b>*</b> Все поля обязательны для заполнения. Это нужно для того, чтобы мы могли ответить Вам.</small></font>';
break;
case 'added':
$error_str = '';
if(isset($_POST['post_name']) and $_POST['post_name']!=='') { $post_name = htmlspecialchars($_POST['post_name']); } else { $error_str.='&noname=1'; }
if(isset($_POST['post_mess']) and $_POST['post_mess']!=='') { $post_mess = htmlspecialchars($_POST['post_mess']); } else { $error_str.='&nomess=1'; }
if(isset($_POST['post_info']) and $_POST['post_info']!=='') { $post_info = htmlspecialchars($_POST['post_info']); } else { $error_str.='&noinfo=1'; }
$fp = fopen('../local/quest.dat',"a+");
if(!$fp) { echo 'Ошибка открытия файла!<br>'; }
$post_name = str_replace(':||:','',$post_name);
$post_name = str_replace('<','',$post_name);
$post_name = str_replace('>','',$post_name);
$post_name = str_replace('"','',$post_name);
$post_name = str_replace('\'','',$post_name);
$post_mess = str_replace(':||:','',$post_mess);
$post_mess = str_replace('<','',$post_mess);
$post_mess = str_replace('>','',$post_mess);
$post_mess = str_replace('
','<br>',$post_mess);
3.
SIR2100 (08.03.2011 / 23:02)
if(isset($post_info)){
$post_info = str_replace(':||:','',$post_info);
$post_info = str_replace('<','',$post_info);
$post_info = str_replace('>','',$post_info);
$post_info = str_replace('"','',$post_info);
$post_info = str_replace('http://','',$post_info);
$post_info = str_replace('https://','',$post_info);
$post_info = ''.$post_info;
}
$str = $post_name.':||:Сообщение:||:'.$post_info.':||:'.$post_mess."\n";
fwrite($fp,$str);
if($_GET['noname']=='0')
{echo '<meta http-equiv="refresh" content="1;url=guest.php?act=add&err=1'.$error_str.'">';
echo '<div class="h1"><font color="red">Пожалуйста, подождите...</font></div>';
}else{
echo '<meta http-equiv="refresh" content="1;url=../pages/guest.php?">Сообщение успешно добавлено в гостевую! <a href="../pages/guest.php?">СЮДА<a/></div>';
break;
}}
?>
Добавлено через 02:59 сек.
Или расскажите как в форму вывести, как во втором посте)) когда вимволов много, форма появляется
4.
ramzes (08.03.2011 / 23:09)
if(isset($_GET['act']) and $_GET['act']!==NULL) { $act = $_GET['act']; } тут ошибка
else{
$act = 'default';
}
5.
Роман (08.03.2011 / 23:09)
насчет Notice: контроль ошибок сделай менее придирчивым.
6.
SIR2100 (08.03.2011 / 23:11)
ramzes, будь добр, ткни меня носом
конкретно в это место, и покажи как исправить)
Добавлено через 01:09 сек.
5, ок)) только чем плох нынешний вариант? время обработки?
7.
ramzes (08.03.2011 / 23:18)
6.
SIR2100, ты в свитч используешь $act, когда она не обьявлена выскакивает предупреждение "необьявленная переменная"
как исправить я выше написал
это даже не ошибка, просто предупреждение
8.
SIR2100 (08.03.2011 / 23:32)
Теперь, соответственно, ошибка в 109 строке
for($i=0; $str=$file[$i]; $i++){
9.
ramzes (09.03.2011 / 01:02)
SIR2100 (8 Марта 2011 / 23:32)
Теперь, соответственно, ошибка в 109 строке
for($i=0; $str=$file[$i]; $i++){
бесконечный цикл? где лимит то до которого повторы идут?
10.
SIR2100 (09.03.2011 / 10:25)
какие цыклы есть в пыхе кроме фор? вайл или булеан есть?
11.
Валерий (09.03.2011 / 10:45)
while есть.. Но в данном случае больше подходит
foreach
Я наоборот советую включить показ всех ошибок и предупреждений, и писать так, чтоб ошибок и предупреждений небыло.
error_reporting(E_ALL);
12.
SIR2100 (09.03.2011 / 18:15)
foreach я не знаю о таком. Пойду пошарю в справочнике
13.
SIR2100 (09.03.2011 / 18:27)
Блин. Нет в справочниках этого((
14.
Роман (09.03.2011 / 18:30)
Foreach
Кострукция foreach представляет собой разновидность for, включенную в язык для упрощения перебора элементов массива. Существует две разновидности команды foreach, предназначенных для разных типов массива:
foreach ($массив as $элемент) { блок }
foreach ($массив as $ключ => $элемент) { блок }
При выполнении следующего фрагмента:
<?php
$a=array("X","Y","Z")
foreach ($a as $b) { echo "$b<br>"; }
?>
Будет выведен результат:
X
Y
Z
Второй вариант используется при работе с ассоциативными массивами:
<?php
$a=array{
"X"=10,
"Y"=20,
"Z"=30 }
foreach ($a as $b=>$c) {
echo "$a=>$c
";}
?>
Результат:
X=>10
X=>20
X=>30
[color=#0000ff][/color]
15.
SIR2100 (09.03.2011 / 22:30)
какую роль играет as ?
Добавлено через 04:03 сек.
foreach ($a as $b=>$c) не понятна строка эта вообще
16.
DmitryDick (09.03.2011 / 23:02)
Перебирает поочередно массив $a, в переменные $b и $c с каждой итерацией (с каждым шагом) цикла заносятся ключ и значение этого ключа в массиве соответственно.
<?php
$a = array('ключ1'=>'значение1', 'ключ2'=>'значение2');
foreach ( $a as $b=> $c ) echo $b, ' - ', $c, '<br />';
/*
Получаем:
ключ1 - значение1
ключ2 - значение2
*/
?>
17.
SIR2100 (10.03.2011 / 21:04)
Скрипт выкладываю
http://upwap.ru/1353085
Поправьте ошибки плииз))
1) при добавлении сообщения не проходит проверка, скрипт идет мимо нее.
2) то что отображается в скрипте при его выполнении.
Буду очень благодарен
18.
Валерий (10.03.2011 / 21:54)
Погляди, может поможет
http://scades.ru/simple_guestbook.exe
а то у тебя мудрённо как то
19.
SIR2100 (10.03.2011 / 22:33)
ух ты. Хорошая штука)) спс
Добавлено через 02:00 сек.
где можно найти такие учебники?
20.
Валерий (11.03.2011 / 09:39)
Ну этот я записывал когда делать нечего было..
Может ещё запишу, если тему урока подкинешь.
21.
SIR2100 (11.03.2011 / 10:47)
аа.
Допустим есть некоторое колво информации. Мы нажимаем на ссылку ведущую на страницу. На этой странице есть ссылки при нажатии на которые на этой же странице отображается информация, содержащаяся в этих текстовых документах
22.
Валерий (11.03.2011 / 11:34)
не понял.
23.
SIR2100 (11.03.2011 / 16:07)
мы зашли на страницу.
На ней ссылки, при нажатии на которые нам выводится содержание любого текстового файла через одну вторую страницу. Т.е. какую бы мы ссылку ни выбирали, мы попадаем на одну и туже пхп страницу, которая берет при разных запросах соответствующую запросу информацию и выводит ее.
Если не понятно, домой приеду и пример кину
Добавлено через 02:17 сек.
яркий пример того что я хочу это поиск на этом сайте
24.
SIR2100 (11.03.2011 / 19:32)
<?php
$file="../local/guest.dat";
if (isset ($_post['name']))
{
$name=$_post['name'];
$message=$_post['message'];
$text="<b>$name</b>:$message \n";
file_put_contents($file,$text);
header('location:guest.php');
exit;
}
?>
<form method="post" action="" >
Имя:<input type="text" name="name" /><br/>
Сообщение:<br/> <textarea name="message"></textarea><br /> <input type="submit" value="Send"/>
</form>
Блин. Уже здесь ошибку сделал. НЕ записывается в файл(((
Добавлено через 07:55 сек.
header('location:guest.php'); объясните мне для чего эта строка
25.
Валерий (11.03.2011 / 19:40)
попробуй путь до файла полный написать
$file=$_SERVER['DOCUMENT_ROOT'].'/local/guest.dat';
26.
SIR2100 (11.03.2011 / 19:51)
<?php
$file=$_SERVER['DOCUMENT_ROOT'].'/local/guest.dat';
if (isset ($_post['name']))
{
$name=$_post['name'];
$message=$_post['message'];
$content=file_get_contents($file);
$text="<b>$name</b>:$message \n";
$text=$content.$text;
file_put_contents($file,$text);
header('location:guest.php');
exit;
}
$messages=array();
if(is_file($file))$messages=file($file);
?>
<form method="post" action="" >
Имя:<input type="text" name="name" /><br/>
Сообщение:<br/> <textarea name="message"></textarea><br /> <input type="submit" value="Send"/>
</form>
<?foreach($messages AS $key=>$val):?>
<div><?$val?></div>
<?endforeach?>
хД очень похоже на точ то у меня руки не из того места растут
Все вроде как на видео. НО не работает((
Добавлено через 00:48 сек.
да и я привык путь прописывать так "../local/guest.dat"
27.
Facecontrol (11.03.2011 / 20:11)
Я вот тоже хочу сейчас написать гостевуху на файлах.Вот у меня допустим форма есть,и я вот хочу узнать у вас ребята,кто может написать последовательность для написания гостевой?Тоесть к примеру:
1.Проверить введины ли данные
2.Если данные не введены,то перенаправить пользователя на форму для ввода данных
3.......
4.......... И так далее.Если кто смог бы такое написать было бы не плохо.
28.
SIR2100 (11.03.2011 / 20:14)
Посмотрите код кто-нить пожалуйста, потому что работа стоит(((
29.
Валерий (11.03.2011 / 20:23)
Facecontrol,
http://scades.ru/simple_guestbook.exe
SIR2100, какая проблема? В файл не пишется, или из файла не выводится? Выводить так надо <?=$val?>, а не так <?$val?>
30.
SIR2100 (11.03.2011 / 20:27)
логично было бы проверить, заполнена ли форма. Если нет то выводим ее
потом проверка, введены ли данные. Если нет то обратно. Если да то идем дальше.
Проверка на спешиалчарс. Чтобы сайт не ломанули. Если проходим то дальше. еСЛИ НЕТ ТО ВОЗВРАЩАЕМ.
Если все нормально, записываем в файл.
Потом, соответственно, читаем из файла.
Так думаю я. А вот как это воплотить хД другое дело
Добавлено через 02:37 сек.
дело в том, что не записывается в файл инфа(( а тут исправил
Добавлено через 05:05 сек.
Все выводится. А записыватсья не хочет
31.
Facecontrol (11.03.2011 / 20:33)
valerik (11 Марта 2011 / 19:23)
Facecontrol, http://scades.ru/simple_guestbook.exe
SIR2100, какая проблема? В файл не пишется, или из файла не выводится? Выводить так надо <?=$val?>, а не так <?$val?>
Блин я с телефона,у меня такие файлы не поддерживает,можешь так объяснить?
Добавлено через 03:18 сек.
30.
SIR2100, а что ты переменной $file хочешь сделать?
32.
SIR2100 (11.03.2011 / 20:40)
$file это файл в который информация будет записываться
Добавлено через 01:02 сек.
31. Facecontrol, это видео для компа. Там гписывается как сделать простейшую гостевую
33.
Facecontrol (11.03.2011 / 20:52)
32.
SIR2100, так ты ж ей в первой части присвоил функцию file и что ты сейчас хочешь делать переменной $content
34.
SIR2100 (11.03.2011 / 21:01)
33. Facecontrol, вот это уже труднее хД. Я полностью скопировал то что мне дали)) эта ехешная видюшка. Ток там все работает. А у меня ошибки синтаксические где-то походу
Добавлено через 01:12 сек.
Но как я понял, контент получает старые сообщения и к ним добавляет новые, чтобы записи все сохранялись.
35.
Facecontrol (11.03.2011 / 21:14)
34.
SIR2100, вот посмотри на этом сайте код
http://visavi.net/load/zip.php?id=1294&
36.
SIR2100 (11.03.2011 / 21:18)
есть она у меня переделанная
НО там не все работает как хотелось бы.
Я ее выкладывал уже. Мне сказали что код тяжелый или что-то типа того.
Добавлено через 03:27 сек.
у меня есть желание с нуля написать)
37.
Андрей (11.03.2011 / 21:25)
<?php
define ("_FILE_", "data.txt");
if (!empty($_POST["name"]) and !empty($_POST["message"])) {
$name = $_POST["name"];
$message= $_POST["message"];
if (file_exists(_FILE_)) {
$text="<b>$name</b>:$message \n";
$content = file_get_contents(_FILE_);
$content .= $text;
file_put_contents(_FILE_, $content);
}
header("location: ".$_SERVER["PHP_SELF"]);
exit;
}
?>
<form action= "<?=$_SERVER["PHP_SELF"]?>" method="post">
Имя:
<input type="text" name="name" /><br/>
Сообщение:<br/>
<textarea name="message"></textarea><br />
<input type="submit" value="Отправить"/>
</form>
<?php
if (is_file(_FILE_)) {
$messages = file(_FILE_);
$messages = array_reverse($messages);
foreach($messages as $val) {
echo $val.'<br />';
}
}
?>
#26 Пробуй по аналогии.
38.
SIR2100 (11.03.2011 / 23:10)
37, не работает. Пишет что здесь ошибка
header("location: ".$_SERVER["PHP_SELF"]);
39.
Андрей (11.03.2011 / 23:26)
У меня всё работает без ошибок. Сохрани файл в утф8 без бом. И посмотри нету случайно у тебя любого вывода до хеадера.
40.
SIR2100 (11.03.2011 / 23:58)
Отв / Цит / Спам
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\1\index.php:2) in Z:\home\test1.ru\www\1\index.php on line 15
При отправке
Добавлено через 01:39 сек.
вставил только твой код из 37 поста
Добавлено через 03:58 сек.
Запись в файл происходит, так же все после считывается. Только эта ошибка при добавлении записи
41.
Facecontrol (12.03.2011 / 00:16)
40.
SIR2100, а ты поймешь вообще принцип создания гостевой книги,если просто ты будешь переделывать чужой код,а когда не будет получаться,то тебе будут показывать код как сделать правильно,и ты его будешь тупо вставлять в нужное место?Я думаю нет,я например ничего бы так не понял,ну может только самую малость.Я вот тут что подумал,если не получается переделать чужой код,так может просто нужно начать с нуля писать свой код?Я это чисто для себя такую заметку сделал,что так проще понять,и больше усвоишь.Ну и тебе такой же совет даю.Конечно без помощи кодеров не обойтись,вопервых у них знаний больше,а во вторых опыта,что не мало важно.
42.
Камиль Ризаев (12.03.2011 / 00:33)
SIR2100 (11 Марта 2011 / 23:58)
Отв / Цит / Спам
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\1\index.php:2) in Z:\home\test1.ru\www\1\index.php on line 15
При отправке
Добавлено через 01:39 сек.
вставил только твой код из 37 поста
Добавлено через 03:58 сек.
Запись в файл происходит, так же все после считывается. Только эта ошибка при добавлении записи
в начале скрипта, там где подключается дизайн пропиши (до подключения дизайна)
function ObHeader($string){
return $string;
}
ObStart('ObHeader');
и будет тебе счастье
43.
Facecontrol (12.03.2011 / 02:12)
Блин с нуля проще написать,если завтра лень не будет мне,то может и напишу гостевую
44.
SIR2100 (12.03.2011 / 08:00)
я смотрю простейшие гостевые книги и понемногу учусь))
45.
KOZZ (12.03.2011 / 08:18)
надо будет написать вам гостевую, посмотрите
46.
Facecontrol (12.03.2011 / 14:13)
Вот смотрите есть такой код:
<?
$f=file('file.txt');
$c=count($f);
$i=0;
while($i<$c){echo htmlspecialchars($f[$i]).'<br />';$i++; }
$name=$_POST['name'];
$msg=$_POST['msg'];
echo $name. ' ' .$msg;
include 'f.html';
$fp=fopen('file.txt',"a+");
$str=$name.' '.$msg."\n";
fwrite($fp,$str);
?>
Как сделать так чтоб $name можно было вывести к примеру красным?
47.
Facecontrol (12.03.2011 / 18:38)
Так что кто знает,подскажите мне пожалуйста.
48.
Роман (12.03.2011 / 18:54)
46. Вроде было с утра так =)
<?
$f=file('file.txt');
$c=count($f);
$i=0;
while($i<$c){echo htmlspecialchars($f[$i]).'<br />';$i++; }
$name=$_POST['name'];
$msg=$_POST['msg'];
echo '<font color="red">'.$name. '</font> ' .$msg;
include 'f.html';
$fp=fopen('file.txt',"a+");
$str=$name.' '.$msg."\n";
fwrite($fp,$str);
?>
49.
Facecontrol (12.03.2011 / 19:00)
Я так пробовал,так вообще ошибку выдает
50.
Facecontrol (13.03.2011 / 14:25)
Всё я разобрался с этим,есть другая проблема.Как сделать так чтоб в файл тоже записывалось то что $name должен быть в цвете?Вот код
<?
$f=file('file.txt');
$c=count($f);
for($i=0;$i<$c;$i++){echo htmlspecialchars($f[$i]).'<br />'; }
$name=$_POST['name'];
$msg=$_POST['msg'];
echo '<font color="red">'.$name.'</font>'.' '.$msg;
include 'f.html';
$fp=fopen('file.txt',"a+");
$str=$name. ' ' .$msg."\n";
fwrite($fp,$str);
?>
51.
Андрей (13.03.2011 / 16:34)
Записывай то что в echo в файл.
52.
Facecontrol (13.03.2011 / 16:49)
Так не получается я пробовал
53.
SIR2100 (13.03.2011 / 20:39)
так записывай всю строку в файл и все. А потом выводи ее. Вроде должно работать.
Типа <a href="ЫЫ"> ссылка </a>;
Оно прям так ссылкой должно и вывестись))
54.
Facecontrol (13.03.2011 / 23:20)
<?
//как сделать так чтоб в этом коде было следующее
$f=file('file.txt');
$c=count($f);
for($i=0;$i<$c;$i++){echo preg_replace('#\[color=#ff0000](.+)\[/red\]#siU','<font color="red">\1</font>', htmlspecialchars($f[$i])).'<br />';}
$name=$_POST['name'];$msg=$_POST['msg'];
if(isset($_POST['Submit'])){
if(!empty($name) and !empty($msg)){echo "[пользователь]:<font color='red'> $name </font><br> [оставил сообщение]: $msg";}}
include 'f.html';
if(isset($_POST['Submit'])){
if(!empty($name) and !empty($msg)){$fp=fopen('file.txt',"a+");
$na = '[пользователь]: [color=#ff0000]'.$name.'[/color]';
$str = "$na [оставил сообщение]: $msg \n";//чтоб вот это выводилось как будто здесь стоит такое условие echo "[пользователь]:<font color='red'> $name </font><br> [оставил сообщение]: $msg";
fwrite($fp,$str);
}}
?>
55.
Facecontrol (13.03.2011 / 23:45)
Ну что поможете?
56.
Андрей (14.03.2011 / 11:30)
<?php
header("Content-type: text/html; charset=utf-8");
if (isset($_POST["Submit"])) {
if (!empty($_POST["name"]) and !empty($_POST["msg"])) {
$name = $_POST["name"];
$msg = $_POST["msg"];
}
}
if(isset($name, $msg)) {
$fp=fopen('file.txt',"a+");
$str = "[пользователь]: <font color='red'>$name</font> [оставил сообщение]: $msg \n";
fwrite($fp,$str);
fclose($fp);
header("Location: ".$_SERVER["PHP_SELF"]);
exit();
}
$f=file("file.txt");
foreach ($f as $value) {
echo nl2br($value);
}
echo '<form action = "'.$_SERVER["PHP_SELF"].'" method="POST" >
<input type="text" name = "name"/>
<input type="text" name = "msg"/>
<input type="submit" name = "Submit" value = "Отправить"/>
</form>';
?>
Если я правильно понял.
57.
SIR2100 (14.03.2011 / 15:20)
сделайте код пожалуйста: форма ввода, из нее считывается переменная. после эта переменная записывается в файл.
58.
Facecontrol (14.03.2011 / 16:42)
56.
Фанат, Да нет,всё я уже разобрался с этим.
Добавлено через 04:00 сек.
SIR2100 (14 Марта 2011 / 14:20)
сделайте код пожалуйста: форма ввода, из нее считывается переменная. после эта переменная записывается в файл.
Что ты имеешь ввиду?Даже я не понял...Посмотри выше код,может там твой ответ.
59.
SIR2100 (14.03.2011 / 17:52)
есть форма. Мы вводим данные в эту форму. Введенные данные записываются в файл.
нужно самое обязательное, без лишнего. Это чтобы понять принцип взаимодействия.
60.
Facecontrol (14.03.2011 / 18:50)
Ну вот,если я тебя правильно понял,то тебе нужно это
<?
$name = $_POST["name"];//принимаешь из формы данные введенные сюда <input type="text" name = "name"/>
$msg = $_POST["msg"];//принимаешь из формы данные введенные сюда <input type="text" name = "msg"/>
$fp=fopen('file.txt',"a+");//открываешь файл для чтения и записи
$str = $nam.' '.$msg \n";
fwrite($fp,$str); //записываешь данные в последнюю строку
$f = file('file.txt');
$ca = count($f);
for($i;$i<$f;$i++) { echo $f[$i]; }//вывод файла
//и ниже сама форма:
echo '<form action ="action.php" method="POST" >
<input type="text" name = "name"/>
<input type="text" name = "msg"/>
<input type="submit" name = "Submit" value = "Отправить"/>
</form>';
?>
А вообще читай пхп.су,там есть статья по работе с формами.
61.
Facecontrol (14.03.2011 / 19:10)
59.
SIR2100,
Ошибка была у меня,а вот сейчас правильный код
<?
$name = $_POST["name"];//принимаешь из формы данные введенные сюда <input type="text" name = "name"/>
$msg = $_POST["msg"];//принимаешь из формы данные введенные сюда <input type="text" name = "msg"/>
$fp=fopen('file.txt',"a+");//открываешь файл для чтения и записи
$str = $nam.' '.$msg \n;
fwrite($fp,$str); //записываешь данные в последнюю строку
$f = file('file.txt');
$ca = count($f);
for($i;$i<$f;$i++) { echo $f[$i]; }//вывод файла
//и ниже сама форма:
echo '<form action ="action.php" method="POST" >
<input type="text" name = "name"/>
<input type="text" name = "msg"/>
<input type="submit" name = "Submit" value = "Отправить"/>
</form>';
?>
А вообще читай пхп.су,там есть статья по работе с формами.
62.
SIR2100 (14.03.2011 / 20:01)
В общем наконец разобрался)) вроде все работает)) УРА!!!
<?php
$name = $_POST['name'];
$message = $_POST['message'];
$file = "../local/guest.dat";
$text = "<b>$name</b>: $message\n";
$sfile = fopen($file, 'a+');
fwrite($sfile, $text);
fclose($sfile);
echo'<form action="?" method="post">
Имя:<input type="text" name="name"/></br>
Сообщение:<textarea name="message"></textarea>
<input type="submit" value="Отправить"/>
</form>';
?>
63.
SIR2100 (14.03.2011 / 20:43)
Как сделать защиту от записи пустых сообщений? а то при обновлении страницы у меня записывается пустая строка
там что-то
if (!$a) {
print 'заново вводите';
}
else записываем $a;
64.
Facecontrol (14.03.2011 / 20:59)
SIR2100 (14 Марта 2011 / 19:43)
Как сделать защиту от записи пустых сообщений? а то при обновлении страницы у меня записывается пустая строка
там что-то
if (!$a) {
print 'заново вводите';
}
else записываем $a;
if(!empty($name) and !empty($msg)) {echo $name.' '.$msg} else {echo 'Оу ты заполни правильно форму штреган';}
65.
SIR2100 (17.03.2011 / 18:06)
64, работает. Но, допустим я заполнил всё. Потом записал. И сижу с умным видом. Потом вдруг обновляю - опана. Второй раз записывается то же саме. И так при каждом обновлении записывается. Как исправить это? обнуление переменных? или dead(); ?
66.
SIR2100 (17.03.2011 / 18:20)
echo '<font class=gtext ><H2>Вы вошли!!!</H2></font>';
print '<font class="gtext">Добавить запись в факты:</font>';
$fcount = count('$file');
print $fcount;
if(!empty($name) and !empty($msg))
{
echo '<form action="?" method="post">
<font class=gtext>Номер факта: </font><input type="text" name="nfakt"/></br>
<font class=gtext>Факт:</font><textarea name="fakt"></textarea>
<input type="submit" value="Записать"/>
</form>';
echo 'Вы не ввели данные';
}
else
{
$nfakt = $_POST['nfakt'];
$fakt = $_POST['fakt'];
$file = "../local/fakt.dat";
$text = "\n<b>$nfakt</b>$fakt";
$sfile = fopen($file, 'a+');
fwrite($sfile, $text);
fclose($sfile);
echo '<form action="?" method="post">
<font class=gtext>Номер факта: </font><input type="text" name="nfakt"/></br>
<font class=gtext>Факт:</font><textarea name="fakt"></textarea>
<input type="submit" value="Записать"/>
</form>';
echo 'Данные успешно сохранены';
}
Вот мой код.
Сообщения сохраняются в любом случае, не зависемо от того, пустая ли строка или нет.
Что можно сделать? чтобы этого небыло
67.
Facecontrol (17.03.2011 / 18:43)
А зачем ты print используешь?Циклить вообщето надо.Насколько я знаю.
68.
SIR2100 (17.03.2011 / 19:03)
Как буд-то я знаю как это делается хД
69.
Facecontrol (17.03.2011 / 19:13)
Ты хоть мануалы читал по пыху?
70.
SIR2100 (17.03.2011 / 19:16)
немного
но читал
Добавлено через 01:05 сек.
я понимаю что код галимый. Но надо с чего-то начинать)
71.
Facecontrol (17.03.2011 / 19:23)
Начинай с мануалов.Ты про циклы читал?Читай пхп.су там есть хорошие статьи,которые тебе помогут.
72.
SIR2100 (17.03.2011 / 19:32)
начинай с мануалов)) Начал бы.
Просто нужен рукописный сайт в ближайшее время, работающий, возможно с небольшими косяками. А у меня 11 класс, егэ на носу. Поэтому времени у меня не так уж и много, чтобы перебирать сотни мануалов, в поисках того единственного, что мне нужен.
Поэтому я обращаюсь сюда.
73.
Facecontrol (17.03.2011 / 19:56)
Ничего у меня тоже,и защита диплома,и экзамены,и практика,и домашние дела,потом девушке нужно внимание уделить,на форумах разных повисеть,после практики прихожу уставший,ложусь спать,и всё равно что-то пытаюсь учить.Посмотри 61 пост там есть вывод в фор.
74.
SIR2100 (17.03.2011 / 20:17)
73, ты не совсем понял чего я хочу. У меня данные записываются при обновлении страницы. И я не знаю что с этим делать
75.
Facecontrol (17.03.2011 / 20:20)
Кстати чтобы исправить ошибку чтоб при обновлении не добавлялись сообщения проверь на нажатия субмит,тоесть так
if(isset($_POST['Submit'])){//тут дальше уже идёт проверка на наличие пустых сообщений,и запись в файл;}
76.
SIR2100 (17.03.2011 / 20:33)
if(isset($_POST['Submit'])){
if(!empty($name) and !empty($msg))
{
echo '<form action="?" method="post">
<font class=gtext>Номер факта: </font><input type="text" name="nfakt"/></br>
<font class=gtext>Факт:</font><textarea name="fakt"></textarea>
<input type="submit" value="Записать"/>
</form>';
echo 'Вы не ввели данные';
}
else
{
$nfakt = $_POST['nfakt'];
$fakt = $_POST['fakt'];
$file = "../local/fakt.dat";
$sfile = fopen($file, 'a+');
fwrite($sfile, "\n<b>$nfakt</b>$fakt");
fclose($sfile);
echo '<form action="?" method="post">
<font class=gtext>Номер факта: </font><input type="text" name="nfakt"/></br>
<font class=gtext>Факт:</font><textarea name="fakt"></textarea>
<input type="submit" value="Записать"/>
</form>';
echo 'Данные успешно сохранены';
}}
else
{
echo '<form action="?" method="post">
<font class=gtext>Номер факта: </font><input type="text" name="nfakt"/></br>
<font class=gtext>Факт:</font><textarea name="fakt"></textarea>
<input type="submit" value="Записать"/>
</form>';
echo 'Вы не ввели данные';
}
Если я все правильно понял, то должно быть вот так
Добавлено через 01:42 сек.
т.е. сначала проверяеем нажали ли кнопку.
Если нажали то проверяем, введены ли данные. Если нет - пишем об этом. Если введены то записываем.
Если не нажали кнопку то пишем что ничего не введено
Добавлено через 06:20 сек.
Ну возьмем элементарное.
if(isset($_POST['Submit'])) //если кнопка нажата то
{
$file = fopen ("../local/adminpass.dat","r+"); //выбераем файл
$str=md5($_POST['wpassword']); //шифруем строку
if ( !$file ) //если файл пуст
{
echo("Ошибка открытия файла"); //выводим
}
else // или
{
fputs ( $file, $str); //вставляем в файл строку
}
fclose ($file);} //закрываем файл
}
else
{
echo'all right';
}
77.
Facecontrol (18.03.2011 / 20:37)
Я что-то вопроса не увидел?
78.
SIR2100 (18.03.2011 / 21:06)
Что сделать в моем последнем выложенном коде, чтобы он работал?
79.
Facecontrol (18.03.2011 / 22:32)
А что это у тебя вообще такое?И в какой строке хоть ошибку показывает?
80.
SIR2100 (18.03.2011 / 22:54)
if(isset($_POST['Submit']))
{
if(!empty($name) and !empty($msg))
{
echo'имя или сообщение не введены'
}
else
{
echo'имя или сообщение не введены'
}
}
else
{
echo 'Вы не ввели данные';
}
Вот код. Скажем так: по какой-то причине он не работает. Ошибок никаких не выдает. Просто не работает и все. Как буд-то в строении что-то не так
81.
ramzes (18.03.2011 / 23:16)
Что есть "не работает"?
читай про elseif и switch
82.
SIR2100 (18.03.2011 / 23:54)
Вот код. По идее, если мы не нажимаем на клавишу "отправить", то скрипт пропускает запись данных в файл. А если нажимаем, то записывает.
А скрипт сильно сопротивляется и отказывается записывать данные в файл.
Что делать?
<?php
echo'<form action="?" method="post">
Имя:<input type="text" name="name"/></br>
Сообщение:<textarea name="message"></textarea>
<input type="submit" value="Отправить"/>
</form>';
$file = "../local/guest.dat";
if(isset($_POST['Submit']))
{
$name = $_POST['name'];
$message = $_POST['message'];
$name = htmlspecialchars($name);
$message = htmlspecialchars($message);
$text = "\n</br><b>$name</b>: $message</br>";
$sfile = fopen($file, 'a+');
fwrite($sfile, $text);
fclose($sfile);
}
?>
P.S. 81, elseif я знаю, а кейс я не знаю зачем здесь нужен
83.
Виталий (19.03.2011 / 00:03)
А скрипт сильно сопротивляется и отказывается записывать данные в файл.
буянит?
..м.б вместо a+ r+ надо...да и
if(isset($_POST['Submit']))
напиши
if(isset($_POST['submit']))
Добавлено через 00:22 сек.
вообще какая ошибка....
84.
Facecontrol (19.03.2011 / 00:33)
id1 (18 Марта 2011 / 23:03)
буянит?
..м.б вместо a+ r+ надо...да и
if(isset($_POST['Submit']))
напиши
if(isset($_POST['submit']))
Добавлено через 00:22 сек.
вообще какая ошибка....
Так в этом та разницы никакой нет.
85.
Андрей (19.03.2011 / 00:47)
ты проверяешь иссетом submit. Такой переменной нету. Поэтому он и возвращает false.
Если тебе нужно передавать значение, напиши там где кнопка name = "имя".
86.
Facecontrol (19.03.2011 / 00:58)
Попробуй вот такой код
<?php
echo'<form action="?" <!--в action естественно ставь ссылку на обработчика--> method="post">
Имя:<input type="text" name="name"></br>
Сообщение:<textarea name="message"></textarea>
<input name="Submit" type="Submit" value="Отправить">
</form>';
$file = "guest.dat";
if(isset($_POST['Submit']))
{
$name = $_POST['name'];
$message = $_POST['message'];
$name = htmlspecialchars($name);
$message = htmlspecialchars($message);
$text = "'<b>'.$name:'<b />'.$message.<br />\n";
$sfile = fopen($file,"a+");
fwrite($sfile,$text);
fclose($sfile);
}
?>
87.
ramzes (19.03.2011 / 19:43)
<?php
echo'<form action="?" method="post">
Имя:<input type="text" name="name"/></br>
Сообщение:<textarea name="message"></textarea>
<input type="submit" value="Отправить"/>
</form>';
$file = "../local/guest.dat";
if(isset($_POST['name']) AND isset($_POST['message']))
{
$name = htmlspecialchars(trim$_POST['name']));
$message = htmlspecialchars(trim($_POST['message']));
$text = "\n</br><b>$name</b>: $message</br>";
$sfile = fopen($file, 'a+');
fwrite($sfile, $text);
fclose($sfile);
}
?>
не хватает проверки на не пустые сообщения, на длину сообщений, и проверки антифлуда
</br> - это не верно, <br />
88.
SIR2100 (20.03.2011 / 11:05)
Блин!! Я все равно не пойму как сделать проверку на то, нажата ли кнопка submit
89.
Facecontrol (20.03.2011 / 11:50)
Сравни мой код и свой,а именно html форму.У тебя неправильно в Submit не установленно имя переменной которой будет этот тип.
90.
Валерий (20.03.2011 / 12:07)
Я не знаю почему многие пишут код обработчика ниже html формы.. может в этом есть какой то профит?
Я обработчик всегда пишу выше вывода и пересылаю через header назад.. Иначе при обновлении страницы, сообщение отправится второй раз.
Добавлено через 02:36 сек.
SIR2100 (20 Марта 2011 / 16:05)
Блин!! Я все равно не пойму как сделать проверку на то, нажата ли кнопка submit
А зачем тебе это нужно? Проверяй существование других переменных..
91.
SIR2100 (20.03.2011 / 12:22)
не получается. Информация все равно как то "просачивается" сквозь проверку
Добавлено через 04:36 сек.
<?php
echo'<form action="?" method="post">
Имя:<input type="text" name="name"></br>
Сообщение:<textarea name="message"></textarea></br>
<input name="submit" type="submit" value="Отправить">
</form>';
$file = "../local/guest.dat";
$submit = $_POST['submit'];
$tf = $_post['name'];
if(isset($_post['post']) and isset($_post['name']))
{
$name = htmlspecialchars($_POST['name']);
$message = htmlspecialchars($_POST['message']);
$text = "\n$name: $message<br />";
$sfile = fopen($file,"a+");
fwrite($sfile,$text);
fclose($sfile);
}
$f = fopen($file,"r");
$text = fread($f, filesize($file));
fclose($f);
echo($text);
?>
Вот мой код. Это последнне что я сделал. Поправьте так, чтобы проверялось и работало. Просто я уже замучался на этом шагу. Уже не знаю что делать((
92.
Facecontrol (20.03.2011 / 12:27)
91.
SIR2100, проверяй на пустые сообщения ещё,я ж тебе код писал
93.
SIR2100 (20.03.2011 / 12:33)
так при проверке на пустые сообщения, значение переменных старое остается.
Добавлено через 00:41 сек.
if(isset($_post['post']) and isset($_post['name']))
{
}
Вот проверка на пустые сообщения
Добавлено через 06:14 сек.
Даже такую проверку данных обходит
if(isset($_POST['Submit'])){
if(isset($_POST['name']) AND isset($_POST['message']))
{
}}
Добавлено через 08:56 сек.
При обновлении страницы записывается старое значение переменной
94.
ramzes (20.03.2011 / 13:58)
гг смотри в код свой)))
последние 4 строчки
____________
(isset($_post['post']) это ты вообще что проверяешь?
95.
KOZZ (20.03.2011 / 14:34)
94.
ramzes, люди упорно пытаются написать что - то наугад
все же гении, мануалы им не нужны
96.
SIR2100 (20.03.2011 / 14:35)
Всё нах!!! Сел и сделал!
Добавлено через 00:32 сек.
<?php
echo'<form action="guest.php" method="post">
Имя:<input type="text" name="name"></br>
Сообщение:<textarea name="message"></textarea></br>
Записать?<input type="text" name="auto"></br>
<input name="submit" type="submit" value="Отправить">
</form>';
$file = "../local/guest.dat";
$name = htmlspecialchars($_POST['name']);
$message = htmlspecialchars($_POST['message']);
$pr = "$name$mesage";
$s = htmlspecialchars($_POST['auto']);
if ($s == "нет")
{
echo'Ведение записи отключено<br/>';
}
elseif ($s == "да")
{
if (!$pr) {echo'Вы не ввели имя и сообщение<br />';}
elseif(!$name) {echo'Вы не ввели имя<br />';}
elseif (!$message) {echo'Вы не ввели сообщение<br />';}
else{
$text = "\n<b>$name:</b> $message<br />";
$sfile = fopen($file,"a+");
fwrite($sfile,$text);
fclose($sfile);
}
}
elseif(!$s)
{
echo'Вы не ввели переменную!!!<br/>';
}
else {echo'Введено не верное значение<br />';}
$f = fopen($file,"r");
$text = fread($f, filesize($file));
fclose($f);
echo($text);
echo'<span class="gtext">Записывать* - пока значение "да", запись ведется при каждом обновлении<br/></font>';
$s = "нет";
?>
Сделал из того что знал хД
Добавлено через 01:52 сек.
И даже все работает так как задуманно хД практически. Остались мелкие правки.
Добавлено через 07:28 сек.
Получилось что-то типа защитыот ботов хД
97.
SIR2100 (20.03.2011 / 14:48)
И все равно косячок остался. При обновлении страницы после написания сообщения, значние переменной остается старым. Это я не знаю как исправить. В конце скрипта ей должно присвоиться значение "нет", но этого не происходит
98.
KOZZ (20.03.2011 / 15:00)
бррр, юные извращенцы ...
<?
# Функции:
#--------------------#
# проверка входных данных
function check_in($var){
return mysql_escape_string(trim(htmlentities($var, ENT_QUOTES, 'UTF-8')));
}
# точный strlen()
function my_mb_strlen($str){
if (function_exists('mb_strlen')) {return mb_strlen($str, 'utf-8');} elseif(function_exists('iconv_strlen')) {return iconv_strlen($str, 'utf-8');} else {return strlen($str);}
}
# проверка длины строки (от $min символов до $max)
function check_strlen($string,$min,$max){
$a = filter_var(my_mb_strlen($string), FILTER_VALIDATE_INT, array('options'=>array('min_range'=>$min,'max_range'=>$max)));
if($a !== false){return true;} else {return false;}
}
#--------------------#
$fname = 'archive.dat';
$save = (isset($_GET['save'])) ? true : false;
if($save){
if(isset($_POST['nick'],$_POST['message'])){
$_POST['nick'] = check_in($_POST['nick']);
$_POST['message'] = check_in($_POST['message']);
if(check_strlen($string,$min,$max)){
$file_str = file_get_contents($fname);
$write_str = "\r\n".$_POST['nick'].'|'.$_POST['message'];
$write = $file_str.$write_str;
if(file_put_contents($fname,$write)){echo 'Сообщение добавлено!';} else {echo 'Ошибка записи!';}
} else {echo 'Неверная длина данных!';}
} else {echo 'Неверные данные!';}
} else {
echo '
<form action="?save" method="post">
Ник:<br/><input name="nick" type="text" /><br/>
Сообщение:<br/><textarea name="message" cols="20" rows="10"></textarea><br/>
<input type="submit" value="Добавить" />
</form>
';
}
?>
должно работать, не проверял
первая строчка в файле пустой будет
99.
Андрей (20.03.2011 / 16:33)
Интересно, зачем тебе mysql_escape_string если он работает с файлами?
100.
SIR2100 (20.03.2011 / 18:49)
98, мне много что не понятно в скрипте. Поэтому я буду свой доделывать. Со временем сделаю каптчу из вот этого "да" и "нет" и все.
101.
Facecontrol (20.03.2011 / 18:52)
SIR2100 (20 Марта 2011 / 13:35)
Всё нах!!! Сел и сделал!
Добавлено через 00:32 сек.
<?php
echo'<form action="guest.php" method="post">
Имя:<input type="text" name="name"></br>
Сообщение:<textarea name="message"></textarea></br>
Записать?<input type="text" name="auto"></br>
<input name="submit" type="submit" value="Отправить">
</form>';
$file = "../local/guest.dat";
$name = htmlspecialchars($_POST['name']);
$message = htmlspecialchars($_POST['message']);
$pr = "$name$mesage";
$s = htmlspecialchars($_POST['auto']);
if ($s == "нет")
{
echo'Ведение записи отключено<br/>';
}
elseif ($s == "да")
{
if (!$pr) {echo'Вы не ввели имя и сообщение<br />';}
elseif(!$name) {echo'Вы не ввели имя<br />';}
elseif (!$message) {echo'Вы не ввели сообщение<br />';}
else{
$text = "\n<b>$name:</b> $message<br />";
$sfile = fopen($file,"a+");
fwrite($sfile,$text);
fclose($sfile);
}
}
elseif(!$s)
{
echo'Вы не ввели переменную!!!<br/>';
}
else {echo'Введено не верное значение<br />';}
$f = fopen($file,"r");
$text = fread($f, filesize($file));
fclose($f);
echo($text);
echo'<span class="gtext">Записывать* - пока значение "да", запись ведется при каждом обновлении<br/></font>';
$s = "нет";
?>
Сделал из того что знал хД
Добавлено через 01:52 сек.
И даже все работает так как задуманно хД практически. Остались мелкие правки.
Добавлено через 07:28 сек.
Получилось что-то типа защитыот ботов хД
Сдается мне что это не твой код
102.
SIR2100 (20.03.2011 / 18:58)
Нет. Вот это все я написал сам)) Все полностью, из набранного мной опыта.
Вот порядок немного навел))
<?php
$file = "../local/guest.dat";
$name = htmlspecialchars($_POST['name']);
$message = htmlspecialchars($_POST['message']);
$pr = "$name$mesage";
$s = htmlspecialchars($_POST['auto']);
if ($s == "да")
{
if (!$pr)
{
echo'Вы не ввели имя и сообщение<br />';
}
elseif (!$name)
{
echo'Вы не ввели имя<br />';
}
elseif (!$message)
{
echo'Вы не ввели сообщение<br />';
}
else
{
$text = "\n<b>$name:</b> $message<br />";
$sfile = fopen($file,"a+");
fwrite($sfile,$text);
fclose($sfile);
}
}
elseif(!$s)
{
echo'Вы не ввели переменную!!!<br/>';
}
else
{
echo'Введено не верное значение<br />';
}
$s = "нет";
$f = fopen($file,"r");
$text = fread($f, filesize($file));
fclose($f);
echo($text);
echo'<form action="guest.php" method="post">
Имя:<input type="text" name="name"></br>
Сообщение:<textarea name="message"></textarea></br>
Записать?<input type="text" name="auto"></br>
<input name="submit" type="submit" value="Отправить">
</form>';
?>
Добавлено через 02:59 сек.
Впрочем.. не веришь)) дело твое. Хочешь - в нете поищи, только ты не найдешь такого))
Добавлено через 05:39 сек.
Так что же сделать, чтобы при обновлении страницы, после введения текста, не вводилось тоже самое снова?
$s = "нет"; эта строка должна изменять переменную $s на нет, следовательно при обновлении должно писаться что введено не верное значение.
103.
ramzes (20.03.2011 / 19:26)
hider('Location: ?');
добавь после записи
104.
SIR2100 (20.03.2011 / 19:47)
После формы записи? Тогда там ошибка вылезает и у меня страница режется
Добавлено через 00:54 сек.
Fatal error: Call to undefined function hider() in Z:\home\test1.ru\www\pages\guest.php on line 132
105.
Андрей (20.03.2011 / 20:39)
не hider, а header("Location: index.php");
106.
SIR2100 (20.03.2011 / 21:39)
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\pages\guest.php:28) in Z:\home\test1.ru\www\pages\guest.php on line 132
Добавлено через 01:34 сек.
Типа нельзя изменить информацию о хидере - верхушка уже послана файлом гуест.пхп на со строки 28 в файле Z:\home\test1.ru\www\pages\guest.php
107.
ramzes (20.03.2011 / 22:40)
Потому что плохо организованно
if(запись){
запись
хидер
}else{
Вывод в браузер
}
108.
SIR2100 (20.03.2011 / 22:46)
аааа.
И еще, как проверить нажата ли кнопка подтверждения?
109.
ramzes (20.03.2011 / 23:16)
Какая еще кнопка?
открой любой скрипт посмотри принципы
проверяется наличие пост данных
110.
SIR2100 (20.03.2011 / 23:47)
Ну так старые переменные там остаются. Обнулять как их я не знаю
111.
ramzes (20.03.2011 / 23:50)
Если страница обновленна то ни чего не остается
удалять переменные вот так unset($_POST['message']);
112.
SIR2100 (20.03.2011 / 23:53)
так я страницу вручнею обновляю и появляется запись. Еще раз обновляю - еще запись. И так постоянно
113.
ramzes (21.03.2011 / 00:33)
Скриптом, хидер локацион
114.
KOZZ (21.03.2011 / 05:53)
99.
Фанат, эта функция экранирует символы, почитай про нее, много нового узнаешь.
115.
Андрей (21.03.2011 / 07:08)
зачем функцию которая написана для mysql использовать с файлами. Использовать Addslashes.
116.
KOZZ (21.03.2011 / 09:15)
115.
Фанат, эта самая обычная строковая функция. используй что хочешь, я буду использовать то что считаю нужным.
P.S: БД - это тоже файлы
117.
KOZZ (21.03.2011 / 09:25)
стоит заглянуть в мануалы:
mysql_escape_string -- Экранирует SQL спец-символы для mysql_query.
mysql_escape_string() не экранирует % и _.
addslashes -- Экранирует спецсимволы в строке
Экранируются одиночная кавычка ('), дойная кавычка ("), обратный слэш (\) и NUL (байт NULL).
mysql_escape_string добавляет слыши перед символами: \x00, \n, \r, \\, ', ", \x1A. А addslashes только перед ', ", \.
разницу я показал , что использовать - решать вам.
Добавлено через 07:28 сек.
<?
var_dump(mysql_escape_string("\r\n"));
var_dump(addslashes("\r\n"));
?>
сравни.
что за люди, когда вы мануалы начнете читать. хотя бы перед тем как говорить что нужно использовать просмотрел бы
118.
Валерий (21.03.2011 / 15:20)
Поддержу товарища, который говорит что тут mysql_escape_string не втему.
Зачем добавлять слэши перед какими то там символами? sql иньекции тут явно боятся не стоит..
Да и вроде бы эта функция вообще не работает без подключения к бд.
119.
KOZZ (21.03.2011 / 19:42)
118.
valerik, mysql_escape_string() работает. а mysql_real_escape_string() нет.
свои аргументы я уже привел, читай, если интересно.
120.
ramzes (22.03.2011 / 00:43)
Mysql_escape_string. Еще депрекат не ввзывает?
п.с. тоже не вижу смысла в применении этой функции
121.
SIR2100 (23.03.2011 / 14:58)
$kom=@file("../local/fakt.dat");
$total=count($kom);
echo'Добавить запись в факты:';
echo"$total";
echo'<br/>';
echo'<form class=gtext method="post">
Номер факта<input type="text" name="nfakt"><br/>
Факт<input type="text" name="fakt"><br/>
Вы уверены? (да)<input type="text name="rig" >
<input type="submit" value="Сохранить">
</form>';
$rig = ($_POST['rig']);
$fakt = ($_POST['fakt']);
$nfakt = ($_post['nfakt']);
$nf = "$fakt$nfakt";
if($rig == "да")
{
if (!$nf)
{
echo'Вы не заполнили следующие поля:<br/>';
if (!$fakt)
{
echo'не заполнено поле с фактом<br/>';
}
elseif (!$nfakt)
{
echo'Вы не заполнили поле с номером факта<br/>';
}
}
else
{
$nf = "<b>$nfakt:<b />$fakt";
$file = fopen ("../local/fakt.dat","r+");
fputs ($file, $nf);
fclose ($file);
}
}
Почему код не записывает в файл информацию?
122.
KOZZ (23.03.2011 / 15:03)
fopen ("../local/fakt.dat","
a+");
может так?
P.S: есть же file_put_contents() извращенцы )
123.
SIR2100 (23.03.2011 / 15:16)
Аааа точняк, че я хД
А какая разница между file_put_contents() и fputs ($file, $nf); ?
Добавлено через 02:16 сек.
Неа. Все равно не записывает((
124.
SIR2100 (23.03.2011 / 15:35)
И еще.
Есть текстовый документ.
1.txt
В нем есть строки
-nhfnfnfnfn
-траратаратар
-фигня
-брр
Нужно вывести допустим 20 строк, обрезанных на 70 символов.
Что-то бодобное уже мне делали. Но там рандомно строки выводятся. А мне нужно чтобы выводилось по х штук.
Добавлено через 00:39 сек.
<?
function text_dl ($text, $dl)
{
$text = iconv("utf-8", "cp1251", $text);
if (strlen($text)>$dl)
{
$rest = substr($text, 0, $dl);
$rest = iconv("cp1251", "utf-8", $rest);
return $rest.'...';
}
else
{
$rest = iconv("cp1251", "utf-8", $text);
return $rest;
}
}
$file = file("../local/fakt.dat");
if (count($file))
{
$line = rand(0, count($file) - 1);
print '<a href="vashi_voprosi.php?line='.$line.'">'.text_dl($file[ $line ], 100).'</a>';
}
else
{
print 'База правил пуста';
}
?>
Добавлено через 02:58 сек.
Причем нужно обязательно чтобы ссылка была (ну это я сам) и чтобы не рандомные, скажем 10 строчек, а чтобы по порядку с конца были. Если будет листниг, то вообще суперски))
125.
KOZZ (23.03.2011 / 15:42)
123.
SIR2100, fputs() это наследие php3, про который (имхо) пора забывать.
всякие fopen(), flock() , fclose()...
появились более удобные аналоги, с ними код красивее и короче.
вместо fopen,fgets,fclose -
file_get_contents() или
file() (в зависимости от ситуации)
вместо fopen,flock,fputs,flock,fclose -
file_put_contents()
разницу читай в мануалах, разбирай более свежие скрипты.
126.
SIR2100 (23.03.2011 / 16:40)
Понятно. Спс
127.
Валерий (23.03.2011 / 17:38)
Ну если надо дописывать текст в существующий файл, то наверное правильнее использовать fopen(a+),fwrite,fclose
128.
KOZZ (23.03.2011 / 17:41)
127.
valerik, ну возможно
а можно и так:
file_put_contents(file_get_contents('file.txt').'дописываемая строка');
интересно было бы сравнить по скорости
129.
Валерий (23.03.2011 / 18:14)
Не знаю как там по скорости, но если файл скажем 10мб, твоим способом он полностью помещается в оперативную память.. Т.е. весь файл считывается.. А другим способом, просто дописывается не читаясь и не тратя на это память.
130.
SIR2100 (24.03.2011 / 00:23)
<?
$file = fopen("../local/adminpass.dat","r");
$password = fread ($file,1000);
$pass = md5($_POST['secret']);
if($pass == "d41d8cd98f00b204e9800998ecf8427e")
{
echo'<form class=gtext action="1.php" method="post">
Введите секретный код <input type="text" name="secret">
<input name="submit" type="submit" value="Отправить">
</form>';
echo'Вы не ввели секретный код!';
}
elseif ($password == $pass)
{
echo'Вы вошли в администраторскую!<br />';
echo'<form class=gtext action="1.php" method="post">
Изменить пароль<input type="text" name="admpass"><br/>
Повторите пароль<input type="text" name="admpasspr"><br/>
Вы уверены? (да)<input type="text name="right" >
<input name="submit" type="submit" value="Сохранить">
</form>';
if( ($_POST['admpass']) == ($_POST['admpasspr']))
{
$admpass = md5($_POST['admpass']);
$right = ($_POST['right']);
if($right == "да")
{
if ($admpass == "d41d8cd98f00b204e9800998ecf8427e")
{
}
else
{
$file = fopen ("../local/adminpass.dat","a+");
$file_put_content($admpass);
echo'Ваш новый пароль:';
echo $ap;
}
}
else
{
echo'Вы не подтвердили пароль!';
}
}
else { echo'Вы не подтвердили пароль!';}}
?>
Вот код. Это часть большого скрипта.
Подскажите почему он может не работать.
При вводе пароля скрипт отправляет пользователя на страницу авторизации и не записывает данные, введенные пользователем.
Т.е. я ввел все данные, нажимаю сохранить и он меня посылает на авторизацию, в файл ничего не записывая.
Подскажите
в чем может быть ошибка?
131.
ramzes (24.03.2011 / 01:08)
$file_put_content($admpass);
file_put_content($admpass);
это функция а не переменная
132.
KOZZ (24.03.2011 / 05:42)
131.
ramzes, file_put_content
s()
Добавлено через 00:20 сек.
SIR2100 ты меня убиваешь ....
133.
SIR2100 (24.03.2011 / 16:13)
Что поделаешь хД 11 класс, ЕГЭ на носу и сайт писать нужно)) вот и мечусь я из стороны в сторону
134.
KOZZ (24.03.2011 / 16:17)
133.
SIR2100, у меня тоже 11 класс, тоже егэ на носу
135.
SIR2100 (24.03.2011 / 17:05)
Ну я не знаю как ты справляешься)) лично мне оч тяжело((
Добавлено через 09:21 сек.
Скрипт все равно не работает.
Даже если просто нажать сохранить то выкинет на авторизацию.
136.
SIR2100 (24.03.2011 / 19:10)
У меня есть текст в файле. Нужно этот текст поместить в форму для последующего изменения.
------
$file = "../local/admpanel/spisok.dat";
$text = file_get_contents($file);
-------
вставляем этот текст в формочку для последующего изменения
-------
$text = $_POST['text'];
file_put_contents($file, $text);
вроде так))
Добавлено через 06:46 сек.
Допишите пожалуйста, а то я не знаю как из переменной текст в форму вставить
137.
SIR2100 (24.03.2011 / 19:26)
писец. С чего-то вдруг админка перестала работать. Раньше работала а тут перестала. Че за х..
Добавлено через 01:05 сек.
<?php
$file = "../local/adminpass.dat";
$password = file_get_contents($file);
$pass = md5($_POST['secret']);
if($pass == "d41d8cd98f00b204e9800998ecf8427e")
{
echo'<form class=gtext action="admin-panel.php" method="post">
Введите секретный код <br/>
<input type="text" name="secret">
<input name="submit" type="submit" value="Отправить">
</form>';
echo'Вы не ввели секретный код!';
}
elseif ($password == $pass)
{
}
else
{
echo'<form class=gtext action="admin-panel.php" method="post">
Введите секретный код <input type="text" name="secret">
<input name="submit" type="submit" value="Отправить">
</form>';
echo'Секретный код не верен!';
}
?>
Вот простенький, кажется, код. Но что-то тут не так. Посмотрите
Добавлено через 03:55 сек.
Если пароли совпадают то мы нормально переходим в "админку". Обновляется страница и мы в админке находимся. Но когда заполняем любую форму и пытаемся что-либо отправить - сразу выкидывает
138.
ramzes (25.03.2011 / 01:10)
SIR2100
Скрипт все равно не работает.
Даже если просто нажать сохранить то выкинет на авторизацию.
А ты ожидал что сайт сам тебя запомнит?)))
сессии в помощь
URL:
https://visavi.net/topics/19533