Сделал такую страничку 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, ограничение на количество символов в имени.
Спустя 8 минут, 8 секунд warrior512 написал(а):
Хочу чтобы было так:
юзер вводит имя в форму, кликает ссылку "Темная сторона" счетчик прибавляется на 1 и его имя появляется в отдельном блоке div, где будут перечислятся все имена вступивших.
Тобиш, я понимаю, что нада чтобы его имя добавилось в определенный файл с помощью php и скрипт вывел содержимое файла в отдельном блоке.
Чтобы не допускалось повторение имен, ввод только 1 имени с 1 ip, ограничение на количество символов в имени.
Спустя 11 минут, 14 секунд (28.07.2011 - 19:11) Winston написал(а):
warrior512
Давай за 5$ за тебя сделаю ?
Давай за 5$ за тебя сделаю ?
Спустя 1 минута, 28 секунд (28.07.2011 - 19:13) warrior512 написал(а):
денег нет нема. я не в коммерческих целях делаю, а для себя. =(
Спустя 2 минуты, 12 секунд warrior512 написал(а):
а так я за этим и пришел сюда, чтобы за меня сделали я же не пхпешник.
Спустя 2 минуты, 12 секунд warrior512 написал(а):
а так я за этим и пришел сюда, чтобы за меня сделали я же не пхпешник.
Спустя 3 минуты, 48 секунд (28.07.2011 - 19:16) Winston написал(а):
Цитата (warrior512 @ 28.07.2011 - 19:13) |
я за этим и пришел сюда, чтобы за меня сделали я же не пхпешник |
То, что ты не пхпешник тебя не от чего не освобождает
Если хочешь, чтобы за тебя сделали - плати
Спустя 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 написал(а):
Пока я писал принцип, ты уже код выложил
Спустя 2 минуты, 24 секунды PHPprogrammer написал(а):
Цитата (warrior512 @ 28.07.2011 - 19:22) |
где тут ошибка? |
А в чем ошибка заключается ?
Спустя 3 минуты, 30 секунд (28.07.2011 - 19:27) warrior512 написал(а):
пишет вместо имени ip
Спустя 1 минута, 6 секунд warrior512 написал(а):
попробуйте ссыль сами все увидите
Спустя 3 минуты, 7 секунд warrior512 написал(а):
Затея же прикольная, потом зделаю страницу с люком или с ёдой, чтобы вступить на сторону света
Спустя 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 минута, 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> поставь после поля в котором имя вводится.
Для оформления php кода попробуй этим воспользоватся.
Чтобы имя добавлялось, </form> поставь после поля в котором имя вводится.
Спустя 3 минуты, 10 секунд (28.07.2011 - 21:00) warrior512 написал(а):
да, теперь еще одна неувязочка, надо чтобы теперь новые имена вписывались в начало файла, чтобы в списке они были первыми и чтобы они как-нибудь пазделялись, типа имя | имя.
Спустя 1 минута, 37 секунд (28.07.2011 - 21:02) warrior512 написал(а):
Спустя 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 написал(а):
я сеачала ввел "вася"
потом "пет" специально остановился и не дописал "я"
получилось "петя"
Спустя 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 вы тут? |
Меня здесь нету
Спустя 27 минут, 28 секунд (29.07.2011 - 19:27) warrior512 написал(а):
вот что у меня получилось и работает http://blablablahamyha.500mb.net/index.php
но у меня есть подозрение насчет того что ip записываются в файл, то есть может получится так, что ip нового "принявшего темную сторону" совпадет с тем что есть в списке (они же динамические) и ему скрипт не даст "принять темную сторону". Тобиш нужно чтобы файл c ip чтоли удалялся после какого-нибудь времени.
И возможно ли реализовать чтобы скрипт не позволял вводить маты, то есть создать какой-нибудь файл со списком запрещенных слов.
И еще хотелось бы сделать так чтобы или нельзя было вводить пустое имя или для них ввелся отдельный счетчик тех кто ввел пустые имена. и выводить типа так. "анонимусов принятых темную сторону: 12" примерно так. =)
извените за наглость)
<?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, ну нервы у тебя железные
Да перепиши код сам как полагается (всё равно пусть потом автор разбирает по готовому примеру код и учится)
Да перепиши код сам как полагается (всё равно пусть потом автор разбирает по готовому примеру код и учится)
Спустя 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) |
всё равно пусть потом автор разбирает по готовому примеру код и учится |
А вот автор вряд ли будет сам разбирать, а вот когда по кускам ему объясняешь то может, что и зацепится в голове у него
Цитата (HAKIM @ 9.08.2011 - 20:06) |
warrior512, Держи |
Вряд ли это уже актуально
Спустя 14 часов, 39 минут, 42 секунды (10.08.2011 - 15:05) HAKIM написал(а):
Так хоть нервы не тратить
А автор если хочет далее в php шарить, так разберётся что по чём!
А автор если хочет далее в php шарить, так разберётся что по чём!
Цитата (HAKIM @ 9.08.2011 - 18:51) |
всё равно пусть потом автор разбирает по готовому примеру код и учится |
А вот автор вряд ли будет сам разбирать, а вот когда по кускам ему объясняешь то может, что и зацепится в голове у него
Цитата (HAKIM @ 9.08.2011 - 20:06) |
warrior512, Держи |
Вряд ли это уже актуально
По мне лучше написать , чем потом мучиться, и детально описывать действия что на что менять!
Кстати, я так понял ты сам код не переделывал в рабочий вид! т.е. Предлагал примерные варианты "мол из-за чего не робит скрипт"
А вот написал бы готовый код, а потом уже То на то поменяй а это на это....(если уж научить хочешь) хотя он копипастом всё равно заюзает и ничего не поймёт!если ты говоришь
Цитата (HAKIM @ 9.08.2011 - 18:51)
всё равно пусть потом автор разбирает по готовому примеру код и учится
А вот автор вряд ли будет сам разбирать, а вот когда по кускам ему объясняешь то может, что и зацепится в голове у него
Так что зачем прилагать усилия научить кого-то если он сам этого не желает! Если он будет менять что то копипастом, то явно в голове ничего не поменяется, так как значение функций начинающему неизвесты, и что юзать в том или другом случае.
Автор извини канешь, но не в обиду!
php.su Справочник по функцияв и т.д. и многое другое