[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с записью и чтением из файла
warrior512
Добрый день уважаемые PRO.
Сделал такую страничку http://blablablahamyha.500mb.net/page.php
счетчик взял готовый из интернета. Мне нужно сделать так чтоб перед ссылкой "темная сторона" была форма типа: "назовите свое имя" , и будет отдельный блок, где будет выводится список всех имен кто принял темную сторону. И еще хотелось бы изменить счетчик так, чтобы с одного ip можно было 1 раз "вступить на темную сторону". нужно готовое решение скрипта. Да, и без использование баз данных, чисто на файлах.
Спасибо.

<?php
if(!file_exists('counter.txt')){
file_put_contents('counter.txt', '0');
}
if($_GET['click'] == 'yes'){
file_put_contents('counter.txt', ((int) file_get_contents('counter.txt')) + 1);
header('Location: ' . $_SERVER['SCRIPT_NAME']);
die;
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<head>
<title></title>
<meta
http-equiv="content-type" content="text/html; charset=windows-1251" />
<meta
name="description" content="" />
<meta
name="keywords" content="" />
<link
rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div
id="text">
<p>
Переходи на тёмную сторону<br />...у нас печеньки<br />нас уже <?php echo file_get_contents('counter.txt'); ?></p>
<a
class="dark" href="?click=yes">Темная сторона</a>
</div>
<div
id="copy">
<p>
© by К@ЛЬЯНЫЧ</p>
</div>
</body>
</html>





Спустя 13 минут, 57 секунд (28.07.2011 - 15:58) warrior512 написал(а):
выложил листинг

Спустя 2 часа, 7 минут, 5 секунд (28.07.2011 - 18:05) Winston написал(а):

 ! 

М
Измени название темы, иначе придется ее закрыть !
PHPprogrammer

Спустя 23 минуты, 58 секунд (28.07.2011 - 18:29) warrior512 написал(а):
Еще забыл, чтобы было ограничение на количество символов в имени и чтобы имена не повторялись.

Как это реализовать?

Спустя 23 минуты, 59 секунд (28.07.2011 - 18:53) Winston написал(а):
Длину файла можно проверить mb_strlen($name);
Цитата (warrior512 @ 28.07.2011 - 18:29)
и чтобы имена не повторялись.

А ты их где-то записываешь ?

Спустя 6 минут, 32 секунды (28.07.2011 - 19:00) warrior512 написал(а):
Ну вот хочу это организовать как-то я в php 0 просто приспичило сегодня сделать такую чтуку




Спустя 8 минут, 8 секунд warrior512 написал(а):
Хочу чтобы было так:
юзер вводит имя в форму, кликает ссылку "Темная сторона" счетчик прибавляется на 1 и его имя появляется в отдельном блоке div, где будут перечислятся все имена вступивших.

Тобиш, я понимаю, что нада чтобы его имя добавилось в определенный файл с помощью php и скрипт вывел содержимое файла в отдельном блоке.

Чтобы не допускалось повторение имен, ввод только 1 имени с 1 ip, ограничение на количество символов в имени.

Спустя 11 минут, 14 секунд (28.07.2011 - 19:11) Winston написал(а):
warrior512
Давай за 5$ за тебя сделаю ? rolleyes.gif

Спустя 1 минута, 28 секунд (28.07.2011 - 19:13) warrior512 написал(а):
денег нет нема. я не в коммерческих целях делаю, а для себя. =(



Спустя 2 минуты, 12 секунд warrior512 написал(а):
а так я за этим и пришел сюда, чтобы за меня сделали я же не пхпешник.

Спустя 3 минуты, 48 секунд (28.07.2011 - 19:16) Winston написал(а):
Цитата (warrior512 @ 28.07.2011 - 19:13)
я за этим и пришел сюда, чтобы за меня сделали я же не пхпешник

То, что ты не пхпешник тебя не от чего не освобождает smile.gif
Если хочешь, чтобы за тебя сделали - плати

Спустя 1 минута, 36 секунд (28.07.2011 - 19:18) warrior512 написал(а):
за что тут платить? я знаю что для вас это как 2 пальца.
ну помогите плз.

Спустя 3 минуты, 44 секунды (28.07.2011 - 19:22) warrior512 написал(а):

<?php
if(!file_exists('counter.txt')){
file_put_contents('counter.txt', '0');
}
if($_GET['click'] == 'yes'){
$ip=$_SERVER['REMOTE_ADDR'];
$file=file_get_contents('users_ip.txt');
$file=explode("|",$file);
if(!in_array($ip,$file))
{
file_put_contents('counter.txt', ((int) file_get_contents('counter.txt')) + 1);
$file[]=$ip;
$file=implode("|",$file);
file_put_contents('users_ip.txt',$file);
header('Location: ' . $_SERVER['SCRIPT_NAME']);
die;
}
else
{
echo "Вы уже голосовали";
header('Location: ' . $_SERVER['SCRIPT_NAME']);
}
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<
head>
<
title></title>
<
meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<
meta name="description" content="" />
<
meta name="keywords" content="" />
<
link rel="stylesheet" href="style.css" type="text/css" />
</
head>
<
body>
<
div id="text">
<
p>Переходи на тёмную сторону<br />...у нас печеньки<br />нас уже <?php echo file_get_contents('counter.txt'); ?></p>
<
form method="POST" action="<?=$_SERVER['SCRIPT_NAME']?>">
Введите Ваше имя: <input type="text" name="name">
<
a class="dark" href="?click=yes">Темная сторона</a>
</
div>
<
div id="users">
<?php echo file_get_contents('users_ip.txt'); ?>
</div>
<
div id="copy">
<
p>© by К@ЛЬЯНЫЧ</p>
</
div>
</
body>
</
html>


http://blablablahamyha.500mb.net/page2/page2.php

где тут ошибка?

Спустя 1 минута, 23 секунды (28.07.2011 - 19:23) Winston написал(а):
Хорошо, если нечем платить то писать за тебя не буду, но принцип попытаюсь объяснить.
Цитата (warrior512 @ 28.07.2011 - 19:00)
ввод только 1 имени с 1 ip

Если юзер нажимает на кнопку проверяем существование его IP в черном списке(файле) если нету, значит проверяем длину имени с помощью mb_strlen или strlen в зависимости от кодировки. Если все Ok то записываем в файл.



Спустя 1 минута, 17 секунд PHPprogrammer написал(а):
Пока я писал принцип, ты уже код выложил biggrin.gif



Спустя 2 минуты, 24 секунды PHPprogrammer написал(а):
Цитата (warrior512 @ 28.07.2011 - 19:22)
где тут ошибка?

А в чем ошибка заключается ?

Спустя 3 минуты, 30 секунд (28.07.2011 - 19:27) warrior512 написал(а):
пишет вместо имени ip



Спустя 1 минута, 6 секунд warrior512 написал(а):
попробуйте ссыль сами все увидите



Спустя 3 минуты, 7 секунд warrior512 написал(а):
Затея же прикольная, потом зделаю страницу с люком или с ёдой, чтобы вступить на сторону света

Спустя 3 минуты, 53 секунды (28.07.2011 - 19:30) Winston написал(а):
Цитата (warrior512 @ 28.07.2011 - 19:27)
пишет вместо имени ip

А где ты в файл записываешь имя ?

Спустя 1 минута, 1 секунда (28.07.2011 - 19:31) warrior512 написал(а):
---, мне этот код тоже подсказали.

Спустя 4 минуты, 7 секунд (28.07.2011 - 19:36) warrior512 написал(а):
сорри за сквернословие

Спустя 2 минуты, 3 секунды (28.07.2011 - 19:38) Winston написал(а):
Создай файл users.txt
Цитата (warrior512 @ 28.07.2011 - 19:22)
file_put_contents('users_ip.txt',$file);

После этого напиши еще
if(isset($_POST['name']))
file_put_contents('users.txt',$_POST['name'], FILE_APPEND);

Цитата (warrior512 @ 28.07.2011 - 19:22)
  <?php echo file_get_contents('users_ip.txt'); ?>

Вместо этого так
echo file_get_contents('users.txt');

Спустя 10 минут, 23 секунды (28.07.2011 - 19:48) warrior512 написал(а):
не получается, файл users.txt не создается может в форме косяк?

Спустя 4 минуты, 49 секунд (28.07.2011 - 19:53) Winston написал(а):
А ты его вручную создай, и забрось на сервер.
Или же в начале файла напиши
if(!file_exists('users.txt'))
$F = fopen('users.txt', "a+");
fclose($F);

Спустя 6 минут, 23 секунды (28.07.2011 - 19:59) warrior512 написал(а):
Цитата
А ты его вручную создай, и забрось на сервер.
Или же в начале файла напиши
if(!file_exists('users.txt'))
$F = fopen('users.txt', "a+");
fclose($F);

файл появился но в него ничего не записывается.


<?php
if(!file_exists('users.txt'))
$F = fopen('users.txt', "a+");
fclose($F);
if(!file_exists('counter.txt')){
file_put_contents('counter.txt', '0');
}
if($_GET['click'] == 'yes'){
$ip=$_SERVER['REMOTE_ADDR'];
$file=file_get_contents('users_ip.txt');
$file=explode("|",$file);
if(!in_array($ip,$file))
{
file_put_contents('counter.txt', ((int) file_get_contents('counter.txt')) + 1);
$file[]=$ip;
$file=implode("|",$file);
file_put_contents('users_ip.txt',$file);
if(isset($_POST['name']))
file_put_contents('users.txt',$_POST['name'], FILE_APPEND);
header('Location: ' . $_SERVER['SCRIPT_NAME']);
die;
}
else
{
echo "Вы уже голосовали";
header('Location: ' . $_SERVER['SCRIPT_NAME']);
}
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<
head>
<
title></title>
<
meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<
meta name="description" content="" />
<
meta name="keywords" content="" />
<
link rel="stylesheet" href="style.css" type="text/css" />
</
head>
<
body>
<
div id="text">
<
p>Переходи на тёмную сторону<br />...у нас печеньки<br />нас уже <?php echo file_get_contents('counter.txt'); ?></p>
<
form method="POST" action="<?=$_SERVER['SCRIPT_NAME']?>">
Введите Ваше имя: <input type="text" name="name">
<
a class="dark" href="?click=yes">Темная сторона</a>
</
div>
<
div id="users">
<?php echo file_get_contents('users.txt'); ?>
</div>
<
div id="copy">
<
p>© by К@ЛЬЯНЫЧ</p>
</
div>
</
body>
</
html>

Спустя 7 минут, 47 секунд (28.07.2011 - 20:07) warrior512 написал(а):
PHPprogrammer вы здесь?

Спустя 25 секунд (28.07.2011 - 20:07) Winston написал(а):
Цитата (warrior512 @ 28.07.2011 - 19:59)
die;

Так не пишется, нужно либо die() либо просто exit;



Спустя 19 секунд PHPprogrammer написал(а):
Попробуй права на файл выставить 777

Спустя 1 минута, 36 секунд (28.07.2011 - 20:09) warrior512 написал(а):
Цитата
Попробуй права на файл выставить 777

а как это сделать?

Спустя 1 минута, 15 секунд (28.07.2011 - 20:10) Winston написал(а):
Какой у тебя ftp клиент ?

Спустя 35 секунд (28.07.2011 - 20:11) warrior512 написал(а):
я через tc заливаю



Спустя 1 минута, 12 секунд warrior512 написал(а):
изменил die; на die(), ничего не изменилось

Спустя 1 минута, 20 секунд (28.07.2011 - 20:12) Winston написал(а):
Я им не пользуюсь потому не знаю.
Может это поможет

Спустя 3 минуты, 8 секунд (28.07.2011 - 20:15) warrior512 написал(а):
Цитата
Попробуй права на файл выставить 777

там ничего про это не написано, что это вабще?

Спустя 1 минута, 41 секунда (28.07.2011 - 20:17) Winston написал(а):
Цитата (warrior512 @ 28.07.2011 - 20:15)
там ничего про это не написано, что это вабще

Там вниз страницы про атрибуты файлов и chmod написано.

Спустя 3 минуты, 37 секунд (28.07.2011 - 20:21) warrior512 написал(а):
кстати там где список фалов напротив users.txt стоит атрибут 666

Спустя 1 минута, 44 секунды (28.07.2011 - 20:22) Winston написал(а):
Цитата (warrior512 @ 28.07.2011 - 20:21)
стоит атрибут 666

Странно должно записывать...
Попробуй все таки 777 выставить
И вверху файла написать.
erorr_reporting(E_ALL);

Спустя 2 минуты, 26 секунд (28.07.2011 - 20:25) warrior512 написал(а):
поменял на 777 результат тот же

Спустя 3 минуты, 33 секунды (28.07.2011 - 20:28) warrior512 написал(а):
Цитата
erorr_reporting(E_ALL);

теперь страница вобще не загружается

Спустя 7 минут, 40 секунд (28.07.2011 - 20:36) Winston написал(а):
Цитата (warrior512 @ 28.07.2011 - 20:28)
теперь страница вобще не загружается

:D
Теперь все понятно....
Во первых нужно так написать
if(!file_exists('users.txt'))
{
$f = fopen('users.txt', "a+");
fclose($f);
}

Во вторых, ты открыл тег <form> но не закрыл его </form>
В третьих, с какого перепуга данные из формы отправляться на сервер если ты нажимаешь на ссылку, а не на кнопку.
Это
if($_GET['click'] == 'yes'){

замени на это
if(isset($_POST['go'])){

Добавь кнопку
<input type="submit" class="dark" name="go" value="Темная сторона">

И закрой тег form после ее

Спустя 56 секунд (28.07.2011 - 20:37) warrior512 написал(а):
тогда как-то нада связать счетчик с кнопкой

Спустя 6 секунд (28.07.2011 - 20:37) Winston написал(а):
else
{
echo "Вы уже голосовали";
header('Location: ' . $_SERVER['SCRIPT_NAME']);
}

Замени на
else
{
header('Location: ' . $_SERVER['SCRIPT_NAME']);
exit;
}




Спустя 30 секунд PHPprogrammer написал(а):
Цитата (warrior512 @ 28.07.2011 - 20:37)
тогда нада связать счетчик с кнопкой

Ты сначала попробуй.
Зачем связывать ?

Спустя 7 минут, 59 секунд (28.07.2011 - 20:45) warrior512 написал(а):
блин чет не катит, проверьте код пожалуйста терь весь, ато копипастом может че не так сделал


<?php

if(!file_exists('users.txt'))
{
$f = fopen('users.txt', "a+");
fclose($f);
}
if(!file_exists('counter.txt')){
file_put_contents('counter.txt', '0');
}
if(isset($_POST['go'])){
$ip=$_SERVER['REMOTE_ADDR'];
$file=file_get_contents('users_ip.txt');
$file=explode("|",$file);
if(!in_array($ip,$file))
{
file_put_contents('counter.txt', ((int) file_get_contents('counter.txt')) + 1);
$file[]=$ip;
$file=implode("|",$file);
file_put_contents('users_ip.txt',$file);
if(isset($_POST['name']))
file_put_contents('users.txt',$_POST['name'], FILE_APPEND);
header('Location: ' . $_SERVER['SCRIPT_NAME']);
exit;
}
else
{
header('Location: ' . $_SERVER['SCRIPT_NAME']);
exit;
}
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<
head>
<
title></title>
<
meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<
meta name="description" content="" />
<
meta name="keywords" content="" />
<
link rel="stylesheet" href="style.css" type="text/css" />
</
head>
<
body>
<
div id="text">
<
p>Переходи на тёмную сторону<br />...у нас печеньки<br />нас уже <?php echo file_get_contents('counter.txt'); ?></p>
<
form method="POST" action="<?=$_SERVER['SCRIPT_NAME']?>"><input type="submit" class="dark" name="go" value="Темная сторона"></form>
Введите Ваше имя: <input type="text" name="name">
<
a class="dark" href="?click=yes">Темная сторона</a>
</
div>
<
div id="users">
<?php echo file_get_contents('users.txt'); ?>
</div>
<
div id="copy">
<
p>© by К@ЛЬЯНЫЧ</p>
</
div>
</
body>
</
html>

Спустя 10 минут, 9 секунд (28.07.2011 - 20:55) warrior512 написал(а):
Цитата
<input type="submit" class="dark" name="go" value="Темная сторона"></form>

блин лоханулся, исправил, все работает!!!!!!!!=)

Спустя 2 минуты, 1 секунда (28.07.2011 - 20:57) Winston написал(а):
Блин, у тебя реально говнокод получился, еще и вперемешку, никакого стиля.
Для оформления php кода попробуй этим воспользоватся.
Чтобы имя добавлялось, </form> поставь после поля в котором имя вводится.

Спустя 3 минуты, 10 секунд (28.07.2011 - 21:00) warrior512 написал(а):
да, теперь еще одна неувязочка, надо чтобы теперь новые имена вписывались в начало файла, чтобы в списке они были первыми и чтобы они как-нибудь пазделялись, типа имя | имя.

Спустя 1 минута, 37 секунд (28.07.2011 - 21:02) warrior512 написал(а):
http://blablablahamyha.500mb.net/page2/page2.php

попробуйте сами, стиль потом установлю

Спустя 2 минуты, 52 секунды (28.07.2011 - 21:05) Winston написал(а):
Цитата (warrior512 @ 28.07.2011 - 21:00)
новые имена вписывались в начало файла, чтобы в списке они были первыми

Попробуй это
            if(isset($_POST['name']))
{
file_put_contents('users.txt', $_POST['name'], FILE_APPEND);
}

Заменить на это

if(isset($_POST['name']))
{
$fl = fopen('users.txt', "r+");
fwrite($fl, $_POST['name'] . "\n");
fclose($fl);
}

Спустя 17 секунд (28.07.2011 - 21:05) warrior512 написал(а):
<?php 

if(!file_exists('users.txt'))
{
$f = fopen('users.txt', "a+");
fclose($f);
}

if(!file_exists('counter.txt'))
{
file_put_contents('counter.txt', '0');
}

if(isset($_POST['go']))
{
$ip = $_SERVER['REMOTE_ADDR'];
$file = file_get_contents('users_ip.txt');
$file = explode("|", $file);

if(!in_array($ip, $file))
{
file_put_contents('counter.txt', ((int)file_get_contents('counter.txt')) + 1);
$file[] = $ip;
$file = implode("|", $file);
file_put_contents('users_ip.txt', $file);

if(isset($_POST['name']))
{
file_put_contents('users.txt', $_POST['name'], FILE_APPEND);
}
header('Location: '. $_SERVER['SCRIPT_NAME']);
exit;
}
else
{
header('Location: '. $_SERVER['SCRIPT_NAME']);
exit;
}
}

?>

Спустя 4 минуты, 59 секунд (28.07.2011 - 21:10) warrior512 написал(а):
все норм, имена записываются в начало, а как терь их разделить?

Спустя 1 минута, 54 секунды (28.07.2011 - 21:12) warrior512 написал(а):
нет не норм, теперь имя заменяется на новое

Спустя 36 секунд (28.07.2011 - 21:13) Winston написал(а):
На выводе вместо
<?php echo file_get_contents('users.txt'); ?>

попробуй
<?php echo nl2br(file_get_contents('users.txt')); ?>

Спустя 3 минуты (28.07.2011 - 21:16) warrior512 написал(а):
хотя заменяются буквы,
я сеачала ввел "вася"
потом "пет" специально остановился и не дописал "я"
получилось "петя"



Спустя 48 секунд warrior512 написал(а):
так он в файл не правильно записывает



Спустя 2 минуты, 17 секунд warrior512 написал(а):
Цитата
попробуй
<?php echo nl2br(file_get_contents('users.txt')); ?>

не помогло



Спустя 5 минут, 40 секунд warrior512 написал(а):
я так понял скрипт ставит курсор в начало файла и ппишет новые символы заменяя старые.



Спустя 17 минут, 33 секунды warrior512 написал(а):
PHPprogrammer где же вы?

Спустя 1 час, 2 минуты, 5 секунд (28.07.2011 - 22:18) warrior512 написал(а):
лан я в люльку

Спустя 20 часов, 36 минут, 17 секунд (29.07.2011 - 18:54) warrior512 написал(а):
PHPprogrammer вы тут? продолжим?

Спустя 5 минут, 14 секунд (29.07.2011 - 18:59) Winston написал(а):
Цитата (warrior512 @ 29.07.2011 - 18:54)
PHPprogrammer вы тут?

Меня здесь нету laugh.gif

Спустя 27 минут, 28 секунд (29.07.2011 - 19:27) warrior512 написал(а):
вот что у меня получилось и работает http://blablablahamyha.500mb.net/index.php

<?php

if(!file_exists('temp.txt'))
{
$f = fopen('temp.txt', "a+");
fclose($f);
}

if(!file_exists('users.txt'))
{
$f = fopen('users.txt', "a+");
fclose($f);
}

if(!file_exists('counter.txt'))
{
file_put_contents('counter.txt', '0');
}

if(isset($_POST['go']))
{
$ip = $_SERVER['REMOTE_ADDR'];
$file = file_get_contents('users_ip.txt');
$file = explode("|", $file);

if(!in_array($ip, $file))
{
file_put_contents('counter.txt', ((int)file_get_contents('counter.txt')) + 1);
$file[] = $ip;
$file = implode("|", $file);
file_put_contents('users_ip.txt', $file);

if(isset($_POST['name']))
{

$file_tmp="temp.txt"; // временный файл
$str=$_POST['name']." |";

// проверяем, не было ли сбоя в предыдущем запуске скрипта

// копируем содержимое файла в tmp

if(copy('users.txt', $file_tmp))
{
// удачно скопировался, можно перезаписывать основной файл
if($w=fopen('users.txt',"w"))
{
flock($w,2); // локируем файл
fwrite($w,$str."\n"); // записываем первую строку

if(!$r=fopen($file_tmp,"r")) die("can't open file");
flock($r,1);
while($str=fgets($r,10240)) // читаем построчно
{
fputs($w,$str); // пишем построчно
}
flock($r,3);
fclose($r);
flock($w,3);
fclose($w);
unlink($file_tmp);
}
}

}

header('Location: '. $_SERVER['SCRIPT_NAME']);
exit;
}
else
{
header('Location: '. $_SERVER['SCRIPT_NAME']);
exit;
}
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">
<
head>
<
title></title>
<
meta http-equiv="content-type" content="text/html; charset=windows-1251" />
<
meta name="description" content="" />
<
meta name="keywords" content="" />
<
link rel="stylesheet" href="style.css" type="text/css" />
</
head>
<
body>
<
div id="text">
<
p>Переходи на тёмную сторону<br />...у нас печеньки<br />нас уже <?php echo file_get_contents('counter.txt'); ?></p>
<
form method="POST" action="<?=$_SERVER['SCRIPT_NAME']?>">
<
p class="input">Введите Ваше имя:</p> <input maxlength="15" type="text" name="name"> <input type="submit" class="dark" name="go" value="Темная сторона"></form>
</
div>
<
div id="users">
<?php echo file_get_contents('users.txt'); ?>
</div>
<
div id="copy">
<
p>© by К@ЛЬЯНЫЧ</p>
</
div>
</
body>
</
html>


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

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

И еще хотелось бы сделать так чтобы или нельзя было вводить пустое имя или для них ввелся отдельный счетчик тех кто ввел пустые имена. и выводить типа так. "анонимусов принятых темную сторону: 12" примерно так. =)

извените за наглость)

Спустя 1 минута, 12 секунд (29.07.2011 - 19:28) warrior512 написал(а):
// проверяем, не было ли сбоя в предыдущем запуске скрипта

после этого был кусок скрипта который я удалил, он по моему проверял что-то у временного файла, и он как-то давал сбой в скрипте.

Спустя 1 час, 21 минута, 47 секунд (29.07.2011 - 20:50) warrior512 написал(а):
PHPprogrammer не поможешь?

Спустя 11 минут, 22 секунды (29.07.2011 - 21:01) Winston написал(а):
Цитата (warrior512 @ 29.07.2011 - 19:27)
так чтобы или нельзя было вводить пустое имя

Это
if(isset($_POST['name']))

Замени на это
if(!empty($_POST['name']))

И пустое имя не пройдет.
Цитата (warrior512 @ 29.07.2011 - 19:27)
И возможно ли реализовать чтобы скрипт не позволял вводить маты

Простейший фильтр мата
$mat = Array('плохое слово', 'плохо');
$str = "Начало текста , Плохое слово текст, плохо куча текста";
foreach($mat AS $m)
$str = preg_replace("#(".$m.")#iu", '...', $str);

echo $str;

Спустя 11 минут, 8 секунд (29.07.2011 - 21:12) warrior512 написал(а):
Цитата
Это
if(isset($_POST['name']))

Замени на это
if(!empty($_POST['name']))


не помогло

Спустя 14 минут, 57 секунд (29.07.2011 - 21:27) warrior512 написал(а):
тобиш помогло, пустые имена не записываются в файл, но счетчик прибавляется на 1

Спустя 45 минут, 47 секунд (29.07.2011 - 22:13) Winston написал(а):
Цитата (warrior512 @ 29.07.2011 - 21:27)
тобиш помогло, пустые имена не записываются в файл, но счетчик прибавляется на 1

Это
if(!in_array($ip, $file))

Замени на
if(!in_array($ip, $file) && !empty($_POST['name']))

Спустя 9 дней, 20 часов, 38 минут, 24 секунды (9.08.2011 - 18:51) HAKIM написал(а):
Winston, ну нервы у тебя железные biggrin.gif
Да перепиши код сам как полагается laugh.gif (всё равно пусть потом автор разбирает по готовому примеру код и учится)

Спустя 1 час, 15 минут, 4 секунды (9.08.2011 - 20:06) HAKIM написал(а):
warrior512, Держи :P


<?php
if(!is_file('users.txt')){
$f = fopen('users.txt', 'a+');
fclose($f);
}

if(!is_file('counter.txt')){
$f = fopen('counter.txt', 'w+');
fputs($f,0);
fclose($f);
}
if(isset($_POST['submit'])){
$ip = htmlspecialchars(trim($_SERVER['REMOTE_ADDR']));
if(empty($_POST['name'])){
echo 'Введите повторно свой ник!';
}
else{
$name = htmlspecialchars(trim($_POST['name']));
$file = file('users.txt');
$true = 0;
$kol = sizeof($file);
if($kol == 0){
file_put_contents('users.txt',$name.'||'.$ip."\r\n");
file_put_contents('counter.txt',1);
}
else{

for($i=0;$i<$kol; $i++){
$ex = explode('||',$file[$i]);
if($name == $ex[0] && $ip == trim($ex[1])){
$true = 1;
}

}

if($true == 1){
echo 'Вы уже выбрали нашу сторону ранее!!';
}
else{
$im = implode("",$file);
$file = $name.'||'.$ip."\r\n".$im;


file_put_contents('users.txt',$file);
$c = file_get_contents('counter.txt');
$c++;
file_put_contents('counter.txt',$c);
}
}

}
}

?>
<html>
<
head>
<
title></title>
<
meta http-equiv="content-type" content="text/html; charset=utf-8" />
<
meta name="description" content="" />
<
meta name="keywords" content="" />
<
link rel="stylesheet" href="style.css" type="text/css" />
</
head>
<
body>






<
div id="text">
<
p>Переходи на тёмную сторону<br />...у нас печеньки<br />нас уже <?php echo file_get_contents('counter.txt'); ?></p>
<
form method="post">
Введите свой ник:<br />
<
input type="text" name="name"><br />
<
input type="submit" name="submit" value="Вступить">
</
form>
</
div>
<
div>
<?php
$file = file('users.txt');
$kol = sizeof($file);
if($kol == 0){
echo 0;
}
else{
for($i=0;$i<$kol;$i++){
$ex = explode('|',$file[$i]);
echo '<div>'.$ex[0].'</div>';
}
}

?>
</div>
<
div id="copy">
<
p>© by К@ЛЬЯНЫЧ</p>
</
div>
</
body>
</
html>

Спустя 4 часа, 19 минут, 10 секунд (10.08.2011 - 00:25) Winston написал(а):
Цитата (HAKIM @ 9.08.2011 - 18:51)
Да перепиши код сам как полагается

Зачем ?
Цитата (HAKIM @ 9.08.2011 - 18:51)
всё равно пусть потом автор разбирает по готовому примеру код и учится

А вот автор вряд ли будет сам разбирать, а вот когда по кускам ему объясняешь то может, что и зацепится в голове у него smile.gif
Цитата (HAKIM @ 9.08.2011 - 20:06)
warrior512, Держи tongue.gif

Вряд ли это уже актуально wink.gif

Спустя 14 часов, 39 минут, 42 секунды (10.08.2011 - 15:05) HAKIM написал(а):
Так хоть нервы не тратить wink.gif
А автор если хочет далее в php шарить, так разберётся что по чём!
Цитата (HAKIM @ 9.08.2011 - 18:51)
всё равно пусть потом автор разбирает по готовому примеру код и учится

А вот автор вряд ли будет сам разбирать, а вот когда по кускам ему объясняешь то может, что и зацепится в голове у него smile.gif
Цитата (HAKIM @ 9.08.2011 - 20:06)
warrior512, Держи tongue.gif

Вряд ли это уже актуально wink.gif
По мне лучше написать , чем потом мучиться, и детально описывать действия что на что менять!
Кстати, я так понял ты сам код не переделывал в рабочий вид! т.е. Предлагал примерные варианты "мол из-за чего не робит скрипт"
А вот написал бы готовый код, а потом уже То на то поменяй а это на это....(если уж научить хочешь) хотя он копипастом всё равно заюзает и ничего не поймёт!если ты говоришь
Цитата (HAKIM @ 9.08.2011 - 18:51)
всё равно пусть потом автор разбирает по готовому примеру код и учится

А вот автор вряд ли будет сам разбирать, а вот когда по кускам ему объясняешь то может, что и зацепится в голове у него

Так что зачем прилагать усилия научить кого-то если он сам этого не желает! Если он будет менять что то копипастом, то явно в голове ничего не поменяется, так как значение функций начинающему неизвесты, и что юзать в том или другом случае.
Автор извини канешь, но не в обиду!
php.su Справочник по функцияв и т.д. и многое другое
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.