Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Помогите написать небольшой скрипт (https://forum.antichat.xyz/showthread.php?t=48392)

anykey 05.09.2007 20:40

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

kdk 05.09.2007 20:49

2)
PHP код:

  $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)
PHP код:

<?
$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

Цитата:

Сообщение от Dr.Check
$_server["remote_addr"]

однако!

Dr.Z3r0 05.09.2007 22:00

Первый скриптег:
PHP код:

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

Второе
PHP код:

<?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

PHP код:

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

Цитата:

Сообщение от anykey
PHP код:

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 там или нет всё равно выдается "Открыт"

хех. убери в конце строчки
PHP код:

if(in_array($_SERVER["REMOTE_ADDR"], $ip_bd))echo('Закрыт'); 

; =))

anykey 05.09.2007 23:25

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

<?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 код:

<?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

Цитата:

Сообщение от anykey
PHP код:

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 использовать
и соответсвенно не так немного делать
так пробуй:
PHP код:

<? 
$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

PHP код:

<?  
$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

Цитата:

Сообщение от anykey
Всё равно выводит "вариант 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

Ну не знаю... это по-моему шизофрения у меня вот еще одна ашипка во втором найди строку
PHP код:

$file_s=fopen($txt_bd,"w"); 

и замени ее на
PHP код:

$file_s=fopen($txt_bd,"a"); 

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


Время: 11:29