Просмотр полной версии : [php] Новичкам: задаем вопросы
Ставишь на mozilla Live HTTP Headers (както так, или Naviscope) постишь на форуме, смотришь HTTP пакет.
Куки получай через CURL - авторизировавшись на том форуме. Потом их используй при отправке HTTP пакета
Помогите с куками
нужно установить куки на поле 'user' и 'password',так,чтобы можно было ходить по сайте без последующей авторизации
phpdreamer
17.05.2010, 08:14
Помогите с куками
нужно установить куки на поле 'user' и 'password',так,чтобы можно было ходить по сайте без последующей авторизации
ни в коем случае никаких паролей в куках!
там только id сессии и данные, которые не секретны
http://pyha.ru/articles/php/cookie/
нужен простейший скрипт спамилки форума(заполнить форму и нажать на кнопку)
как это делаеться?
помогите пожалуйста, мне нужнен скрипт,который будет создавать страницу, с данными из 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");
?>
что не так?
$_GET на $_REQUEST замени
спасибо, но вопрос немного в другом
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 отправляет? оО
Если в крупном PHP проекте создавать таблицу в базе которая будет хранить инфу о пользователях, то стоит ли хранить всю инфу (более 80 значений) в 1 таблице или же разбить на несколько таблиц (допустим 1 с логинами другая с иной паспортов, 3 с инфой адресов)
И если создавать несколько таблиц то как делать структуру
1. Доп таблицы содержат ид пользователя, основную инфу и уникальный ид в таблице
А оснавная таблица содержит логин,пароль, мыло
2. Доп таблицы содержат инфу и уникальный ид этой инфы
А основная таблица содержит логин, пароль, было и ид из доп таблиц
2 вариант
в доп таблице хранится доп инфа и ид основной.
как мне изменить скрипт logfinger.pl для поисков logs, чтоб он не останавлевался после того когда найдёт один log, а сканировал дальше?
как мне изменить скрипт logfinger.pl для поисков logs, чтоб он не останавлевался после того когда найдёт один log, а сканировал дальше?
Нужно найти то место, где он останавливается.
Try proc/self/fd/2... YES
maxi-bum
20.05.2010, 00:42
"><script>alert()</script>
как это пофиксить в гостевой книги ?
"><script>alert()</script>
как это пофиксить в гостевой книги ?
htmlspecialchars, htmlentities
maxi-bum
20.05.2010, 02:21
htmlspecialchars, htmlentities
как именно ?
если просто отобразить спарсенное,то все нормально,но если записать,то записи получаются соток
как можно исправить?
значит, неверные кодировки выбрали
как именно ?
Обрабатывай все данные 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);
в общем вывожу я из файла данные. подскажите как сложить все значения для переменной 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.
После цикла сделай вывод.
Есть Вопрос не по теме...
Есть скрипт который выполняется заданую работу очень большое количесво времяни, так как есть ф-ия fsockopen, которая выполняет основную работу.
Паралельно инфа о выполненой работы заносится в БД, но почему-то не выводится Паралельно через echo.
С помощью какой ф-ии и как можно сделать что бы одновременно работал скрипт и выводилась инфа о проделаной работы?
roxblnfk
21.05.2010, 21:38
используй flush();
Есть Вопрос не по теме...
Есть скрипт который выполняется заданую работу очень большое количесво времяни, так как есть ф-ия fsockopen, которая выполняет основную работу.
Паралельно инфа о выполненой работы заносится в БД, но почему-то не выводится Паралельно через echo.
С помощью какой ф-ии и как можно сделать что бы одновременно работал скрипт и выводилась инфа о проделаной работы?
Пиши в файл. Так будет работать, а с выводом на экран - заебешься.
Добрый день.
есть форма
<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">Множитель цены (курс €, только для "Минотавр"): </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); ?>" />
Выставляет лимит загружаемого файла, таким какой установлен на сервере
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
дак ведь он же в браузер (текст кода) выводится, а надо выводить то, что возвращает функция :) у тебя уже в сгенерированном ХТМЛ тексте написан пыховский код...
Здравствуйте, у меня такой вопрос
qwe
<?php
ob_clean();
echo "asd";
?>
Вот этот код в винде выведет только asd. И то, сработает только в том случае, если буфер перед сбросом был меньше 4kb, и только в апаче (в cli вываливается No buffer to delete).
В линуксе же ни в какую не хочет сбрасывать даже один байт.
Можно ли как нибудь заставить php сбрасывать буфер по ob_clean без указания начальной точки ob_start ?
дак ведь он же в браузер (текст кода) выводится, а надо выводить то, что возвращает функция :) у тебя уже в сгенерированном ХТМЛ тексте написан пыховский код...
Да. увидел. странно, хендлер же в хтацессе добавлен, чтобы пхп выполнялось в хтмл скриптах. Видимо форс тайп перебивал их. убил его - заработало
Спасибо за наводку
<?
$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
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
дак ведь он же в браузер (текст кода) выводится, а надо выводить то, что возвращает функция :) у тебя уже в сгенерированном ХТМЛ тексте написан пыховский код...
>_<
Jazz, Operation not permitted
Chaak
операция запрещена на моём сервере или куда конекчусь?
если на моём то можно ли через вирт сервер это организолвать?(через вирт серве ошибки нет, но и сообщение не отправилось)
roxblnfk
22.05.2010, 16:43
на твоём сервере запрещено. Ты юзаешь на своём компе это или на хостингах?
roxblnfk на компе и хостинге!
на компе пишет что конектится но сообщение не отправляет else {echo (111);}; пишет 111
на хостинге Operation not permitted(ищу бесплатный с этой функцией т.к не уверен что с компа это работает)
roxblnfk
22.05.2010, 17:18
если сомневаешься в коде, то можешь мою функцию попробовать: https://forum.antichat.ru/threadedpost2156934.html#post2156929
кукис и пост отправляет, так же есть basic авторизация (описание в след. посте)
Сорь за нубский вопрос, но раскуривать регулярки нет время, поэтому написал сюда:
переменнная
$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);
не получается =)
Сорь за нубский вопрос, но раскуривать регулярки нет время, поэтому написал сюда:
переменнная
$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. не проверял
Сорь за нубский вопрос, но раскуривать регулярки нет время, поэтому написал сюда:
переменнная
$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: ([^ ]+)/
Fuckel, твой вариант работает, но иногда whois выдает это:
Expiration Date: 05-apr-2017
>>> Last update of whois database: Sat, 22 May 2010 15:31:30 UTC <<<";
тогда получается что выдерается вот такая инфа:
05-apr-2017
>>>
есть ли сервис в который вводишь штата он тебе его диапазоны ип?
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/
есть код
<?
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: (.*) <br>/iU',$ret[1],$b);
echo $b[1].'<br>';
flush();
}
?>
он возвращает много ип
как удалить повторы?
разбиваешь результат на массив, а дальше - http://php.net/manual/en/function.array-unique.php
array_unique ошибки выдает
<?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: тебе надо что бы выводились уникальные ипы, или уникальные диапазоны ипов?
в этом и смысл
а ипы идут так:
Array ( [0] => 72.73.128.0 - 72.87.47.255 ) Array ( [0] => 71.96.0.0 - 71.127.255.255 )
в этом и смысл
а ипы идут так:
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 )
)
?
я правильно понимаю:
Array
(
[0] => Array ( [0] => 72.73.128.0 - 72.87.47.255 )
[1] => Array ( [0] => 71.96.0.0 - 71.127.255.255 )
)
?
тоже не то
тоже не то
Составь конкретную задачу, не гадать же что ты хочешь
Мне например совершенно непонятно с каким массивом нужно иметь дело. И что требуется отсеять ? Уникальные записи или диапазоны ip? Что?
Vlad&slav
25.05.2010, 10:26
тоже не то
А ты регулярку в прегматче напиши ровно!
Как извращённый вариант записать все возможные адреса из диапазона, удалить дубли, разбить на диапазоны :D
как заполнить массив таким образом?
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);
$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*)
как заполнить массив таким образом?
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.
не вы не поняли. должно по кругу увеличиваться - т.е 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
не вы не поняли. должно по кругу увеличиваться - т.е 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].' ';
}
echo '<br />';
}
кстати пару коментов - первый цикл делает матрицу вида
0000
0111
0122
0123
а второй инверсирует левый верхний край.
хм, забавно.
вот еще такой вариант
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;}
хм, забавно.
вот есть такой вариант
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, то выводим "уточните у менеджера")
На одном из сайтов много картинок с русскими буквами в именах.
На домашнем серваке замечательно всё работает
Картинки вида site.ru/картинка.jpg нормально открываются и отображаются.
Залил на хост - там косяк. На картинка.jpg ругается 404-й. На urlencode('картинка.jpg') тоже 404 (и на rawurlencode('картинка.jpg').
Нормально отображается только в виде - %d0%e5%ec%e5%ed%fc%20.jpg
Как привести все названия к такому виду?
Или как заставить сервак нормально отображать их в первозданном виде?
Либы, вроде, одинаковые везде включены. Версии iconv различаются, но хз, может быть из-за этого или нет...
На одном из сайтов много картинок с русскими буквами в именах.
На домашнем серваке замечательно всё работает
Картинки вида site.ru/картинка.jpg нормально открываются и отображаются.
Залил на хост - там косяк. На картинка.jpg ругается 404-й. На urlencode('картинка.jpg') тоже 404 (и на rawurlencode('картинка.jpg').
Нормально отображается только в виде - %d0%e5%ec%e5%ed%fc%20.jpg
Как привести все названия к такому виду?
Или как заставить сервак нормально отображать их в первозданном виде?
Либы, вроде, одинаковые везде включены. Версии iconv различаются, но хз, может быть из-за этого или нет...
Пройтись в цикле по папке, и переименовать все картинки в транслитерационный вариант.
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') -- проверь правильность ввода имени файла в строке, мало ли там где пробел или похожая буква из другого языка (т.е. имя файла копи-паст)
roxblnfk, спасибо тебе! Сразу понял, в чём затык был.
Прокатил вариант - str_replace('%2F', '/', rawurlencode($url))
При urlencode тоже ещё пришлось менять '%2F' на '/'
Доброго времени суток! Народ, помогите со скриптом. Всего-то надо просто залить файл в папку с правами 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 почему-то пустая...Можешь поможет кто?
Доброго времени суток! Народ, помогите со скриптом. Всего-то надо просто залить файл в папку с правами 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
Помогите разобраться.
Была проблема с загрузкой постом файлов на сервак.
Накидал вот такой скрипт для теста (кинул в папку с правами 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 средствами?
Как проверить 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"]);
Итак, нужно отредактировать файл через форму. В данном случае 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 в файл записывается много лишних слешей.. Перед каждой кавычкой добавляется "\" (обратный слеш). Как это избежать?
Итак, нужно отредактировать файл через форму. В данном случае 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
нужно написать скрипт который будет записывать в файл все ссылки с которых перешли на страницу, ну с суперглобального масива. помогите
нужно написать скрипт который будет записывать в файл все ссылки с которых перешли на страницу, ну с суперглобального масива. помогите
$_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];
PHP_SELF это путь к файлу, если только имя то
substr(strrchr(__FILE__, DIRECTORY_SEPARATOR), 1)
Pashkela
29.05.2010, 19:32
echo substr($_SERVER['SCRIPT_NAME'],1);
^_^
Ну если на то пошло....
<?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"]); ? :)
Наркоманы
basename(__FILE__)
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)
Собаку перед функцией пробовал ставить не помогает.
<?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> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную
?>
в imagesx надо в параметр передавать указатель на картинку, а не путь к картинке
$picture = "0.png";
$img = imageCreateFromPNG($picture);
echo imagesx($img);
<?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, спасибо ваш вариант работает ширину и высоту определил, но размер так и не определяет
$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
https://forum.antichat.ru/showpost.php?p=2169390&postcount=16076
У меня такое же было. Может быть потому что на хостинге *nix а символы переноса строки в винде и *nix разные.(\r\n и \n) При переходе из одной системы в другую они интерпретируются, а т.к. Картинка передается как бинарник, то содержимое файла меняется и он повреждается.
Так а исправить-то ситуацию как?:)
есть небольшой брутер через fsockopen
проблема в том,что если первый пароль не подходит,то остальные пароли не проверяются,т.к. соединение не открывается
как сделать,чтобы все пароли проверялись?
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 раз туда записывать/читать. Так думаю будет лучше
Я наверно вывожу как то не так ($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> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную
Я наверно вывожу как то не так ($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> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную
Chaak, #Wolf#, спасибо вам большое
Чак, а еще такой вопрос как сделать поточнее вывод в килобайтах, имею ввиду до сотых долей, например 977.65 KB. Стало интересно = )
Учим математику. Делим не на килобайты, а на килобиты, затем уже на килобайты, и выводим до сотых долей. Алгоритм примерно такой.
хороший "план"
ты предлагаешь количество байт делить на 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> ";
//кстати двойные кавычки нужны когда ты хочешь в строку вставить переменную
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);
есть двумерный массив $array []['name'], $array[]['surname'].
Как определить кол-во элементов в нем? Ведь count только для одномерного массива?
$c = 0;
foreach($array as $key=>$val)
$c += count($array[$key]);
echo $c;
echo count ($array, COUNT_RECURSIVE);
echo count ($array, COUNT_RECURSIVE);
к примеру в массиве
array
(
[0] => array(1,2)
[1] => array(1,2,3,4,5)
)
будет не 7 элементов, а 9, я думаю ему нужно другое ^_^
Подскажите что это за кодировка?
http://narod.ru/disk/21318494000/testfile.rar.html
Это не кодировка, а шифрование кода Zend'ом
блин, ничего в голову не лезет- спрошу здесь: задача такова, пользователь находиться на странице в исходном коде которой есть пару переменных(время их жизни=жизни сессии) , щелкает по ссылке и мне надо чтоб эти переменные отправились на сервак (или хотяб вся страница чтоб я уже на месте смог вытянуть регулярками эти пару переменных) , такое возможно? (большая просьба кто не знает не отвечайте плиз)
Это не кодировка, а шифрование кода Zend'ом
А это расшифровать можно?
Kusto, <input type='hidden' name='asd' value='xx'>
при отправке формы на сервер в POST'e или GET'e эти переменные передадутся
GOGA075, существуют разные дезендеры. Можешь рабочий поискать в гугле, я честно не знаю какой лучше.
Chaak
Ну если ты не знаешь какой лучше, то я не знаю что такое вообще эти дезендеры!!
Chaak
Ну если ты не знаешь какой лучше, то я не знаю что такое вообще эти дезендеры!!
программа для расшифровывания этого кода
https://forum.antichat.ru/thread69285.html
например
Kusto,
при отправке формы на сервер в POST'e или GET'e эти переменные передадутся
[B]
в том то и дело, я наверное забыл написать что пользователь находиться на ЧУЖОМ сайте, вобщем нужно что то наподобие снифера только чтоб не куки или там данные о браузере передавались, а ВСЯ HTML страница на которой находиться пользователь (при условии что он перейдет по ссылке, т е нажал на ссылку-отправил html на котором находиться в данный момент) Из этого html на моем серваке уже не составит труда вытянуть регулярками переменные которые меня интересуют (в этой HTMLке есть данные которые живут от сессии до сессии)
Chaak
Благодарю, расшифровал все что надо...
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" == "кака".
???
Architek86, например
http://www.phpclasses.org/browse/file/5845.html
А также гугл с ключевыми словами
IDNA Punycode RFC3492
есть большой цикл,почему скрипт может зависать на 1/4 до конца и как это исправить?
скинь код я не экстрасенс
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
$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)));
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] - время последнего изменения атрибутов файла;
но не ясно что к чему относится.
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!";
?>
И 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.
И filectime() не поможет
stat() по описанию под виндой вообще работать не должен( -1 вернет ), а filectime() вернет не верный результат в случае если измены права на файл или группа.
В SPL уже есть вполне рабочие методы для работы с файлами.
Например, При работе с рекурсивным просмотром директорий(RecursiveDirectoryIterator).
Хорошее описание есть в офф манах. Да и всякой всячины там полно, и работать удобнее. Если что-то не так, то выведет соответствующую ошибку, которую можно отловить теми-же исключениями, опять же из spl :)
Описаловка тут:
http://www.php.net/~helly/php/ext/spl/classRecursiveDirectoryIterator.html
//правда нужен php5, если память не изменяет.
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
хотелось бы узнать, в каких это случаях 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 у тебя задана :) и третий аргумент - не переменная, а текст ;)
а чё у тебя всё в кавычках? 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 или его нету.
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>
Куда мне нужно отсылать на сервер запрос, чтобы поставить Да?
Спасибо.
Снифай и поймешь куда и что отправлять
Ребят такой вопрос, есть переменная
$tsize= 250;
нужно сделать так что бы она была контролируема при загрузке, это получается надо в форму добавить
<input type="text" name="thumb" size="3">
Юзер вписывает желаемое ему число и теперь вопрос, как мне это число преобразовать в значение переменной $tsize= ;
Само число должно быть строго меньше 300, но больше 100, ежели не удовлетворяет то echo"Не удалось загрузить файл";
Ребят такой вопрос, есть переменная
$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;
}
?>
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 "ошибка создания превьью";
?>
Сейчас если выбираю больше 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>";
}
так выводит, названия ключа массива во много строк,
а нужно в одну строку. Как это сделать?
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[]"
Ану хакеры, что за операция ^ в пыхе
У гугла это возведение в степень, и в IRCe все орут - это возведение в степень, а у пыха это чё?
for ($a=0;$a<=100;$a++) for ($i=0;$i<=100;$i++) echo "$a^$i=".($a^$i)."\r\n";http://pastebin.com/hADYZK9a
ИМХО это какая-то операция с битами, вот токо какая
Видимо побитовое исключающее "или"
Видимо побитовое исключающее "или"
А теперь для тех, кто прогуливал математику/физику. Как оно работает?
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)
Кто знает как проще отправить html-письмо с localhost ?
-=lebed=-
02.06.2010, 12:29
Кто знает как проще отправить html-письмо с localhost ?
тыц (http://php.su/functions/?mail)
Кто знает как проще отправить 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, ты пых вобще хоть чуток понимаешь? :)
самую что ни на есть малость = ) Так сказать только начинаю знакомство.
а вообще, если следовать твоему скрипту, то лучше так:
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); поможет :)
ну как ребёнок..
Быть может,
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>');
Как с помощью 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);
?>
<?php
for($i=1;$i<10;$i++)
printf("00%s,",$i);
?>
Пасиб
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'] не задано, то скрипт убьётся
Что то типа граббера изображений по ссылке.
Вот куда мне надо были те циферки в предыдущем посте.Вот както боком сделал что бы циферки 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);
}
?>
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 <?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);
}
?>
Спасибо огромнейшее....всё оказалось намного проще..
дак то и получится, что если $_POST['thumb'] имеется, то $tsize примет его целочисленное значение, иначе, если $_POST['thumb'] не задано, то скрипт убьётся
И какой сценарий тогда будет правильнее??
roxblnfk
02.06.2010, 20:39
Axel G, любой :) учи php ^^
Я в основном пишу софт на С++
Дописал флудер смс и решил для развития сделать админку на 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);
Попробуй заменить $2 на например $a
Нет
zifanchuck
02.06.2010, 22:37
Нет
А что за ошибка у тебя?
1. Цифрами нельзя называть переменные
2. preg_replace
1. Цифрами нельзя называть переменные
2. preg_replace
$str = "ghtjjrdd345hjf";
$txt = 345;
$s = 1;
preg_replace("|$txt|",$s,$str);
echo $str;
не катит
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;
Всё) Еще один вопрос.
Как сделать ?
preg_replace("|href=...|",....);
там где = есть 3 варианта:
1) =текст
2) ='
3) ="
как сделать чтобы все 3 варианта распознавались и заменялись?
4upakabr0
02.06.2010, 23:16
Дай конкретную строку(или варианты), которую ты получаешь на входе и дай строку, которую хочешь получить на выходе.
Дай конкретную строку(или варианты), которую ты получаешь на входе и дай строку, которую хочешь получить на выходе.
$str = 'href="site.ru';
тут после = 3 варианта
$re = 'foto.ru';
preg_replace("|href= и тут перебрать 3 вар|","href=$re",$str);
тоже 3 вар
Я в основном пишу софт на С++
Искренне сочувствую твоим заказчицам.
Искренне сочувствую твоим заказчицам.
Я в 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= идет либо " либо ' а потом текст
Т.е. ты хочешь отловить все попадания " или ' сразу после = и перед текстом ссылки?) Кароч, хочешь инъект не пустить?
[Mысли в слух]
Забавно, учитывая то, что твой возраст <= 16, а первая версия http analyzer увидела свет в 2004 году.
Сколько тебе тогда было?
10? или 9?
[/Mысли в слух]
$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...
как я понял, ему надо ссылку заменить, а ссылка задаётся одним из трёх вариантов:
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
Да, согласен с Кусто, тут хер чо проссышь на самом-то деле. ТС - еще раз и внятнее расскажи что хочешь. Я тебя понял, но мне кажецо, что не совсем так)
первый пост ТС можешь забыть, его раскурили, походу.
Щас обсуждается другой "еще один" вопрос, а именно:. тогда мож функцию preg_grep() всетаки заюзать????, получить массив и уж тогда что то в нем заменять на РАЗНЫЕ варианты а не так тупо 123 меняем на 234 (здесь смысл теряеться нет?)
Обьясняю еще раз.
Я парсю 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) );
так что ли?
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 с капчей при добавлении новостей. Подскажите кто знает как и можно ли вообще сделать импорт;) По моим представлениям это не трудно, стягиваешь картинку с сайта, под ней сделать поле для ввода текста и данные из этого поля слать в соответствующее поле на сайте. Но мне не хватает опыта в этих делах, дайте какой то мануальчик на эту тему.
Вопрос по preg_replace
Как сделать замену найдегого текста на ничто? Ну чтобы просто удалялось
Вопрос по preg_replace
Как сделать замену найдегого текста на ничто? Ну чтобы просто удалялось
<?php
$string = 'ололол пщ пщ ололололопщ';
echo preg_replace('/пщ/', '', $string);
?>
$str = preg_replace ('/pattern/', '', $str);
А также str_replace()
$str = preg_replace ('/pattern/', '', $str);
А также str_replace()
Спс)
Не нашел на эту тему ничего интересного, интересует такой вопрос: возможно ли импортировать качу 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 юзер, или нет.
Заранее спасибо.
При логине юзера в таблицу кидаем запись о том, что юзер с таким-то id онлайн, при логауте (или неактивности n минут) - меняем эту запись на оффлайн :)
Ну а потом считываем эту запись, где это нужно, а зависимости от ответа базы, выводим нужное изображение.
SHiNiGaMi
03.06.2010, 18:54
да с базой то ежу понятно... а без нее никак? типа ip на сервере актиаен или еще ченибудь?
Ну раз понятно, чего спрашиваешь?
1) что значит активен? А где будет храниться инфа, что он "активен" ? Ну, можешь в xml складывать :))
2) А про динамические IP и NAT не слышал?
И вообще, зачем изобретать велосипед?
SHiNiGaMi
03.06.2010, 19:31
просто велики разные бывают :)
ZenstatioN, отправляй post'ом инфу на нужную страницу (например, с каким-нибудь <input name="renew_info" />). А на нужной странице:
if (!empty($_POST['renew_info']))
{mysql_query...;}
header('Location:'.$_SERVER['HTTP_REFERER']);
Anarh1st
04.06.2010, 17:41
Как сравнить переменную с каждой строкой файла?
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];
а так?
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: не рассказывай тем кто тебе помогает как "нужно было" - они шарят в этом намноооого больше :)
как соединиться и отправить данные серверу через сокеты и прокси?
roxblnfk
05.06.2010, 11:01
Compton, HTTP запрос или абсолютно любые хаотичные данные? :) (см. fsockopen )
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot