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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [php] Новичкам: задаем вопросы (https://forum.antichat.xyz/showthread.php?t=40896)

_Great_ 26.05.2007 14:24

[php] Новичкам: задаем вопросы
 
В этой специальной теме новички могут задавать простые вопросы по языку PHP.

Darkweider 27.05.2007 12:10

как извлечь полную информацию о пользователе, чтобы забанить не только по айпи?

blaga 27.05.2007 12:25

есть сторока в таком виде "3006 + (40416-966) / 30" мне нужно как нибудь вычислить математически... ((((

_Great_ 27.05.2007 12:26

blaga, eval() ?
Darkweider, инфо о браузере ($_REQUEST[HTTP_USER_AGENT]) + чтонить выцепить с помощью JS

blaga 27.05.2007 12:43

Кому интересно моя проблема решилась так:
Код:

<?php

$var1 = '3006';
$var2 = '40416';
$var3 = '966';
$var4 = '30';
$str = '$var1 + ($var2-$var3) / $var4.<br>';

eval ("echo $var1 + ($var2-$var3) / $var4;");


?>

Пример был взят из мануала. _Great_ +4

_Great_ 27.05.2007 12:44

можно проще

Код:

$expression = "3006 + (40416-966) / 30";
eval('$result = '.$expression.';');

Дальше с $result делать че угодно

Joker-jar 27.05.2007 14:30

Также для бана часто пользуются комбинацией "бан по Ip" + "бан по кукисам"

skzi 27.05.2007 22:34

как выполнить внешнюю программу на perl ?
И можно ли посредствами php получить результат от ЕХЕ файла?

DIAgen 28.05.2007 00:14

Цитата:

Сообщение от skzi
как выполнить внешнюю программу на perl ?
И можно ли посредствами php получить результат от ЕХЕ файла?

Читай http://www.php.net/manual/ru/ref.com.php

spamoney 28.05.2007 05:01

Есть две проблемки, помогите решить, пожалуйста, а то я в php вообще не разбираюсь:

1. Есть скрипт для вывода случайных картинок из папки, как сделать так, чтобы картинки выводились не только из папки images, но и из подпапок, т.е из images/1/2/3.....
block-Random-image.php
PHP код:

<?php
if (!defined('BLOCK_FILE')) {
        
Header("Location: ../index.php");
        exit;
}


ob_start();
include(
"modules/Album/album/randomimg.php"); //путь к файлу обработчику
$script ob_get_contents();
ob_end_clean();
$content .= $script;

?>

randomimg.php
PHP код:

<?php
$dir
="/images";/// Укажите папку с фото
$openthisdir=opendir($dir);
while (
$k=readdir($openthisdir))
{
$m=substr($k,-4);
if (
$m=='.jpg' or $m=='.png' or $m=='.gif'$array[]=$k;
}
closedir($openthisdir);
$number=rand(0,count($array)-1);
echo 
"<center><img src='$dir/$array[$number]' alt='Случайная картинка'></center><br>";
$size=filesize("$dir/$array[$number]");

echo 
"Файл: $array[$number]<BR>";///Вывод названия

echo "Размер: $size б.<BR>";///Вывод Размера

?>

2. Есть ли такой скрипт, который бы искал в папке images и подпапках, файлы, имена которых содержат пробелы и заменял бы эти пробелы каким-нибудь символом или удалял бы их ?
т.е pict 1.jpg на pict_1.jpg или pict1.jpg
Если у кого-нибудь есть выложите пожалуйста.....

Dr.Frank 28.05.2007 06:25

Цитата:

Сообщение от spamoney
2. Есть ли такой скрипт, который бы искал в папке images и подпапках, файлы, имена которых содержат пробелы и заменял бы эти пробелы каким-нибудь символом или удалял бы их ?
т.е pict 1.jpg на pict_1.jpg или pict1.jpg
Если у кого-нибудь есть выложите пожалуйста.....

PHP код:

<?php
if(!$type)
  
$type=".jpg";
function 
cd_dir($dir,$type){
  
$r=opendir($dir);
  while(
$p readdir($r)){
    if(
is_dir("$dir\\$p") && $p!="." && $p!="..")
      
cd_dir("$dir\\$p",$type);
    elseif(
$type && strtolower(substr($p,-4))==$type && strstr($p," ")){
      
rename("$dir\\$p",$dir."\\".str_replace(" ","_",$p));
    }
  }
}
cd_dir($dir,$type);
?>

Скрипт корявенький(переделал свой, для схожих потребностей), но работает..(по крайней мере на Винде)

Заменяет пробелы на символ "_"

в аргументах скрипта указываешь dir=нужная_папка&type=Нужный_ти п_с_точкой_впереди

например: xxx.php?dir=1&type=.txt

Если не будет работать - спрашивай...

Кстати, первый вопрос можешь по аналогии сам сделать

nc.STRIEM 28.05.2007 11:27

Цитата:

Сообщение от Dr.Frank
PHP код:

<?php
if(!$type)
  
$type=".jpg";
function 
cd_dir($dir,$type){
  
$r=opendir($dir);
  while(
$p readdir($r)){
    if(
is_dir("$dir\\$p") && $p!="." && $p!="..")
      
cd_dir("$dir\\$p",$type);
    elseif(
$type && strtolower(substr($p,-4))==$type && strstr($p," ")){
      
rename("$dir\\$p",$dir."\\".str_replace(" ","_",$p));
    }
  }
}
cd_dir($dir,$type);
?>

Скрипт корявенький(переделал свой, для схожих потребностей), но работает..(по крайней мере на Винде)

Заменяет пробелы на символ "_"

в аргументах скрипта указываешь dir=нужная_папка&type=Нужный_ти п_с_точкой_впереди

например: xxx.php?dir=1&type=.txt

Если не будет работать - спрашивай...

Кстати, первый вопрос можешь по аналогии сам сделать

создай папку или файл с именем 0 или false посмотрим как будет работать.

внимательно читаем мануал http://php.ru/manual/function.readdir.html
и видем:
PHP код:

/* Именно этот способ чтения элементов каталога является правильным. */
    
while (false !== ($file readdir($handle))) {
        echo 
"$file\n";
    }

    
/* Этот способ НЕВЕРЕН. */
    
while ($file readdir($handle)) {
        echo 
"$file\n";
    } 


hhover 28.05.2007 12:57

Можно ли сделать так, чтобы при обращении к любому файлу (например, картинке) в определенной папке на сервере выполнялся php скрипт перед показом ?

blaga 28.05.2007 15:25

Цитата:

Можно ли сделать так, чтобы при обращении к любому файлу (например, картинке) в определенной папке на сервере выполнялся php скрипт перед показом ?
вроде нет. легче обращайся к скрипту а он перекинет на картинку.

Dr.Frank 28.05.2007 15:25

Цитата:

Сообщение от hhover
Можно ли сделать так, чтобы при обращении к любому файлу (например, картинке) в определенной папке на сервере выполнялся php скрипт перед показом ?

Можно, делаешь скрипт, который надо запускать(только чтоб не выводил никаких данных и заголовки не посылал), в конце дописываешь строку:
PHP код:

header("Content-type:image/gif");
readfile("Имя_картинки_которую_надо_открыть.gif"); 

/*
(ну или не гиф, а другие типы картинок, тогда
поменяй Content-type:ТИП_КАРТИНКИ)
*/

сохраняешь PHP-скрипт с расширением картинки, например 1.gif

В папке со скрптом создаешь файл .htaccess с такими строками(или, если есть, то дописываешь его):
PHP код:

<Files Имя_скрипта>
ForceType application/x-httpd-php
</Files

/*
в данном случае
PHP код:

<Files 1.gif>
ForceType application/x-httpd-php
</Files

*/

и ссылку кидаешь на этот скрипт, а не на картинку

ultimatum 28.05.2007 16:50

Весь день пролазил в сети в поисах данного вопроса но так и не нашел ответа.

Есть задача.Смысл которой подменить урл в браузере клиента.То есть если клиет идет по ссылке скажем www.sait.com у клиента отображалось yandex.ru.Точнее говоря подмена доменного имени с помощью php.
Имею хост бесплатный на котором пшп+цги. Соответственно доступа к .htaccess не имею и к апачу тоже.Можно ли как нить осуществить мою идею с помощью php или js.Или может есть какой нибудь другой способ о котором я недогадываюсь
----------------------------------------------- c низу перенесено ----------------
Хотя знаю точно, что если на домашнем компе развернуть подобное , то данную идею можно осуществить сконфигурировав апач или .htaccess
redirect - это переарисация. можно даже задать определённое время.Но задача стоит другая.Создать илюзию того что чел пришел на yandex.ru , а на самом деле он находиться на http://mysait.com/ . хост на агаве.Но если будет предложен код на php который будет работать на любом другом бесплатном домене.То будет респект


ссылка : yandex.ru надо чтобы урл был такой же yandex.ru Код дайте пожалуста с разьяснениями!

blaga 28.05.2007 17:38

2Dr.Frank, так будет не очень удобно если там нужно много файлов так сделать. В эштеаксесе тогда лучше прописать что бы все файлы в этой папке обрабатывались как пхп.

blaga 28.05.2007 17:39

2ultimatum, приписать в файл хостс в винде ип к домменому имени yandex.ru тока это к пхп уже мало чем относиться.

Piflit 28.05.2007 17:43

Цитата:

Сообщение от blaga
2ultimatum, приписать в файл хостс в винде ип к домменому имени yandex.ru тока это к пхп уже мало чем относиться.

а разве такое нельзя на пхп сделать? прав не хватит? или вообще нет доступа к файлам пользователя? если нет, тогда только трой

Dr.Frank 28.05.2007 18:08

Цитата:

Сообщение от blaga
2Dr.Frank, так будет не очень удобно если там нужно много файлов так сделать. В эштеаксесе тогда лучше прописать что бы все файлы в этой папке обрабатывались как пхп.


Гм... можно один скрипт сделать с именем, например "files" и передавать ему данные, например xxx.ru/files/1.gif - все работает, проверенно - и один скрипт и все картинки(файлы) передаются с обработкой, т.е. сначала запускается скрипт

skzi 28.05.2007 18:27

Можно ли написать скрипт на php или perl, который автоматом будет заходить на сайт eset для скачки обновлений для антивируса и будет их копировать на другой ftp (где мне бесплатно)
Скриптик бы повесил на кротаб и было все круто)
заранее спасибо.

Isis 28.05.2007 19:26

Теперь я задам вопрос :
Можно ли опред.слово удалить из файла?
Допустим файл содержит такие слова
Код:

12345
Hexinbla
Fucken
sux
Little

Можно как-нибудь удалить из файла слово "Fucken" ?

Dr.Frank 28.05.2007 19:52

Цитата:

Сообщение от Isis
Теперь я задам вопрос :
Можно ли опред.слово удалить из файла?
Допустим файл содержит такие слова
Код:

12345
Hexinbla
Fucken
sux
Little

Можно как-нибудь удалить из файла слово "Fucken" ?


Гм.... вроде Гуру... =)

Самый примитивный, на мой взгляд, метод:
PHP код:

$t=file("1.txt");
$t=implode("\r\n",$t);
$t=str_replace("\r\nFucken","",$t);
$f=fopen("1.txt","w");
fwrite($f,$t);
fclose($f); 

Удаляет все слова "Fucken" из файла

Dr.Frank 28.05.2007 19:54

Цитата:

Сообщение от skzi
Можно ли написать скрипт на php или perl, который автоматом будет заходить на сайт eset для скачки обновлений для антивируса и будет их копировать на другой ftp (где мне бесплатно)
Скриптик бы повесил на кротаб и было все круто)
заранее спасибо.

Можно, точный адрес сайта скажи

Isis 28.05.2007 20:13

Dr.Frank, хы =)
Не подумал

nc.STRIEM 28.05.2007 20:16

Цитата:

Сообщение от ultimatum
Весь день пролазил в сети в поисах данного вопроса но так и не нашел ответа.

Есть задача.Смысл которой подменить урл в браузере клиента.То есть если клиет идет по ссылке скажем www.sait.com у клиента отображалось yandex.ru.Точнее говоря подмена доменного имени с помощью php.
Имею хост бесплатный на котором пшп+цги. Соответственно доступа к .htaccess не имею и к апачу тоже.Можно ли как нить осуществить мою идею с помощью php или js.Или может есть какой нибудь другой способ о котором я недогадываюсь
----------------------------------------------- c низу перенесено ----------------
Хотя знаю точно, что если на домашнем компе развернуть подобное , то данную идею можно осуществить сконфигурировав апач или .htaccess
redirect - это переарисация. можно даже задать определённое время.Но задача стоит другая.Создать илюзию того что чел пришел на yandex.ru , а на самом деле он находиться на http://mysait.com/ . хост на агаве.Но если будет предложен код на php который будет работать на любом другом бесплатном домене.То будет респект


ссылка : yandex.ru надо чтобы урл был такой же yandex.ru Код дайте пожалуста с разьяснениями!

нет. а .htaccess и php тут не причем

skzi 28.05.2007 21:42

Dr.Frank
u20.eset.com
u21.eset.com
u38.eset.com
u39.eset.com
4 зеркала

а загружать файлы нужно вот сюда:
ftp://more.tnpko.ru/incoming/users/
и вот сюда
ftp://content.telecet.ru/incoming/users

Точные имена файлов к сожалению незнаю, т.к. они всегда меняются, но у всех файлов обновления стоит расширение .nup




p.s. iNVLose, я заранее поблагодарил тех, кто поможет мне.



а еще заливать можно сюда ftp://ftp2.telecet.ru/Incoming/users/
и сюда
ftp://ftp.hitv.ru/incoming/users/
Просто на некоторых ограничения по ip стоят...

Dr.Frank 29.05.2007 05:01

Цитата:

Сообщение от skzi
Dr.Frank
u20.eset.com
u21.eset.com
u38.eset.com
u39.eset.com

Гм... я с NOD'ом ни разу не работал, можешь объяснить что должно быть на этих сайтах примерно?(меня он кидает на главную страницу)

Или есть какая-нибудь страница, где показываются все обновления?

skzi 29.05.2007 17:28

через программу NOD32 UpdateViewer узнал что обновления лежат тут:
http://www.nod32.com/nod_upd/
http://u20.eset.com/nod_upd/
http://89.202.157.135/nod_upd/
http://u30.eset.com/nod_upd/
http://u39.eset.com/nod_upd/
но доступ к папочке закрыт... видимо толлко из программы можно скачать обновления.

Dr.Frank 29.05.2007 17:51

Цитата:

Сообщение от skzi
http://www.nod32.com/nod_upd/
но доступ к папочке закрыт... видимо толлко из программы можно скачать обновления.

Это не проблема(в этом случае):
вместо http://www.nod32.com/nod_upd/
вводишь http://www.nod32.com//nod_upd/

т.е. после домена вводишь два символа "/" - показывается все, что в директории находится и скачать все можно(это в некотором случае считается дыркой, а некоторые спецом так делают)

Тока я не понял, че так мало обновления то вешают, всего ~3кб - это так и должно быть?

skzi 29.05.2007 20:59

Конечно нет. Обычно от 6 - 10 мб

может быть потом изменится размер?

И всетаки. Ты мне поможешь?)

scrat 29.05.2007 23:13

как перевести массив символов в строку?

Helios 30.05.2007 01:52

Цитата:

join -- Join array elements with a string

Description
string join ( string glue, array pieces)
glue задай пустым $str = join( '', $arr );

skzi 30.05.2007 01:59

Dr.Frank так ты мне поможешь?

Dr.Frank 30.05.2007 05:33

Цитата:

Сообщение от skzi
Конечно нет. Обычно от 6 - 10 мб
может быть потом изменится размер?
И всетаки. Ты мне поможешь?)

Там все файлы с расширением *.ver - RAR-архивы, в которых лежит описание, где скачивать остальные файлы... А на этих адресах стоит авторизация, так что здесь я тебе ничем не помогу, т.к. не знаю логина и пароля..

skzi 30.05.2007 13:41

Вот. Кое что нашел в инете:
AV-4536652 =>> 8juawu7rf9
AV-4557777 =>> bxgcoj57gk
AV-4557752 =>> 2c9x57b4mm
AV-4557708 =>> hjaiu19cv1

Поброуй эти пожалуйста.

spamoney 30.05.2007 14:35

Цитата:

Есть две проблемки, помогите решить, пожалуйста, а то я в php вообще не разбираюсь:

1. Есть скрипт для вывода случайных картинок из папки, как сделать так, чтобы картинки выводились не только из папки images, но и из подпапок, т.е из images/1/2/3.....
block-Random-image.php
PHP код:

<?php
if (!defined('BLOCK_FILE')) {
        
Header("Location: ../index.php");
        exit;
}


ob_start();
include(
"modules/Album/album/randomimg.php"); //путь к файлу обработчику
$script ob_get_contents();
ob_end_clean();
$content .= $script;

?>

randomimg.php
PHP код:

<?php
$dir
="/images";/// Укажите папку с фото
$openthisdir=opendir($dir);
while (
$k=readdir($openthisdir))
{
$m=substr($k,-4);
if (
$m=='.jpg' or $m=='.png' or $m=='.gif'$array[]=$k;
}
closedir($openthisdir);
$number=rand(0,count($array)-1);
echo 
"<center><img src='$dir/$array[$number]' alt='Случайная картинка'></center><br>";
$size=filesize("$dir/$array[$number]");

echo 
"Файл: $array[$number]<BR>";///Вывод названия

echo "Размер: $size б.<BR>";///Вывод Размера

?>



Переделал этот скрипт:
PHP код:

<?php 
$dir
="modules/Album/album/";
function 
cd_dir($dir){ 
  
$r=opendir($dir); 
  while (
false !==  ($k readdir($r))){ 
    if(
is_dir("$dir\\\\\\\\$k") && $k!="." && $k!=".."
      
cd_dir("$dir\\\\\\\\$k"); 
elseif (
$m=substr($k,-4) and  $m=='.jpg' or $m=='.png' or $m=='.gif')
$array[]=$k;
$number=rand(0,count($array)-1);
echo 
"<center><img width=100 height=100 src='$dir/$array[$number]' alt='Случайная картинка'></center><br>";
$size=filesize("$dir/$array[$number]");
echo 
"Файл: $array[$number]<BR>";///Вывод названия
echo "Размер: $size б.<BR>";///Вывод Размера
}
  } 

cd_dir($dir); 

?>

Но теперь вместо одной случайной картинки выводятся все картинки, которые находятся в папке и подпапках: "modules/Album/album/" Как сделать что бы выводилась одна, случайная?

Dr.Frank 30.05.2007 16:03

перекинь это:
PHP код:

$number=rand(0,count($array)-1); 
echo 
"<center><img width=100 height=100 src='$dir/$array[$number]' alt='Случайная картинка'></center><br>"
$size=filesize("$dir/$array[$number]"); 
echo 
"Файл: $array[$number]<BR>";///Вывод названия 
echo "Размер: $size б.<BR>";///Вывод Размера 

после вызова функции cd_dir($dir);, т.е. перед ?>

Сдесь же замени
PHP код:

echo "<center><img width=100 height=100 src='$dir/$array[$number]' alt='Случайная картинка'></center><br>"

на
PHP код:

echo "<center><img width=100 height=100 src='$array[$number]' alt='Случайная картинка'></center><br>"

и
PHP код:

$size=filesize("$dir/$array[$number]"); 

на
PHP код:

$size=filesize("$array[$number]"); 

После elseif замени
PHP код:

$array[]=$k

на
PHP код:

$array[]=$dir."/".$k


Dr.Frank 30.05.2007 16:10

Цитата:

Сообщение от skzi
Вот. Кое что нашел в инете:
AV-4536652 =>> 8juawu7rf9
AV-4557777 =>> bxgcoj57gk
AV-4557752 =>> 2c9x57b4mm
AV-4557708 =>> hjaiu19cv1

Поброуй эти пожалуйста.

не работает ;(

spamoney 30.05.2007 16:58

PHP код:

<?php  
$dir
="modules/Album/album/"
function 
cd_dir($dir){  
  
$r=opendir($dir);  
  while (
false !==  ($k readdir($r))){  
    if(
is_dir("$dir\\\\\\\\$k") && $k!="." && $k!="..")  
      
cd_dir("$dir\\\\\\\\$k");  
elseif (
$m=substr($k,-4) and  $m=='.jpg' or $m=='.png' or $m=='.gif'
$array[]=$dir."/".$k;
}

}
cd_dir($dir);  
 
$number=rand(0,count($array)-1);  
echo 
"<center><img width=100 height=100 src='$array[$number]' alt='Случайная картинка'></center><br>";
$size=filesize("$array[$number]"); 
echo 
"Файл: $array[$number]<BR>";///Вывод названия  
echo "Размер: $size б.<BR>";///Вывод Размера 
?>

Вродь сделал как ты сказал, но чего то не работает:
Код:

Notice: Undefined variable: array in z:\home\suit.by\www\222.php on line 14
Notice: Undefined variable: array in z:\home\suit.by\www\222.php on line 15



Notice: Undefined variable: array in z:\home\suit.by\www\222.php on line 16

Notice: Undefined variable: array in z:\home\suit.by\www\222.php on line 17
Файл:
Размер: б.



Время: 08:18