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

Discussion in 'PHP' started by anykey, 5 Sep 2007.

  1. anykey

    anykey New Member

    Joined:
    5 Feb 2007
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Напишите пожалуйста кто может небольшой скрипт на php. Который должен сравнивать IP адрес посетителя ресурса с текстовым файлом, если в текстовом файле содержится IP адрес, скрипт выдаст один текст, если же IP нет в текстовом файле тогда другой текст. А и еще второй скрипт, два поля ввода, одно маленькое для ника, второе побольше, и что бы данные из этих полей сохранялись в указанный текстовый фаил.
     
  2. kdk

    kdk Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    112
    Likes Received:
    5
    Reputations:
    -3
    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>
    я думаю сдесь все понятно.
     
  3. kdk

    kdk Elder - Старейшина

    Joined:
    8 Nov 2006
    Messages:
    112
    Likes Received:
    5
    Reputations:
    -3
    а первое немного не пойму.=((( Можно поточнее???
     
  4. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    1)
    PHP:
    <?
    $f=file("bd.txt");
    foreach(
    $f as $v)
    {
     if(
    $REMOTE_ADDR==$v) echo "вариант 1"//вот точно!
     
    else echo "вариант 2";
    }
    ?>
    upd: всё точно!
     
    #4 scrat, 5 Sep 2007
    Last edited: 5 Sep 2007
    1 person likes this.
  5. Ch3ck

    Ch3ck Elder - Старейшина

    Joined:
    9 Jun 2006
    Messages:
    1,363
    Likes Received:
    1,192
    Reputations:
    430
    $_server["remote_addr"]
     
    1 person likes this.
  6. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    или
    getenv('REMOTE_ADDR')
     
    1 person likes this.
  7. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    однако!
     
  8. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Первый скриптег:
    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
    }
    ?>
     
    3 people like this.
  9. anykey

    anykey New Member

    Joined:
    5 Feb 2007
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Спасибо всем! :)
     
  10. anykey

    anykey New Member

    Joined:
    5 Feb 2007
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    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 там или нет всё равно выдается "Открыт"
     
  11. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    может для чтения прав не хватает?
     
  12. anykey

    anykey New Member

    Joined:
    5 Feb 2007
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Хватает, точно. Все делаю на локалхосте. Использую AppServ
     
  13. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    хех. убери в конце строчки
    PHP:
    if(in_array($_SERVER["REMOTE_ADDR"], $ip_bd))echo('Закрыт');
    ; =))
     
    1 person likes this.
  14. anykey

    anykey New Member

    Joined:
    5 Feb 2007
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Убрать точку с запятой? Тогда вообще работать не будет. Вообщем всё вместе это выглядит так:
    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 ------.
     
    #14 anykey, 5 Sep 2007
    Last edited: 5 Sep 2007
  15. Dr.Z3r0

    Dr.Z3r0 Leaders of the World

    Joined:
    6 Jul 2007
    Messages:
    284
    Likes Received:
    595
    Reputations:
    567
    Только щас дошло... Прошу прощения блин... просто дело в том что при открытии файла функцией 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('Открыт');//если нету 
    ?>
     
  16. anykey

    anykey New Member

    Joined:
    5 Feb 2007
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Всё, можете называть меня "anykey-кривые руки", заменил скрипт, обновил текстовый фаил, результат один и тот же: "Открыт".
     
  17. ant0ha

    ant0ha Elder - Старейшина

    Joined:
    22 May 2007
    Messages:
    130
    Likes Received:
    50
    Reputations:
    13
    Код I-I()/Ib отлично работает, создай файл ip_bd.txt запиши туда 127.0.0.1 (если как ты писал запускаешь с локалхоста), выполняем скрипт и видим надпись Закрыт, если нет тогда поставь error_reporting=E_ALL может там ошибка еще какая вылазит.
     
  18. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    конечно... строка в массиве $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"

    ?>
     
    #18 Scipio, 6 Sep 2007
    Last edited: 6 Sep 2007
  19. anykey

    anykey New Member

    Joined:
    5 Feb 2007
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    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 раза =)
     
  20. ant0ha

    ant0ha Elder - Старейшина

    Joined:
    22 May 2007
    Messages:
    130
    Likes Received:
    50
    Reputations:
    13
    А что у тебя при этом в bd.txt записано?