Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > не могу разобраться с кодом гостевой


Автор: supervladislav 8.6.2006, 04:07
так вот собрался  я сделать гостевую только как выяснилось руки коротки )))вот форма там три поля которые должны вводиться  ,а вводиться и сохраняется только одно поле (textarea) в одном случае ,как быть.
Вроде ведь все просто 
1  вводим информацию из форм в массив $_MASSIV
2 создаем файл куда енто записываем 
3  складываем все в одну переменную 
4 записываем енто в файл  
Код

<html>
<head>
<title>гостевая книга </title>
<style>
body
{
scrollbar-3dlight-color: red;
scrollbar-base-color: red;
scrollbar-darkshadow-color: Powderblue;
}
h2
{
text-align:center;
text-size:14;
color:#FF9999;
}
h3{
text-align:center;
text-size:14;
color:#FF9999;
}
</style>
</head>
 <form method=post  action="dob.php">
<h2>ваше имя<input type="text" name="fuck" value="<?php $_POST["fuck"] echo; ?>" size=20></h2><br></p>
<h2>ваш е-майл<input type="text" name="email" value="<?php $_POST["email"] echo; ?>" size=20></h2><br></p>
<h3>введите введите сообщение</h3>
<h2><textarea name="soob" value="<?php $_POST["soob"] echo;>" cols="26"rows="11"></textarea></h2><br></p>
<center>
<INPUT type=submit value=отправить>
<INPUT type=reset value=обнулить>
</form>
</head>
</html>

скрипт на выходе говорит что незвестна переменная Fuck ,
в другом случае сохраняется  в разные файлы ноль,
Я вас прошу народ подскажите как названия форм укратить 
куда уже массив туда ентот дурацкий писать в поле name или
value   я не понимаю, он не считывает оттуда ничего у меня версия Php 4.4.1 ,если можно напишите пример, пожалуйста.
Код

<?php
if ($_POST["fuck"]!=" ")
{$a=$_POST["fuck"];}
if ($_POST["email"]!=" ")
{$b=$_POST["email"];}
if($_POST["soob"]!=" ")
{$c=$_POST["soob"];}
$vse=$a+$b+$c;
$file=fopen(time(),"w+");
fwrite($file,$vse);
fclose($file);
?>

 

Автор: PARROT 8.6.2006, 08:24
Я так не видела чтобы обращались с массивами (может чего упустила конечно), я всегда пользовалась присвоением, только зачем тут это?
Код

$vse=$a+$b+$c;
$vse=$a.$b.$c;
//или лучше так
$vse=array($a,$b,$c);

Думаю стоит просто почитать про массивы и проблема решится сама собой. 
Воспользуйся поиском, это уже было много раз. 

Опять же это не решение, а всего лишь предположение, посмотри внимательно в мануалы.  

Автор: oksale 8.6.2006, 08:49
Странный синтаксис 
Код

value="<?php $_POST["fuck"] echo; ?>"

Вообще-то, правильнее писать 
Код

value="<?php echo $_POST["fuck"]; ?>"
 или
Код

value="<?=$_POST["fuck"];?>"

И конкатенация строк делается след. образом: 
Код

$vse=$a.$b.$c;


С учетом всех замечаний твой код выглядит так:

Код

<form method=post  action="dob.php">
<h2>ваше имя<input type="text" name="fuck" value="<?=$_POST["fuck"]?>" size=20></h2><br></p>
<h2>ваш е-майл<input type="text" name="email" value="<?=$_POST["email"]?>" size=20></h2><br></p>
<h3>введите введите сообщение</h3>
<h2><textarea name="soob" value="<?=$_POST['soob']?> cols="26" rows="11"></textarea></h2><br></p>
<center>
<INPUT type=submit value=отправить>
<INPUT type=reset value=обнулить>
</form>


Код

<?php
if(strlen(trim($_POST['fuck'])))
    $a=$_POST['fuck']."\n";
if(strlen(trim($_POST["email"])))
    $b=$_POST["email"]."\n";
if(strlen(trim($_POST["soob"])))
    $c=$_POST["soob"];

$vse=$a.$b.$c;

$file=fopen(time(),"w+");
fwrite($file,$vse);
fclose($file);
?>
 

Автор: supervladislav 8.6.2006, 16:32
Цитата(oksale @ 8.6.2006,  08:49)
Странный синтаксис 
Код

value="<?php $_POST["fuck"] echo; ?>"

Вообще-то, правильнее писать 
Код

value="<?php echo $_POST["fuck"]; ?>"
 или
Код

value="<?=$_POST["fuck"];?>"

И конкатенация строк делается след. образом: 
Код

$vse=$a.$b.$c;


С учетом всех замечаний твой код выглядит так:

Код

<form method=post  action="dob.php">
<h2>ваше имя<input type="text" name="fuck" value="<?=$_POST["fuck"]?>" size=20></h2><br></p>
<h2>ваш е-майл<input type="text" name="email" value="<?=$_POST["email"]?>" size=20></h2><br></p>
<h3>введите введите сообщение</h3>
<h2><textarea name="soob" value="<?=$_POST['soob']?> cols="26" rows="11"></textarea></h2><br></p>
<center>
<INPUT type=submit value=отправить>
<INPUT type=reset value=обнулить>
</form>


Код

<?php
if(strlen(trim($_POST['fuck'])))
    $a=$_POST['fuck']."\n";
if(strlen(trim($_POST["email"])))
    $b=$_POST["email"]."\n";
if(strlen(trim($_POST["soob"])))
    $c=$_POST["soob"];

$vse=$a.$b.$c;

$file=fopen(time(),"w+");
fwrite($file,$vse);
fclose($file);
?>

спасибо вам за неоценимую помощь только мне теперь выдается следущее )))и в строке имя и в строке емайл))))что енто такое очередной прикол денвера?

<!--error--><br /><b>Notice</b>:  Undefined index:  email in <b>p:\home\localhost\www\www\gest\gest.php</b> on line <b>26</b><br /><script language=JavaScript src='/errors__/phperror_js.php'></script>


И еще почему во всех книгах пишут вот так 
<form action="ini.php>
<inpute=text name="email" value="<?php $_POST["email"];?>">
<inpute type="submit"
</form> 
А ты мне сказал value="<?=$_POST["email"]?>" 

Автор: supervladislav 8.6.2006, 17:59
Цитата(PARROT @ 8.6.2006,  08:24)
Я так не видела чтобы обращались с массивами (может чего упустила конечно), я всегда пользовалась присвоением, только зачем тут это?
Код

$vse=$a+$b+$c;
$vse=$a.$b.$c;
//или лучше так
$vse=array($a,$b,$c);

Думаю стоит просто почитать про массивы и проблема решится сама собой. 
Воспользуйся поиском, это уже было много раз. 

Опять же это не решение, а всего лишь предположение, посмотри внимательно в мануалы.

У меня две книги по пхп ,но каждая из них частично дополняют
друг-друга ,но иногда в них попадается откровенный бред ,в одной написано так ,а в другой по другому.
А какую бы ты книгу посоветовала по пхп. 

Автор: PARROT 8.6.2006, 18:29
supervladislav, никакую. 
Справку и мануал можно найти тут и в инете. 
В книгах специально (только не понятно зачем) делают ошибки.
Вообще сколько программеров, столько и мнений. Один привык так, другой иначе. 

  

Автор: madFobos 8.6.2006, 22:36
Цитата(supervladislav @  8.6.2006,  16:32 Найти цитируемый пост)
<!--error--><br /><b>Notice</b>:  Undefined index:  email in <b>p:\home\localhost\www\www\gest\gest.php</b> on line <b>26</b><br /><script language=JavaScript src='/errors__/phperror_js.php'></script>


Отключи E_NOTICE в php.ini - они как правило не нужны. Тебе всего лишь сообщают, что переменная $_POST['email'] не была определена (инициализирована), а ты ее пытаешься вывести в форму (по сути это не ошибка в PHP, но например в C++ это не допустимо).
 

Автор: supervladislav 9.6.2006, 05:37
Блин опять я к вам за помощью хочу обратиться))))форма вывода изображений ,ничего не происходит ,иногда выводится сообщение о ошибке в цикле foreach

Код
<?php
$direct="ot";
$a=opendir($direct);
while ($files=readdir($a))
{$b[]=$files;}
$g=sizeof($b);
if ($g!=0)
rsort($b);
foreach ($b as $k)
{
$file=fopen($direct/$k,"r");
while($v=fread($file,100)){
print $v;}
close($file);
}
?>

  

Автор: -=Ustas=- 9.6.2006, 08:52
Цитата(supervladislav @  9.6.2006,  05:37 Найти цитируемый пост)
иногда выводится сообщение о ошибке 

Может покажешь какую именно!!!

Добавлено @ 08:58 
Код

<?php

$path = getcwd();
$direct = $path.'/ot';
$a = opendir($direct);
while ($files = readdir($a)) {
    if ($files == '.' || $files == '..') {
        continue;
    }
    $b[] = $files;
}
if (sizeof($b) > 0) { 
    rsort($b);
    foreach ($b as $k) {
        $file = fopen($direct.'/'.$k, 'r');
        $v = fread($file, filesize($direct.'/'.$k));
        print $v;
        fclose($file);
    }
}

?>
 

Автор: supervladislav 9.6.2006, 19:00
Цитата(-=Ustas=- @ 9.6.2006,  08:52)
Цитата(supervladislav @  9.6.2006,  05:37 Найти цитируемый пост)
иногда выводится сообщение о ошибке 

Может покажешь какую именно!!!

Добавлено @ 08:58 
Код

<?php

$path = getcwd();
$direct = $path.'/ot';
$a = opendir($direct);
while ($files = readdir($a)) {
    if ($files == '.' || $files == '..') {
        continue;
    }
    $b[] = $files;
}
if (sizeof($b) > 0) { 
    rsort($b);
    foreach ($b as $k) {
        $file = fopen($direct.'/'.$k, 'r');
        $v = fread($file, filesize($direct.'/'.$k));
        print $v;
        fclose($file);
    }
}

?>

спасибо за помощь,а теперь объсни 
накой вот енто 
Код

 if ($files == '.' || $files == '..') {    
        continue;    

накой вот енто ,что за странная лексика ,такого описания 
папок нигде не видел  Ни в одной книге по пхп.
Код

$direct = $path.'/ot';

и кстате есть разница в пхп  между вот такой кавычкой " и такой ' 

 

Автор: -=Ustas=- 9.6.2006, 19:10
Цитата(supervladislav @  9.6.2006,  19:00 Найти цитируемый пост)
накой вот енто 

Это попадаются в листинге диры такие обозначения - текущей диры и выхода в родительскую.

Цитата(supervladislav @  9.6.2006,  19:00 Найти цитируемый пост)
накой вот енто ,что за странная лексика ,такого описания 

Нормальная лексика, мы сначала получили текущий путь от корня, и затем присоединили к нему диру, т.е. конкатенацией эт называется.

Цитата(supervladislav @  9.6.2006,  19:00 Найти цитируемый пост)
и кстате есть разница в пхп  между вот такой кавычкой " и такой ' 

Естественно, и еще какая! Строки заключенные в одиночные апострофы ' не парсяться  интерпритатором на наличие в них переменных и всяких служебных символов и эскейп-последовательностей. А в двойных ковычках ", тут уже парсинг на всё это наличие происходит.  

Автор: supervladislav 10.6.2006, 03:29
Цитата(-=Ustas=- @ 9.6.2006,  19:10)
Цитата(supervladislav @  9.6.2006,  19:00 Найти цитируемый пост)
накой вот енто 

Это попадаются в листинге диры такие обозначения - текущей диры и выхода в родительскую.

Цитата(supervladislav @  9.6.2006,  19:00 Найти цитируемый пост)
накой вот енто ,что за странная лексика ,такого описания 

Нормальная лексика, мы сначала получили текущий путь от корня, и затем присоединили к нему диру, т.е. конкатенацией эт называется.

Цитата(supervladislav @  9.6.2006,  19:00 Найти цитируемый пост)
и кстате есть разница в пхп  между вот такой кавычкой " и такой ' 

Естественно, и еще какая! Строки заключенные в одиночные апострофы ' не парсяться  интерпритатором на наличие в них переменных и всяких служебных символов и эскейп-последовательностей. А в двойных ковычках ", тут уже парсинг на всё это наличие происходит.

всё бы хорошо ,но вот ещё желание одно возникает ,как лучше разметить вводимые строки имя ,емайл и само сообщение в файле чтоб потом вывести отдельно друг от друга и чтоб значени имени и емайла (те которые в файле )были вывидены отдельно от сообщения.
Или есть  другой способ. 

Автор: -=Ustas=- 10.6.2006, 07:29
Код

name;;surname;;e-mail;;message
name;;surname;;e-mail;;message
name;;surname;;e-mail;;message
name;;surname;;e-mail;;message

Затем експлойдишь по ";;" и готово. 

Автор: -=Ustas=- 10.6.2006, 07:48
Всмысле сначала получаешь строки по fgets, а затем уже експлойдишь smile 

Автор: supervladislav 10.6.2006, 15:10
Цитата(-=Ustas=- @ 10.6.2006,  07:48)
Всмысле сначала получаешь строки по fgets, а затем уже експлойдишь smile

а по подробнее если можно))))как мне отличить строку емайл ,от строки найм))))?  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)