Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт закрыл весь экран :)
 
 автор: ZetRider   (13.03.2006 в 17:15)   письмо автору
 
 

короч))
есть скрипт:

<?
$file 
"log/vote_ban.txt";
$a file($file);
$i 1$fi Count($a);
$n 0;
while (
$i <= $fi):
$a[$i] = trim(str_replace ("\n",""$a[$i]));
$n $n+$a[$i];
$i++;
endwhile;

$a[$answer]++; $n++; 

$rez "Результаты голосования!\n".$a[1].
"\n".$a[2]."\n".$a[3]."\n".$a[4];

$ips=file("ban.txt");

foreach (
$ips as $ip)
{
if(
$_SERVER['REMOTE_ADDR']==trim($ip)) 
die(
"Вы голосовали!<br>Результат:
<br>PHP - <b>
$a[1]</b>
<br>Delphi - <b>
$a[2]</b>
<br>C++ - <b>
$a[3]</b>
<br>Assembler - <b>
$a[4]</b>
<br>Всего проголосовало: 
$n
"
);
}
?>


он делает действия: Считывает из файла log/vote_ban.txt айпи адреса, и если он сходен с тем под которым зашел юзер, то пишет что вы уже голосовали и типа выводит результат,.. но вместо того чтобы писать ето все окуратненько на 1 строчке, он тем самым закрывает весь экран )) тоесть какбы ничего непоказывает кроме етого результата...
Так в чем проблема? подскажите плизз)))

   
 
 автор: midav   (13.03.2006 в 23:41)   письмо автору
 
   для: ZetRider   (13.03.2006 в 17:15)
 

Проблема в том что у вас это все просто на странице, а Вы сделайте все это в таблице

<?
$file 
"log/vote_ban.txt";
$a file($file);
$i 1$fi Count($a);
$n 0;
while (
$i <= $fi):
$a[$i] = trim(str_replace ("\n",""$a[$i]));
$n $n+$a[$i];
$i++;
endwhile;

$a[$answer]++; $n++;

$rez "Результаты голосования!\n".$a[1].
"\n".$a[2]."\n".$a[3]."\n".$a[4];

$ips=file("ban.txt");

foreach (
$ips as $ip)
{
if(
$_SERVER['REMOTE_ADDR']==trim($ip))
die(
"<table align=center width=300 height=300>
<tr><td align=center>Вы голосовали!<br>Результат:
<br>PHP - <b>
$a[1]</b>
<br>Delphi - <b>
$a[2]</b>
<br>C++ - <b>
$a[3]</b>
<br>Assembler - <b>
$a[4]</b>
<br>Всего проголосовало: 
$n</td></tr></table>
"
);
}
?> 

   
 
 автор: ZetRider   (14.03.2006 в 16:17)   письмо автору
 
   для: midav   (13.03.2006 в 23:41)
 

неа, всеравно (

   
 
 автор: midav   (14.03.2006 в 19:44)   письмо автору
 
   для: ZetRider   (14.03.2006 в 16:17)
 

Дайте пожалуста ссылку чтоб посмотреть что и как :)

   
 
 автор: ZetRider   (15.03.2006 в 14:01)   письмо автору
 
   для: midav   (14.03.2006 в 19:44)
 

вот пример:
http://attack.h14.ru/vvv

   
 
 автор: kasmanaft   (15.03.2006 в 20:39)   письмо автору
 
   для: ZetRider   (15.03.2006 в 14:01)
 

потому что нужно использовать не die (которая используется для вывода ошибок и после вывода exit() а например echo....

   
 
 автор: ZetRider   (15.03.2006 в 21:43)   письмо автору
 
   для: kasmanaft   (15.03.2006 в 20:39)
 

а вот как сделать что если непроголосовали то выводит форму:

<FORM METHOD="POST" name=vote action="?id=add_vote">
<center><TABLE BORDER=0 width="119"><TR><TD><TABLE BORDER=0 width="120">
<TR><TD><b><font face="Courier New" size="2">Любимый язык?:</font></b></TD></TR>

<TR><TD><font face="Courier New">
    <INPUT TYPE=radio NAME=answer VALUE=1 style="font-weight: 700"></font><b><font size="2" face="Courier New">PHP</font></b></TD></TR>
<TR><TD><font face="Courier New">
    <INPUT TYPE=radio NAME=answer VALUE=2 style="font-weight: 700"></font><b><font size="2" face="Courier New">Delphi</font></b></TD></TR>
<TR><TD><font face="Courier New">
    <INPUT TYPE=radio NAME=answer VALUE=3 style="font-weight: 700"></font><b><font size="2" face="Courier New">C++</font></b></TD></TR>
<TR><TD><font face="Courier New">
    <INPUT TYPE=radio NAME=answer VALUE=4 style="font-weight: 700"></font><b><font size="2" face="Courier New">Assembler</font></b></TD></TR>

<TR><TD>
<center><INPUT TYPE=Submit NAME=vote VALUE=" Отправить "></center>
</TD></TR>
</TABLE></center></TD></TR></TABLE></FORM>


А если уже проголосовали то выводит:

<? 
$file 
"log/vote.txt"
$a file($file); 
$i 1$fi Count($a); 
$n 0
while (
$i <= $fi): 
$a[$i] = trim(str_replace ("\n",""$a[$i])); 
$n $n+$a[$i]; 
$i++; 
endwhile; 

$a[$answer]++; $n++; 

$rez "Результаты голосования!\n".$a[1]. 
"\n".$a[2]."\n".$a[3]."\n".$a[4]; 

$ips=file("log/vote_ban.txt"); 

foreach (
$ips as $ip

if(
$_SERVER['REMOTE_ADDR']==trim($ip)) 
echo
"<table align=center width=300 height=300> 
<tr><td align=center>Вы голосовали!<br>Результат: 
<br>PHP - <b>
$a[1]</b> 
<br>Delphi - <b>
$a[2]</b> 
<br>C++ - <b>
$a[3]</b> 
<br>Assembler - <b>
$a[4]</b> 
<br>Всего проголосовало: 
$n</td></tr></table> 
"


?>

,?

   
 
 автор: midav   (15.03.2006 в 23:34)   письмо автору
 
   для: ZetRider   (15.03.2006 в 21:43)
 


<? 
$file 
"log/vote.txt"
$a file($file); 
$i 1$fi Count($a); 
$n 0
while (
$i <= $fi): 
$a[$i] = trim(str_replace ("\n",""$a[$i])); 
$n $n+$a[$i]; 
$i++; 
endwhile; 

$a[$answer]++; $n++; 

$rez "Результаты голосования!\n".$a[1]. 
"\n".$a[2]."\n".$a[3]."\n".$a[4]; 

$ips=file("log/vote_ban.txt"); 

foreach (
$ips as $ip

if(
$_SERVER['REMOTE_ADDR']==trim($ip)) 
echo
"<table align=center width=300 height=300> 
<tr><td align=center>Вы голосовали!<br>Результат: 
<br>PHP - <b>
$a[1]</b> 
<br>Delphi - <b>
$a[2]</b> 
<br>C++ - <b>
$a[3]</b> 
<br>Assembler - <b>
$a[4]</b> 
<br>Всего проголосовало: 
$n</td></tr></table> 
"


else 
{
?>
<FORM METHOD="POST" name=vote action="?id=add_vote"> 
<center><TABLE BORDER=0 width="119"><TR><TD><TABLE BORDER=0 width="120"> 
<TR><TD><b><font face="Courier New" size="2">Любимый язык?:</font></b></TD></TR> 

<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=1 style="font-weight: 700"></font><b><font size="2" face="Courier New">PHP</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=2 style="font-weight: 700"></font><b><font size="2" face="Courier New">Delphi</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=3 style="font-weight: 700"></font><b><font size="2" face="Courier New">C++</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=4 style="font-weight: 700"></font><b><font size="2" face="Courier New">Assembler</font></b></TD></TR> 

<TR><TD> 
<center><INPUT TYPE=Submit NAME=vote VALUE=" Отправить "></center> 
</TD></TR> 
</TABLE></center></TD></TR></TABLE></FORM> 

<?php
}
?>



Ну походу так :)

   
 
 автор: kasmanaft   (16.03.2006 в 07:24)   письмо автору
 
   для: midav   (15.03.2006 в 23:34)
 

ну да, только у if'а нужно { поставить (вначале :)

   
 
 автор: ZetRider   (16.03.2006 в 13:10)   письмо автору
 
   для: kasmanaft   (16.03.2006 в 07:24)
 

пишет ошибку...
parse error, unexpected T_ELSE in F:\www\.......... on line 347
347 строка:
else

   
 
 автор: midav   (16.03.2006 в 14:13)   письмо автору
 
   для: ZetRider   (16.03.2006 в 13:10)
 

Ну во всем виновата функция foreach(), я бы сделал по другому :)

   
 
 автор: kasmanaft   (16.03.2006 в 14:30)   письмо автору
 
   для: ZetRider   (16.03.2006 в 13:10)
 

я ж сказал, что нужно сделать :)
только правильнее было бы проверить нет ли в файле нашего ip, а если есть то не выводить сразу результат голосования, а какой-нить переменной присвоить true (или 1)... а потом смотреть если наша переменная тру - выводим результат голосования, если фолс - форму.... (уже не в цикле)

   
 
 автор: midav   (16.03.2006 в 14:34)   письмо автору
 
   для: midav   (15.03.2006 в 23:34)
 


<? 
$file 
"log/vote.txt"
$a file($file); 
$i 1$fi Count($a); 
$n 0
while (
$i <= $fi): 
$a[$i] = trim(str_replace ("\n",""$a[$i])); 
$n $n+$a[$i]; 
$i++; 
endwhile; 

$a[$answer]++; $n++; 

$rez "Результаты голосования!\n".$a[1]. 
"\n".$a[2]."\n".$a[3]."\n".$a[4]; 

$ips=file("log/vote_ban.txt"); 

foreach (
$ips as $ip

if(
$_SERVER['REMOTE_ADDR']==trim($ip)) {
echo
"<table align=center width=300 height=300> 
<tr><td align=center>Вы голосовали!<br>Результат: 
<br>PHP - <b>
$a[1]</b> 
<br>Delphi - <b>
$a[2]</b> 
<br>C++ - <b>
$a[3]</b> 
<br>Assembler - <b>
$a[4]</b> 
<br>Всего проголосовало: 
$n</td></tr></table> 
"


else 

?> 
<FORM METHOD="POST" name=vote action="?id=add_vote"> 
<center><TABLE BORDER=0 width="119"><TR><TD><TABLE BORDER=0 width="120"> 
<TR><TD><b><font face="Courier New" size="2">Любимый язык?:</font></b></TD></TR> 

<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=1 style="font-weight: 700"></font><b><font size="2" face="Courier New">PHP</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=2 style="font-weight: 700"></font><b><font size="2" face="Courier New">Delphi</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=3 style="font-weight: 700"></font><b><font size="2" face="Courier New">C++</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=4 style="font-weight: 700"></font><b><font size="2" face="Courier New">Assembler</font></b></TD></TR> 

<TR><TD> 
<center><INPUT TYPE=Submit NAME=vote VALUE=" Отправить "></center> 
</TD></TR> 
</TABLE></center></TD></TR></TABLE></FORM> 

<?php 

}
?> 

   
 
 автор: kasmanaft   (16.03.2006 в 14:37)   письмо автору
 
   для: midav   (16.03.2006 в 14:34)
 

-

   
 
 автор: ZetRider   (16.03.2006 в 14:43)   письмо автору
 
   для: kasmanaft   (16.03.2006 в 14:37)
 

вроде все прально работает! но почемута он форму ответа невыводит если неголосовали ((

   
 
 автор: midav   (16.03.2006 в 19:22)   письмо автору
 
   для: midav   (16.03.2006 в 14:34)
 


foreach ($ips as $ip) 

if($_SERVER['REMOTE_ADDR']==trim($ip)) { 
echo"<table align=center width=300 height=300> 
<tr><td align=center>Вы голосовали!<br>Результат: 
<br>PHP - <b>$a[1]</b> 
<br>Delphi - <b>$a[2]</b> 
<br>C++ - <b>$a[3]</b> 
<br>Assembler - <b>$a[4]</b> 
<br>Всего проголосовало: $n</td></tr></table> 
"; 
} }
else 

?> 
<FORM METHOD="POST" name=vote action="?id=add_vote"> 
<center><TABLE BORDER=0 width="119"><TR><TD><TABLE BORDER=0 width="120"> 
<TR><TD><b><font face="Courier New" size="2">Любимый язык?:</font></b></TD></TR> 

<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=1 style="font-weight: 700"></font><b><font size="2" face="Courier New">PHP</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=2 style="font-weight: 700"></font><b><font size="2" face="Courier New">Delphi</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=3 style="font-weight: 700"></font><b><font size="2" face="Courier New">C++</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=4 style="font-weight: 700"></font><b><font size="2" face="Courier New">Assembler</font></b></TD></TR> 

<TR><TD> 
<center><INPUT TYPE=Submit NAME=vote VALUE=" Отправить "></center> 
</TD></TR> 
</TABLE></center></TD></TR></TABLE></FORM> 

<?php 

?> 

   
 
 автор: ZetRider   (16.03.2006 в 20:39)   письмо автору
 
   для: midav   (16.03.2006 в 19:22)
 

parse error, unexpected T_ELSE in строке else

   
 
 автор: midav   (16.03.2006 в 20:49)   письмо автору
 
   для: midav   (16.03.2006 в 14:34)
 

ну тогда попробуем переделать код

<? 
$file 
"log/vote.txt"
$a file($file); 
$i 1$fi Count($a); 
$n 0
while (
$i <= $fi): 
$a[$i] = trim(str_replace ("\n",""$a[$i])); 
$n $n+$a[$i]; 
$i++; 
endwhile; 

$a[$answer]++; $n++; 

$rez "Результаты голосования!\n".$a[1]. 
"\n".$a[2]."\n".$a[3]."\n".$a[4]; 

$ips=file("log/vote_ban.txt"); 
for(
$u=0$u<sizeof($ips); $u++) {
$dt=explode(""$ips[$u]);
if(
$_SERVER['REMOTE_ADDR']==trim($dt[0])) { 

echo
"<table align=center width=300 height=300> 
<tr><td align=center>Вы голосовали!<br>Результат: 
<br>PHP - <b>
$a[1]</b> 
<br>Delphi - <b>
$a[2]</b> 
<br>C++ - <b>
$a[3]</b> 
<br>Assembler - <b>
$a[4]</b> 
<br>Всего проголосовало: 
$n</td></tr></table> "

else 

?> 
<FORM METHOD="POST" name=vote action="?id=add_vote"> 
<center><TABLE BORDER=0 width="119"><TR><TD><TABLE BORDER=0 width="120"> 
<TR><TD><b><font face="Courier New" size="2">Любимый язык?:</font></b></TD></TR> 

<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=1 style="font-weight: 700"></font><b><font size="2" face="Courier New">PHP</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=2 style="font-weight: 700"></font><b><font size="2" face="Courier New">Delphi</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=3 style="font-weight: 700"></font><b><font size="2" face="Courier New">C++</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=4 style="font-weight: 700"></font><b><font size="2" face="Courier New">Assembler</font></b></TD></TR> 

<TR><TD> 
<center><INPUT TYPE=Submit NAME=vote VALUE=" Отправить "></center> 
</TD></TR> 
</TABLE></center></TD></TR></TABLE></FORM> 

<?php 

?> 

   
 
 автор: ZetRider   (16.03.2006 в 21:25)   письмо автору
 
   для: midav   (16.03.2006 в 20:49)
 

Вот оптимальный вариант но изза функции foreach ($ips as $ip) { } невыводится форма.. :

<? 
$file 
"log/vote.txt"
$a file($file); 
$i 1$fi Count($a); 
$n 0
while (
$i <= $fi): 
$a[$i] = trim(str_replace ("\n",""$a[$i])); 
$n $n+$a[$i]; 
$i++; 
endwhile; 

$a[$answer]++; $n++; 

$rez "Результаты голосования!\n".$a[1]. 
"\n".$a[2]."\n".$a[3]."\n".$a[4]; 

$ips=file("log/vote_ban.txt"); 

foreach (
$ips as $ip

if(
$_SERVER['REMOTE_ADDR']==trim($ip))


echo
"Вы голосовали!<br>Результат: 
<br>PHP - <b>
$a[1]</b> 
<br>Delphi - <b>
$a[2]</b> 
<br>C++ - <b>
$a[3]</b> 
<br>Assembler - <b>
$a[4]</b> 
<br>Всего проголосовало: 
$n 
"


else

echo
'
<FORM METHOD="POST" name=vote action="?id=add_vote"> 
<center><TABLE BORDER=0 width="119"><TR><TD><TABLE BORDER=0 width="120"> 
<TR><TD><b><font face="Courier New" size="2">Любимый язык?:</font></b></TD></TR> 

<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=1 style="font-weight: 700"></font><b><font size="2" face="Courier New">PHP</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=2 style="font-weight: 700"></font><b><font size="2" face="Courier New">Delphi</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=3 style="font-weight: 700"></font><b><font size="2" face="Courier New">C++</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=4 style="font-weight: 700"></font><b><font size="2" face="Courier New">Assembler</font></b></TD></TR> 

<TR><TD> 
<center><INPUT TYPE=Submit NAME=vote VALUE=" Отправить "></center> 
</TD></TR> 
</TABLE></center></TD></TR></TABLE></FORM> 
'
;
}}
?>

   
 
 автор: midav   (16.03.2006 в 22:29)   письмо автору
 
   для: ZetRider   (16.03.2006 в 21:25)
 

Ну так я тебе дал рабочий вариант сверху. :) Как у тебя в файле ип адреса прописаны?

   
 
 автор: kasmanaft   (17.03.2006 в 11:12)   письмо автору
 
   для: ZetRider   (16.03.2006 в 21:25)
 

вот ты... если знаешь что все дело в foreach так сделай без него... в чем проблема? три дня уже сидишь....

>только правильнее было бы проверить нет ли в файле нашего ip, а если есть то не выводить
>сразу результат голосования, а какой-нить переменной присвоить true (или 1)... а потом
>смотреть если наша переменная тру - выводим результат голосования, если фолс - форму....
>(уже не в цикле)


$perem = 0;
foreach ($ips as $ip) 

if($_SERVER['REMOTE_ADDR']==trim($ip)) 
             $perem = 1;
}

if ($perem == 1)

echo"Вы голосовали!<br>Результат: 
<br>PHP - <b>$a[1]</b> 
<br>Delphi - <b>$a[2]</b> 
<br>C++ - <b>$a[3]</b> 
<br>Assembler - <b>$a[4]</b> 
<br>Всего проголосовало: $n 
"; 

else 

echo' 
<FORM METHOD="POST" name=vote action="?id=add_vote"> 
<center><TABLE BORDER=0 width="119"><TR><TD><TABLE BORDER=0 width="120"> 
<TR><TD><b><font face="Courier New" size="2">Любимый язык?:</font></b></TD></TR> 

<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=1 style="font-weight: 700"></font><b><font size="2" face="Courier New">PHP</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=2 style="font-weight: 700"></font><b><font size="2" face="Courier New">Delphi</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=3 style="font-weight: 700"></font><b><font size="2" face="Courier New">C++</font></b></TD></TR> 
<TR><TD><font face="Courier New"> 
    <INPUT TYPE=radio NAME=answer VALUE=4 style="font-weight: 700"></font><b><font size="2" face="Courier New">Assembler</font></b></TD></TR> 

<TR><TD> 
<center><INPUT TYPE=Submit NAME=vote VALUE=" Отправить "></center> 
</TD></TR> 
</TABLE></center></TD></TR></TABLE></FORM> 
'; 
}
?>

   
 
 автор: ZetRider   (17.03.2006 в 14:04)   письмо автору
 
   для: kasmanaft   (17.03.2006 в 11:12)
 

Спасиб! тема закрыта!)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования