Скрипт пишет ip сервера, а не пользователя

Discussion in 'PHP' started by 0х00, 9 Jan 2011.

  1. 0х00

    0х00 New Member

    Joined:
    3 Nov 2010
    Messages:
    7
    Likes Received:
    2
    Reputations:
    0
    Имею следующий скрипт:

    HTML:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    
    <body>
    <?php
    $email = $_POST['email'];// собираем введенные данные и записываемв переменные
    $text .= "$email \n"; // записываем в переменную то что собираемся писать в файл
    $ip=$_SERVER['REMOTE_ADDR'].date(" - время d.m.Y H:i:s")."\n"; 
      if (!empty($email)) //если все переменные имеют значения выполняем запись в файл
        {
        $file = fopen ("log.txt", "a+"); //открываем для дозаписи файл message.txt лежаший в одной папке с текущей страницей
       fwrite ($file,$ip); // пишем в файл
        fwrite ($file,$text); // пишем в файл
        fclose ($file); // закрываем файл
    }
    ?>
    <form name="form1" method="post" action="up.php">
      <label for="textfield"></label>  
      <table border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><label for="textfield">Message</label></td>
          <td><input type="text" name="email" id="email"></td>
        </tr>
      </table>
      <p>
        <label for="Submit"></label>
        <input type="submit" name="Submit" value="Сохранить" id="Submit">
      </p>
    </form>
    </body>
    </html>
    
    Скрипт пишет в log.txt:

    Code:
    ip - время 09.01.2011 21:04:26
    
    mail1
     
    ip - время 09.01.2011 21:04:49
    
    mail3
    mail4
    mail5
     

    Суть проблемы в следующем:

    Скрипт должен записывать ip тот, с которого к нему обращались. То бишь если я окрашусь к скрипту site.com/script.php, то скрипт должен сделать запись вида:


    Code:
    мой ip - время 09.01.2011 21:04:26
    
    mail
    
    Все пишет, вот только одна проблема - в лог записывается ip сервера, а не ip машины, что к нему обращалась.
    Скрипт лежит с правами 644 в отдельной директории на хостинге. Права на директорию 755, в чем проблема?
     
    #1 0х00, 9 Jan 2011
    Last edited: 9 Jan 2011
  2. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    $_SERVER['HTTP_X_FORWARDED_FOR'];

    Смотри phpinfo();

    Какой веб сервер стоит, моды и т.д.
     
    #2 LStr1ke, 9 Jan 2011
    Last edited: 9 Jan 2011
  3. CheatXX

    CheatXX New Member

    Joined:
    8 Jun 2009
    Messages:
    154
    Likes Received:
    2
    Reputations:
    0
    function GetRealIp()
    {
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
    $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
    $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
    }
     
  4. 0х00

    0х00 New Member

    Joined:
    3 Nov 2010
    Messages:
    7
    Likes Received:
    2
    Reputations:
    0
    Буду признателен, если поправишь скрипт что в первом посте. Не знаток.


     
    #4 0х00, 9 Jan 2011
    Last edited: 10 Jan 2011
  5. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    Созай файл на сервере.
    PHP:
    <?php
    print_r
    ($_SERVER);
    print_r($_ENV);
    ?>
    И скинь сюда

    Еще посмотри
    http://forum.nic.ru/archive/index.php/t-1520.html
     
    #5 LStr1ke, 9 Jan 2011
    Last edited: 9 Jan 2011
  6. 0х00

    0х00 New Member

    Joined:
    3 Nov 2010
    Messages:
    7
    Likes Received:
    2
    Reputations:
    0
    Читаю ветку
     
    #6 0х00, 9 Jan 2011
    Last edited: 10 Jan 2011
  7. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    $_SERVER['HTTP_X_FORWARDED_FOR'] - IP посетителя
     
    #7 LStr1ke, 9 Jan 2011
    Last edited: 9 Jan 2011
  8. 0х00

    0х00 New Member

    Joined:
    3 Nov 2010
    Messages:
    7
    Likes Received:
    2
    Reputations:
    0

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


    Спешу отписать что все получилось и тут Вы с очередным верным советом. Еще раз спасибо.
     
  9. necroleptick

    necroleptick Member

    Joined:
    3 Jan 2011
    Messages:
    105
    Likes Received:
    11
    Reputations:
    0
    угу только ещё про оперу мини забыл и про $_SERVER["REAL_IP"], куда только этот ip не засунут