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

Форум АНТИЧАТ (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=40510)

Linuxoid 21.05.2007 09:05

Пишу интересный скрипт. Нужна помощь.
 
Значит воть... Пишу крайне интересный и, что главное, полезный скрипт. Что именно он делает - озвучу через пару дней, а то сразу кто нить идею сопрет... :rolleyes:

Короче проблемы такие... :)

1. Проферка ИПов.
Есть файл ip.txt. В нем записано:
Код:

127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.4

Как реализовать проверку, содержится ли ИП человека, который ломица на сайт в списке? Понимаю, что это очень просто, но сам понять не могу...

PHP код:

if(ip есть в списке){
echo(
"Бобруйск прямо по коредору.");
} else {
echo(
"Всегда рады вашему визиту!");
}; 

Кто поможет - буду благодарен. Повторюсь - просьба не орать "Ламер! Тут все просто!".

2. Проверка файла на сайте.
Имеем сайт. Пусть будет http://ya.ru/. У него в корне лежит файл preved.html (http://ya.ru/preved.html). Как сделать, чтобы мой пхп скрипт
а) проверял наличие данного файла.
б) сравнивал его с эталонным (тоесть чтоб содержимое html кода 1 в 1 было с файлом, по которому сверяет скрипт.)
По пункту б у меня, честно говоря, идея была только одна: сравнивать контрольные суммы MD5. Но для этого надо получить файл както... Да и если сайтов 1000+, то скачивание и проверка всех файлов стает несколько неудобной...

Ну пока все. Есть еще пара вопросов, но с ними еще сам поковыряюсь (не люблю неразобравшись сразу орать "не работает")...


Помогите кто нить пожалуйста! ;)

Alexsize 21.05.2007 09:19

function get_user_ip()
{$strRemoteIP=$_SERVER['REMOTE_ADDR'];}
Получил ip, теперь записал его в лог, как вариант в бд. Потом сравниваешь каждого зашедшего с базой. Если (..) то (..) иначе (..)

hackconnect 21.05.2007 09:39

запиши в какуюнить переменную то что вернет file('ip.txt'); и шпарь по циклу проверку на соответствие. про trim() не забудь, а то все проверки вернут false.

Alexsize
что за бредовая функция? память не экономим
PHP код:

function get_client_ip()
{
   return (empty(@
getenv('HTTP_X_FORWARDED_FOR')) ? getenv('REMOTE_ADDR') : getenv('HTTP_X_FORWARDED_FOR');



Linuxoid 21.05.2007 10:11

Эмммм... Товарищи... Я наверное тупой, но у меня все сделано так:
PHP код:

<?php
$ip 
$_SERVER['REMOTE_ADDR'];
$entry_line "$ip\n";
$fp fopen("ip.txt","a");
fputs($fp$entry_line);
fclose($fp);
?>

С этим все нормально...
Вы мне полностью пример приведите как это проверять? :) А то я чет недогоню... :)

А по 2 пункту вообще некаких идей чтоли? :) Он для меня сейчас главный... :) С 1 пунктом всетаки проще...

GreenBear 21.05.2007 10:21

Цитата:

Как реализовать проверку, содержится ли ИП человека, который ломица на сайт в списке? Понимаю, что это очень просто, но сам понять не могу...
PHP код:

<?php

$ips 
file('ip.txt');
foreach(
$ips as $ip){
    if(
$ip == $_SERVER['REMOTE_ADDR']){
        
// v bobruysk
    
}
}

?>

PHP код:

<?php
$f 
fopen('ip.txt''r');
while(!
feof($f)){
    if(
rtrim(fgets($f)) == $_SERVER['REMOTE_ADDR']){
        
//v bobruysk
    
}
}
?>

PHP код:

<?php
$ips 
file('ip.txt');
if(
array_search($_SERVER['REMOTE_ADDR'], $ips)){
    
//v bobruysk
}
?>

выберай что нравится ..

Цитата:

2. Проверка файла на сайте.
PHP код:

<?php
$md5 
md5_file('url.php');
if(
md5_file('url.php') == $md5){
    echo 
'ok';
}
?>

это если локальный файл..

Linuxoid 21.05.2007 10:29

GreenBear
Огромное спасибо!!! :) Я примерно так и догадывался... ;) Но чтот сам сформулировать не смог реализацию...

GreenBear 21.05.2007 10:45

всегда пожалуста ..

Linuxoid 21.05.2007 10:54

Ну короче еще по хранению инфы в файле вопрос...

Файл users.txt
Код:

pupkin|ya.ru|pupkin@mail.ru|lamer
root|linux.org.ru|root@ya.ru|admin
dialsoft|dialsoft.info|root@dialsoft.info|coder

И имеем скрипт:
PHP код:

...открываем файл users.txtчитаем все в массив (сепаратор |, все идет в переменную $u[])

if(
$u[1] == "ya.ru"){
УДАЛЯЕМ СТРОЧКУ ИЗ ФАЙЛА}; 

Вот как это реализовать я вообще непойму... :) Ну, чтобы строка определенная удалялась всмысли.
Извините если сильно туплю... :)

GreenBear 21.05.2007 11:08

ну так же сделай через foreach по строкам..
PHP код:

<?php
$users 
file('users.txt');
$f fopen('users.txt''w'); fclose($f);
$f fopen('users.txt' ,'a');
foreach(
$users as $user){
    
//tut razbey
    
if($u[1] != 'ya.ru'){
        
fwrite($f$user."\n");
    }
}
fclose($f);

?>


Linuxoid 22.05.2007 04:32

Еще есть дело... :)

Сравнение контрольной суммы файла на удаленном сервере с эталонным локальным файлом
PHP код:

<?php 
$md5 
md5_file('http://example.ru/2.exe'); 
if(
md5_file('2.exe') == $md5){ 
    echo 
'Ok'
} else {
echo 
'Fufel';
};
?>

Вот как сделать, что если файл не найден (любой, хоть локальный, хоть удаленный), то чтоб выводилось "Not found", а не мат пхп на тему отсутствия файла? :)

blackybr 22.05.2007 07:57

if (file_exists(путь к файлу)) {

тут операции с твоим фалйом

} else {
echo "Not found";
}

j0ze 22.05.2007 08:06

PHP код:

<?php

error_reporting
(0);

$file '2.exe';
$url 'example.ru';
$dir '/';

if (
ereg("(404)"Get_contints($url$dir.$file))) die('remote file not found');
$md5 md5_file('http://'.$url.$dir.$file);
if (!
is_file($file)) die('local file not found');
if (
md5_file($file) == $md5) echo 'Ok'; else echo 'Fufel';

function 
Get_contints($hosturl$dir) {
     
$query 'GET '.$dir.' HTTP/1.1'."\r\n".
     
'Host: '.$hosturl."\r\n".
     
'User-Agent: Mozilla/4.0 (MSIE 6.0; Windows NT 5.1)'."\r\n".
     
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'."\r\n".
     
'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7'."\r\n".
     
'Keep-Alive: 300'."\r\n".
     
'Connection: close'."\r\n".
     
'Cache-Control: max-age=0'."\r\n\r\n";
     if (
$socket=fsockopen($hosturl80$errno$errstr10)) {
         
fwrite($socket$query);
         
//while (!feof($socket)) $result .= fgets($socket);   //-- FULL
         
$result fgets($socket);
         
fclose($socket);
        }
     return 
$result;
    }

?>


andy13 22.05.2007 08:18

Цитата:

чтоб выводилось "Not found", а не мат пхп на тему отсутствия файла
локально так:
Код:

<?
if ($str=@md5_file('file.txt'))
echo $str;
else
echo "not find!";
?>


Isis 22.05.2007 08:28

Цитата:

Сообщение от andy13
локально так:
Код:

<?
if ($str=@md5_file('file.txt'))
echo $str;
else
echo "not find!";
?>


А это не одно и тоже как и пхп?))))))

Точнее создать файл 404 ошибки и сделать редирект

Linuxoid 22.05.2007 10:11

А если локальный файл отсутствует? :) КОторый в md5_file("2.exe")...

j0ze 22.05.2007 13:25

если отсутствует то будет ехит..

if (!is_file($file)) die('local file not found');
if (md5_file($file) == $md5) echo 'Ok'; else echo 'Fufel';

siw 22.05.2007 15:27

PHP код:

<?
if ($str=md5_file('file.txt'))
{
echo 
$str;
}
else
{
$link="index.php";
header("Location: $link");
}
?>

Так еще можно сделать. В случае неудачи у юзера загрузится index.php

scrat 22.05.2007 19:08

а по моему апач можно как-то настроить на вывод ошибок

mR_LiNK[deface_0nl 22.05.2007 20:46

Цитата:

Сообщение от scrat
а по моему апач можно как-то настроить на вывод ошибок

_http://programming.su/apache/article/15/
будет полезно
Код:

# Настройка вывода сообщений о Ошибках (стиль Apache)
#
#
# 1 - текст
# ErrorDocument 500 "Серверу пришел крандец

# Единственный символ " в начале строки просто обозначает начало текста, он не выводится
#
# 2 - Локальный редирект
#ErrorDocument 404 /missing.html
# редирект на локальный URL /missing.html
#ErrorDocument 404 /cgi-bin/missing_handler.pl
#
# Вы можете перенаправлять на скрипт или страницу, использующие SSI

# 3 - Редирект на другие сервера
#ErrorDocument 402 http://some.other_server.com/subscription_info.html
# Примечание - значения переменных, ассоциированных с первоначальным запросом,
# в этом случае НЕ будут доступны

НО для большого проекта все навсего нун класс.. или отдельный модуль обработки и вывода ошибок

зы: пора бы уже хотя бы в конфах апача разбираться

censored! 23.05.2007 17:18

Переименуйте тему:
Цитата:

Пишу интересный скрипт. Нужна помощь.
в
Цитата:

С GreenBear, j0ze и siw пишем интересный скрипт. Нужна помощь.
=)


Время: 14:30