PDA

Просмотр полной версии : Помогите написать небольшой скрипт


anykey
05.09.2007, 20:40
Напишите пожалуйста кто может небольшой скрипт на php. Который должен сравнивать IP адрес посетителя ресурса с текстовым файлом, если в текстовом файле содержится IP адрес, скрипт выдаст один текст, если же IP нет в текстовом файле тогда другой текст. А и еще второй скрипт, два поля ввода, одно маленькое для ника, второе побольше, и что бы данные из этих полей сохранялись в указанный текстовый фаил.

kdk
05.09.2007, 20:49
2) $file=file("news.bd"); if (isset($save_news)) { $mess=trim("$mess"); if ($mess!=="") { $mess=str_replace("\n","<li>",$mess); $bd="news.bd"; $date=date("d.m.Y"); $str="$date|<li>$mess"; $f=fopen($bd,"a"); fwrite($f,"$str\n"); fclose($f); echo "<span class='red_txt'>новость добавлена</span>"; } } ?> <table width='590' cellspacing='0' cellpadding='4' border='0'> <tr> <td align=right class="new_txt">добавить новость:<hr></td> </tr> <form action='new_admin.php?action=new&menu=dobav' method='post'> <tr> <td align=center> <textarea style="width: 400px;" name=mess rows=7 cols=150 name='mess'></textarea> </td> </tr> <tr> <td colspan=2 align=center><input type='submit' value='сохранить' name='save_news'></td> </tr> </form> </td> </tr> </table> я думаю сдесь все понятно.

kdk
05.09.2007, 20:51
а первое немного не пойму.=((( Можно поточнее???

scrat
05.09.2007, 20:59
1)
<?
$f=file("bd.txt");
foreach($f as $v)
{
if($REMOTE_ADDR==$v) echo "вариант 1"; //вот точно!
else echo "вариант 2";
}
?>

upd: всё точно!

Ch3ck
05.09.2007, 21:05
$_server["remote_addr"]

Piflit
05.09.2007, 21:23
или
getenv('REMOTE_ADDR')

scrat
05.09.2007, 21:25
$_server["remote_addr"]
однако!

Dr.Z3r0
05.09.2007, 22:00
Первый скриптег:
<?php
$txt_name='ip_bd.txt';//текстовый фалик с айпишниками
$ip_bd=file($txt_name);
if(in_array($_SERVER["REMOTE_ADDR"], $ip_bd))echo('...один текст.');//если есть
else echo('...другой текст.');//если нету
?>
Второе

<?php
$txt_bd='bd.txt';
if(!empty($_POST['action']))
{
if((!empty($_POST['pass']))&&(!empty($_POST['vtoroe'])))
{
$pass=str_replace("\n", " ", $_POST['pass']);
$vtoroe=str_replace("\n", " ", $_POST['vtoroe']);
$file_s=fopen($txt_bd,"w");
fputs($file_s,$pass."\n");
fputs($file_s,$vtoroe."\n");
fputs($file_s,"-------------------------------------------------------\n");
fclose($file_s);
echo('Готово');
}
else echo('Вы не заполнили оба поля!');
}
else
{
?>
<form method="post">
<input type="text" name="pass" value="">
<input type="text" name="vtoroe" value="">
<input type="submit" name="action" value="добавить">
</form>
<?php
}
?>

anykey
05.09.2007, 22:21
Спасибо всем! :)

anykey
05.09.2007, 22:45
echo "<strong>Ваш IP</strong> " . $_SERVER['REMOTE_ADDR']. "<br />\n";
echo('Доступ на FTP для Вас ');

$txt_name='ip_bd.txt';//файлек
$ip_bd=file($txt_name);
if(in_array($_SERVER["REMOTE_ADDR"], $ip_bd))echo('Закрыт');//если есть
else echo('Открыт');//если нету
Почему-то не работает =(
Создал фаил ip_bd.txt рядом со скриптом, есть IP там или нет всё равно выдается "Открыт"

Piflit
05.09.2007, 22:56
может для чтения прав не хватает?

anykey
05.09.2007, 23:02
Хватает, точно. Все делаю на локалхосте. Использую AppServ

Piflit
05.09.2007, 23:09
echo "<strong>Ваш IP</strong> " . $_SERVER['REMOTE_ADDR']. "<br />\n";
echo('Доступ на FTP для Вас ');

$txt_name='ip_bd.txt';//файлек
$ip_bd=file($txt_name);
if(in_array($_SERVER["REMOTE_ADDR"], $ip_bd))echo('Закрыт');//если есть
else echo('Открыт');//если нету
Почему-то не работает =(
Создал фаил ip_bd.txt рядом со скриптом, есть IP там или нет всё равно выдается "Открыт"

хех. убери в конце строчки
if(in_array($_SERVER["REMOTE_ADDR"], $ip_bd))echo('Закрыт');
; =))

anykey
05.09.2007, 23:25
Убрать точку с запятой? Тогда вообще работать не будет. Вообщем всё вместе это выглядит так:
<?php


// no direct access
defined( '_VALID_MOS' ) or die( 'Доступ запрещен' );

global $mosConfig_offset, $mosConfig_caching, $mosConfig_enable_stats;
global $mosConfig_gzip;

echo "<strong>Ваш IP</strong> " . $_SERVER['REMOTE_ADDR']. "<br />\n";
echo('Доступ на FTP для Вас ');

$txt_name='ip_bd.txt';
$ip_bd=file($txt_name);
if(in_array($_SERVER["REMOTE_ADDR"], $ip_bd))echo('Закрыт');
else echo('Открыт');


?>

Это модуль для joomla, был. Я его растеребил и вставил этот скрипт.

И со вторым скриптом тоже проблемы кстати =(
Он записи заменяет, а не добавляет. Допустим первый раз я написал 1 в первом поле и 1 во втором, открыл bd.txt. Там вижу 1;1 -------. Потом написал в первом поле 2 и во втором 2. Открываю bd.txt и вижу первой записи нет, зато есть вторая: 2;2 ------.

Dr.Z3r0
06.09.2007, 10:07
Только щас дошло... Прошу прощения блин... просто дело в том что при открытии файла функцией file() в каждую строку в массиве в конце дописывается символ возврата строки что соответственно при сравнении с айпи дает false. Вот немного модифицировал. Терь в файлик нужно засовывать айпи через пробел в одну строку )).

<?php
$txt_name='ip_bd.txt';//файлек
$ip_bd=file($txt_name);
$ip_bd=explode(' ',$ip_bd['0']);
if(in_array($_SERVER["REMOTE_ADDR"],$ip_bd))echo('Закрыт');//если есть
else echo('Открыт');//если нету
?>

anykey
06.09.2007, 10:47
Всё, можете называть меня "anykey-кривые руки", заменил скрипт, обновил текстовый фаил, результат один и тот же: "Открыт".

ant0ha
06.09.2007, 14:16
Код I-I()/Ib отлично работает, создай файл ip_bd.txt запиши туда 127.0.0.1 (если как ты писал запускаешь с локалхоста), выполняем скрипт и видим надпись Закрыт, если нет тогда поставь error_reporting=E_ALL может там ошибка еще какая вылазит.

Scipio
06.09.2007, 16:14
echo "<strong>Ваш IP</strong> " . $_SERVER['REMOTE_ADDR']. "<br />\n";
echo('Доступ на FTP для Вас ');

$txt_name='ip_bd.txt';//файлек
$ip_bd=file($txt_name);
if(in_array($_SERVER["REMOTE_ADDR"], $ip_bd))echo('Закрыт');//если есть
else echo('Открыт');//если нету
Почему-то не работает =(
Создал фаил ip_bd.txt рядом со скриптом, есть IP там или нет всё равно выдается "Открыт"

конечно... строка в массиве $ip_bd содержит признаки конца строки... надо trim использовать
и соответсвенно не так немного делать
так пробуй:
<?
$f=file("bd.txt");
$k=$_SERVER["REMOTE_ADDR"];
$k=trim($k);//не уверен, что это обязательно
foreach($f as $v)
{

if($k==trim($v)) echo "вариант 1";
else echo "вариант 2";
}
?>

anykey
06.09.2007, 23:47
<?
$f=file("bd.txt");
$k=$_SERVER["REMOTE_ADDR"];
$k=trim($k);//не уверен, что это обязательно
foreach($f as $v)
{

if($k==trim($v)) echo "вариант 1";
else echo "вариант 2";
}
?>
Всё равно выводит "вариант 2", только теперь 3 раза =)

ant0ha
07.09.2007, 00:00
Всё равно выводит "вариант 2", только теперь 3 раза =)
А что у тебя при этом в bd.txt записано?

anykey
07.09.2007, 00:21
Сначало писал свой IP реальный, потом 127.0.0.1 и всё равно не срабатывает. Реальный IP тот который выдается по команде "$_SERVER["REMOTE_ADDR"];" из http запроса Блин я вообще наверное кривой =\

Dr.Z3r0
07.09.2007, 15:03
Ну не знаю... это по-моему шизофрения у меня вот еще одна ашипка во втором найди строку $file_s=fopen($txt_bd,"w"); и замени ее на $file_s=fopen($txt_bd,"a");

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