Gemorroj » 2011.06.19 11:50

Задаем вопросы по PHP.
Список хороших php библиотек: https://github.com/ziadoz/awesome-php.

POFIGISST » 2011.06.19 23:57

как из этого

Код:

1
span style="color: #0000BB"><?php ini_set('display_errors',0); ini_set ('register_globals', 0);session_name('SID'); session_start();############################################################################################$host= "gamerix.ru"; $path="/sms/?".$_SERVER ['QUERY_STRING'];$fp=fsockopen($host,80,$errno, $errstr,10);if(!$fp) { echo "$errstr ($errno)<br/>\n"; }else{$data = "";$post=0; foreach($_POST as $key=>$value){$post=1; $data.="&$key=$value";} if($data)$data=substr ($data,1);if($post) $headers = "POST $path HTTP/1.0\r\n";else$headers = "GET $path HTTP/1.0\r\n"; $headers.= "Host: $host\r\n";$headers.= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,image/x-bitmap, */*;q=0.1\r\n";$headers.= "Accept-Charset: utf-8;q=0.6 windows-1251;q=0.1*;q=0.1\r\n";$headers.= "Accept-Encoding: utf-8\r\n";$headers.= "Accept-Language: ru, en;q=0.9\r\n";$headers.= "User-Agent: ".$_SERVER ['HTTP_USER_AGENT']."\r\n";if($post){ $headers.= "Content-type: application/x-www-form-urlencoded\r\n";$headers.= "Content-Length: ".strlen ($data)."\r\n";$headers.= "\r\n"; $headers.= $data;}else $headers.="\r\n";@fwrite($fp, $headers); while($file != "\r\n") $file = @fgets($fp, 128);$file = ''; while(!feof($fp)) $file.= @fgets($fp, 4096); @fclose($fp); }############################################################################################$file=preg_replace('|<!DOCTYPE(.*?)<hr class="dotted" />|is','</div>',$file);$file=preg_replace('|<img src="imgs/add(.*?)</div>|is','</div>',$file);$file=preg_replace('|<img src="imgs/top(.*?)</div>|is','</div>',$file);$file=preg_replace('|<img src="../themes/(.*?)</body>|is','</br><a href="/">На главную</a>',$file);$file = str_replace('<img src="imgs/accept_page.png" alt="img"/>','',$file);$file = str_replace('<img src="imgs/','<img src="http://gamerix.ru/sms/imgs/',$file);echo $file; ?>

кода,вырезать рекламу которая в верху?(((

TLENS » 2011.06.20 00:00

Щас

POFIGISST » 2011.06.20 00:02

Пример этого граба))

TLENS » 2011.06.20 00:09

Код:

1
span style="color: #0000BB"><?php ini_set('display_errors',0); ini_set ('register_globals', 0);session_name('SID'); session_start();############################################################################################$host= "gamerix.ru"; $path="/sms/?".$_SERVER ['QUERY_STRING'];$fp=fsockopen($host,80,$errno, $errstr,10);if(!$fp) { echo "$errstr ($errno)<br/>\n"; }else{$data = "";$post=0; foreach($_POST as $key=>$value){$post=1; $data.="&$key=$value";} if($data)$data=substr ($data,1);if($post) $headers = "POST $path HTTP/1.0\r\n";else$headers = "GET $path HTTP/1.0\r\n"; $headers.= "Host: $host\r\n";$headers.= "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif,image/x-bitmap, */*;q=0.1\r\n";$headers.= "Accept-Charset: utf-8;q=0.6 windows-1251;q=0.1*;q=0.1\r\n";$headers.= "Accept-Encoding: utf-8\r\n";$headers.= "Accept-Language: ru, en;q=0.9\r\n";$headers.= "User-Agent: ".$_SERVER ['HTTP_USER_AGENT']."\r\n";if($post){ $headers.= "Content-type: application/x-www-form-urlencoded\r\n";$headers.= "Content-Length: ".strlen ($data)."\r\n";$headers.= "\r\n"; $headers.= $data;}else $headers.="\r\n";@fwrite($fp, $headers); while($file != "\r\n") $file = @fgets($fp, 128);$file = ''; while(!feof($fp)) $file.= @fgets($fp, 4096); @fclose($fp); }############################################################################################$file=preg_replace('|<!DOCTYPE(.*?)<hr class="dotted" />|is','</div>',$file);$file=preg_replace('|<img src="imgs/add(.*?)</div>|is','</div>',$file);$file=preg_replace('|<img src="imgs/top(.*?)</div>|is','</div>',$file);$file=preg_replace('|<img src="../themes/(.*?)</body>|is','</br><a href="/">На главную</a>',$file);$file = str_replace('<img src="imgs/accept_page.png" alt="img"/>','',$file);$file = str_replace('<img src="imgs/','<img src="http://gamerix.ru/sms/imgs/',$file);$my_recklama = '<img src="http://gamerix.ru/themes/gamerix/a.png" alt=""> <a href="http://podsmotri.org">Русское порно</a> <br />';$file = preg_replace('/<img\ssrc="http:\/\/gamerix\.ru\/themes\/gamerix\/a\.png"\salt="">.*?<br\/>/', $my_recklama, $file);echo $file;
POFIGISST » 2011.06.20 00:18

не убрало оно её(((

TLENS » 2011.06.20 01:29

Там моя ссылка стоит переправь на свою

POFIGISST » 2011.06.20 01:30

точно))незаметил сначала , спасибо:))))

TLENS » 2011.06.20 01:33

Можешь оставить ;)

POFIGISST » 2011.06.20 01:34

TLENS написал:

Можешь оставить ;)

на твой сайт без проблем ;)

POFIGISST » 2011.06.20 10:23

подскажите как у меня в топе http://mastop.ru можно сделать чтобы когда переходиш по счетчику с сайта,то попадало на ту страницу где находиться сайт,а не на главную?

Gemorroj » 2011.06.20 10:27

код может дашь?

POFIGISST » 2011.06.20 10:29

вот весь скрипт)))

Gemorroj » 2011.06.20 10:40

прикрепи файл к посту и никогда не давай таких ссылок.

POFIGISST » 2011.06.20 10:42

Gemorroj написал:

прикрепи файл к посту и никогда не давай таких ссылок.

сейчас прикреплю,а почему нельзя такие ссылки давать?))
Добавлено спустя   9 минут  6 секунд:
я немогу скачать,скорости нету((вообщем смотрите скрин(((только не смейтесь(((

Gemorroj » 2011.06.20 10:57

потому что потом эти ссылки будут мертвые.

POFIGISST » 2011.06.20 11:22

не подумал об этом(( ночью прикреплю файл,так как сейчас скорости нету((

TLENS » 2011.06.21 00:40

У тебя по суте дела отключены глобальные переменные.
Замени файл go.php на этот.

Код:

1
span style="color: #0000BB"><?php############################Скрипт: Топ-Рейтинг ##Автор: SL_NeKrOmAnT ##Версия: 1.2.2(Free) ##ICQ: 313886 ##MAIL: maloy_s95@mail.ru ############################define('NTOP', 1);require_once('system/connect.php');require_once('system/core.php');require_once('system/function.php');$id = (int)$_GET['id'];if(!$id OR $id < 1) { exit('Не верно введен ID'); }$isset = mysql_query("SELECT * FROM `".$prefix."sait` WHERE `status` != '0' AND `id` = '".$id."'");if(mysql_num_rows($isset) == 0) { exit('Нет такого сайта!'); } $page = ceil(mysql_result(mysql_query("SELECT COUNT(*) FROM `".$prefix."sait` WHERE `status` = '1' AND `hosts` > '0' AND `id` = '".$id."'"), 0) / $page_top); $sait = mysql_fetch_array($isset); mysql_query("INSERT INTO `".$prefix."go` SET `id_sait` = '".$id."', `type` = 'in', `time` = '".time()."'"); mysql_query("UPDATE `".$prefix."sait` SET `in` = (`in` + 1), `all_in` = (`all_in` + 1) WHERE `id` = '".$id."'"); header('Location: http://'.$set['home'].'/index.php?page='.$page);?>

Добавлено спустя   2 минуты  37 секунд:
А хотя не должно но попробуй

POFIGISST » 2011.06.21 02:22

TLENS спасибо больше)))все отлично работает)))я твой должник))

Gemorroj » 2011.06.21 10:16

скрипт требует включенных глобальных переменных?? O_o

TLENS » 2011.06.21 16:00

Gemorroj
Я полностью переписал функцию.
И оно у него заработало. А вообще да требует
Добавлено спустя   4 минуты  31 секунду:
И вообще что автор данного скрипта хотел от этого куска кода
Посмотрев на содержания таблицы

Код:

1
lt;?$page = ceil(mysql_result(mysql_query("SELECT COUNT(*) FROM `".$prefix."sait` WHERE `status` = '1' AND `hosts` > '0' AND `id` = '".$id."'"), 0) / $page_top);

Так как оно будет выводить или ноль или 1.

LooK » 2011.06.21 20:44

В таблице тем что лучше хранить ид юзера или сразу его ник?

Gemorroj » 2011.06.21 20:58

и то, и другое))))

LooK » 2011.06.21 21:49

Gemorroj написал:

и то, и другое))))

А зачем тогда ид юзера?

Gemorroj » 2011.06.21 21:56

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

LooK » 2011.06.21 22:16

Gemorroj написал:

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

Ага, ок.
А первый пост темы в таблице тем текстовым полем или пост_ид хранить?

Gemorroj » 2011.06.21 22:58

ниче не понял

LooK » 2011.06.22 14:57

Посмотрите файл аплоада (на код не обращайте внимание, файл древний), он почему-то примерно больше 8-ми метров не грузит файл, а точнее страница грузится, но в конце ничего не возвращается и файла нигде нет. Максимальны размер на серве 32М

Код:

1
span style="color: #0000BB"><?phpif(function_exists('set_time_limit')) set_time_limit(0); $file = array(); if (isset($_POST['submit'])) { for($i = 0; $i < 5; $i++) { if(!empty($_FILES['add_file']['tmp_name'][$i])) { $id3->read($_FILES['add_file']['tmp_name'][$i]); $id3->study(); $file['name'][$i] = fil(pathinfo($_FILES['add_file']['name'][$i], PATHINFO_FILENAME), 'str'); $_FILES['add_file']['name'][$i] = preg_replace('/\0/s', '', $_FILES['add_file']['name'][$i]); $_FILES['add_file']['name'][$i] = str_replace(' ', '_', $_FILES['add_file']['name'][$i]); $ext = strtolower(pathinfo($_FILES['add_file']['name'][$i], PATHINFO_EXTENSION)); $exts=array("mp3"); if (!in_array($ext,$exts)) {$error=$error.'Извините, но формат <b>'.$ext.'</b> нельзя загружать на сервер!<br />';} $site = str_replace('www.', '', $_SERVER['HTTP_HOST']); $file['name_file'][$i] = str_replace('.', '_', $site).'_'.pathinfo(mb_strtolower(basename(fil(mb_substr(retranslit($_FILES['add_file']['name'][$i]),0,300), 'str'))), PATHINFO_FILENAME) . '_' . mt_rand(1, 99); //filename if (file_exists('../files/'.$file['name_file'][$i].'.mp3')) {$error=$error.'Такой файл уже существует!<br />';} if ($sql->query("SELECT `id` FROM `files` WHERE `name`='".$file['name'][$i]."'")->num_rows != 0) {$error=$error.'Такой файл уже существует (в базе)';} if (!empty($error)) {exit($error);} if (move_uploaded_file($_FILES['add_file']['tmp_name'][$i], '../files/'.$file['name_file'][$i].'.mp3')) { chmod('../files/'.$file['name_file'][$i].'.mp3',0777); if (!$sql->query("INSERT INTO `files` SET `filename`='".$file['name_file'][$i]."', `name`='".$file['name'][$i]."', `time_upload`='".time()."', `size`='".filesize('../files/'.$file['name_file'][$i].'.mp3')."', `count`='0'")) { unlink('../files/'.$file['name_file'][$i].'.mp3'); exit('<font color="red">Ошибка загрузки!</font>'); } $sql->query("INSERT INTO `svaz` SET `id_author`='$id', `id_song`='".$sql->insert_id."'"); } else {echo '<font color="red">Ошибка загрузки</font>';} } else continue; } echo 'Все супер'; }
Gemorroj » 2011.06.22 15:34

Код:

1
span style="color: #0000BB"><?phpini_set('php_value upload_max_filesize', '32M');ini_set('php_value post_max_size', '32M');
LooK » 2011.06.22 15:36

Gemorroj написал:

Код:

1
span style="color: #0000BB"><?phpini_set('php_value upload_max_filesize', '32M');ini_set('php_value post_max_size', '32M');

Блин точно, про post_max_size забыл) Спс

LooK » 2011.06.22 19:06

Код:

1
2
3
4
5
6
7
8
9
$headers = 'Content-type: text/html; charset="utf-8"\n';
$headers .= 'From : "Registration" <robot@'.$_SERVER['HTTP_HOST'].'>\n';
$tema = 'Registration on '.$_SERVER['HTTP_HOST'].' forum';
$headers .= 'Subject : '.$tema.'\n';
$text = 'Вы успешно зарегистриованы на форуме '.$_SERVER['HTTP_HOST'].', Форум by LooK<br/>
Ваш Логин : '.$_SESSION['login'].'<br/>
Ваш Пароль : '.$pass.'<br/>
Если вы не имеете отношения к письму, то просто - удалите его ;)';
mail($mail,$tema,$text,$headers);

В чем ошибка? Не отсылает письмо

TLENS » 2011.06.22 20:44

LooK[

Код:

1
lt;?function send_mime_mail($name_from, // имя отправителя $email_from, // email отправителя $name_to, // имя получателя $email_to, // email получателя $data_charset, // кодировка переданных данных $send_charset, // кодировка письма $subject, // тема письма $body // текст письма ) { $to = mime_header_encode($name_to, $data_charset, $send_charset). ' <' . $email_to . '>'; $subject = mime_header_encode($subject, $data_charset, $send_charset); $from = mime_header_encode($name_from, $data_charset, $send_charset).' <' . $email_from . '>'; if($data_charset != $send_charset) { $body = iconv($data_charset, $send_charset, $body); } $headers = "From: $from\r\n"; $headers .= "Content-type: text/plain; charset=$send_charset\r\n"; $headers .= "Mime-Version: 1.0\r\n";return mail($to, $subject, $body, $headers);}function mime_header_encode($str, $data_charset, $send_charset) { if($data_charset != $send_charset) { $str = iconv($data_charset, $send_charset, $str); } return '=?' . $send_charset . '?B?' . base64_encode($str) . '?=';}send_mime_mail('Письмо с сайта', 'help@podsmotri.org', 'Админ', '***@list.ru', 'UTF-8', // кодировка, в которой находятся передаваемые строки 'KOI8-R', // кодировка, в которой будет отправлено письмо 'Чел просит ответа номер '.$int, $message[0]);
LooK » 2011.06.22 21:24

TLENS, все равно не приходит

TLENS » 2011.06.22 23:42

Значит проблемма на серверной стороне.
Функция iconv есть на сервере?
Добавлено спустя   3 минуты  19 секунд:
Кстати ip многих говнохостов забанены маилом

TLENS » 2011.06.23 00:02

Попробуй отправить на gmail

LooK » 2011.06.23 10:34

Отправляю с локалки, и на gmail и на mail пробовал. iconv есть

Gemorroj » 2011.06.23 11:12

LooK, так может проблема в локалке? какой сервер стоит? не денвер случаем? там заглушка на email стоит, email складываются в папку /tmp/!sendmail/

LooK » 2011.06.23 12:36

Gemorroj написал:

LooK, так может проблема в локалке? какой сервер стоит? не денвер случаем? там заглушка на email стоит, email складываются в папку /tmp/!sendmail/

Спасибо, незнал об этом) Проверил, действительно все письма там.

LooK » 2011.06.23 22:48

Код:

1
rename('../files/'.$scan,'../files/'.$filename.'.mp3')

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

Gemorroj » 2011.06.23 23:16

бля, что значит не пашет??? текст ошибки??

LooK » 2011.06.23 23:22

Gemorroj написал:

бля, что значит не пашет??? текст ошибки??

false возвращает

TLENS » 2011.06.23 23:30

Доступ на запись есть?

LooK » 2011.06.23 23:33

TLENS написал:

Доступ на запись есть?

денвер

TLENS » 2011.06.23 23:38

/usr/local/apache/logs/error.log
Посмотри че там

Gemorroj » 2011.06.23 23:54

LooK,

Код:

1
print_r(error_get_last());
LooK » 2011.06.24 09:33

Gemorroj написал:

LooK,

Код:

1
print_r(error_get_last());

Спс, помогло

POFIGISST » 2011.06.24 18:39

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

Gemorroj » 2011.06.24 18:42

там же есть стандартная возможность скрины отображать, так и с темами.

POFIGISST » 2011.06.24 18:56

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

Gemorroj » 2011.06.24 18:59

ну не помню) найди кусок кода который картинки отображает и замени на ручные скриншоты)

POFIGISST » 2011.06.24 19:03

а там где темы у меня вообще картинок нету ))только ссылки "скачать" "скачать" и вот хочу чтобы над этими ссылками показывались скрины тем в размере например 80х60 ))
Добавлено спустя   3 минуты  49 секунд:

Код:

1
2
3
4
5
6
7
8
9
// Скиншот
$screen = $setup['spath'].substr($dir, strlen($setup['path'])) . '/' . $filename;
if (is_file($screen.'.gif')) {
echo '<hr noshade size="1" width="100%" class="hr"><strong>Скриншот:</strong><br><img style="margin: 1px;" src="'.$screen.'.gif" alt="screen">';
} elseif (is_file($screen.'.jpg')) {
echo '<hr noshade size="1" width="100%" class="hr"><strong>Скриншот:</strong><br><img style="margin: 1px;" src="'.$screen.'.jpg" alt="screen">';
}
 
$desc = $setup['opath'].substr($dir, strlen($setup['path'])).'/'.$filename.'.txt';

так выводит скрин в инфо о файле,а как в каталог всунуть этот код чтобы выводило скрин,я хз((

TLENS » 2011.06.26 05:25

Каким образом передать в конструктор класса переменные.
Например
$object = new My_class($var1, $var2);
Как их получить в в конструкторе?

Gemorroj » 2011.06.26 08:42

эм, так же как и в обычном методе.
public function __construct ($var1, $var2)
{

}

TLENS » 2011.06.26 09:04

спс. А то не знал с какой стороны подойти

TLENS » 2011.06.26 19:46

Проблема через крон не работает запись со MySQL
Логи в файлы записывает. Скрипт работает.
Но если через крон то записи не появляются.
Неужели надо ставить удаленный доступ?
Или проблемма в другом?
Да кстати свои логи стоят туда пишу mysql_error()
То пусто chdir Настроен правильно

Gemorroj » 2011.06.26 19:46

ну что за ошибка-то в mysql_error()

TLENS » 2011.06.26 19:56

В том то и дело что не пишет ничего.
А По каком адресу в debian лежат ошибки базы?
Мож туда заглянуть

Gemorroj » 2011.06.26 19:56

там где mysql стоит)

TLENS » 2011.06.26 20:05

mysql не наше зато цени что нашел

[Mon Jun 20 14:12:40 2011] [error] [client 66.249.66.233] File does not exist: /.../www/vsemp3.com/rkzyzlngjovl.html
[Mon Jun 20 14:12:41 2011] [error] [client 66.249.66.233] File does not exist: /.../www/vsemp3.com/iolqxifmu.html
[Mon Jun 20 15:19:22 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/phpmyadmin
[Mon Jun 20 15:19:22 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/phpMyAdmin
[Mon Jun 20 15:19:23 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/db
[Mon Jun 20 15:19:23 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/web
[Mon Jun 20 15:19:26 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/PMA
[Mon Jun 20 15:19:26 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/admin
[Mon Jun 20 15:19:26 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/dbadmin
[Mon Jun 20 15:19:26 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/PMA2006
[Mon Jun 20 15:19:26 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/pma2006
[Mon Jun 20 15:19:27 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/sqlmanager
[Mon Jun 20 15:19:27 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/mysqlmanager
[Mon Jun 20 15:19:27 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/p
[Mon Jun 20 15:19:27 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/PMA2005
[Mon Jun 20 15:19:28 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/pma2005
[Mon Jun 20 15:19:28 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/phpmanager
[Mon Jun 20 15:19:29 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/php-myadmin
[Mon Jun 20 15:19:29 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/phpmy-admin
[Mon Jun 20 15:19:29 2011] [error] [client 81.192.48.236] File does not exist: /.../www/vsemp3.com/mysql

Наивный

Gemorroj » 2011.06.26 20:09

ну такое почти на любом сайте можно в логах найти

TLENS » 2011.06.26 21:19

Хех сделал тестову таблицу все норм.
Ладно разберемся а пока месть поставлю на wget

TLENS » 2011.06.27 09:44

Есть какая то готовая функция на определение адреса сайта в сообщении?
Даже без http в начале когда то писал но она ужасная.

Gemorroj » 2011.06.27 10:48

эм... может не надо таких функций? на форуме работают bb-коды, ссылки можно писать через них, а автоопределение специально отключено.

TLENS » 2011.06.27 10:52

Да нет это я себе хочу в чат.
Просто на сайте когда то сделал чатик. То там ссылки за ссылками пошли
Добавлено спустя   2 минуты  56 секунд:
Вот кусок кода писал еще в том году на него страшно смотреть.

Код:

1
lt;? $domain=file('/home/poise764/public_html/chat/domain.dat'); // Список популярных доменных зон $dom=''; $c=count($domain); for($i=0; $i<$c; $i++){$b=trim($domain[$i]); if(strlen($b)>1){ $dom.=$b.'|';}} $dom=substr($dom,0,-1); setcookie("name_chat", $name_chat, time() + 3600 * 24 * 365, '/', ''); $_SESSION['name_chat']=$name_chat; $message_chat=preg_replace('/(http:\/\/){0,1}[a-zA_Z0-9\-\.]{3,20}\.('.$dom.')+.*\s/si',' <font color="#ff0000">[Не рекламь хуй]</font> ',' '.$message_chat.' '); $name_chat=preg_replace('/(http:\/\/){0,1}[a-zA_Z0-9\-\.]{3,20}\.('.$dom.')+.*\s/i',' <font color="#ff0000">[хуй]</font> ',' '.$name_chat.' ');
ByVlad » 2011.06.27 16:17

Вопрос по MySQL, очень надеюсь на вашу помощь.
Нужно составить запрос, который будет вытаскивать данные из таблицы сообщений, количества комментариев, и если количество
комментариев будет больше нуля - вытаскивать комментарии этих сообщений,
а так же вытягивать из таблицы пользователей логин и аватар создателя сообщения и создателя комментария
С дальнейшей возможностью вывода их в цикле, пример реализации - стена вконтакте

Структура БД:

Таблица сообщений - mems
Поля:
id
id_user
text
likes
time

Таблица комментариев - mems_comments
id
id_mems
id_user
text
time

TLENS » 2011.06.27 16:27

$q = mysql_query("SELECT * FROM `mems_comments` WHERE id_mems = 'Ид сообщения'");
$n = mysql_num_rows($q);
if ($n) {
    echo 'выводим';
}

ByVlad » 2011.06.27 16:48

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

TLENS » 2011.06.27 16:49

=)

Gemorroj » 2011.06.27 16:50

Код:

1
2
3
4
5
SELECT `users`.*, `mems`.*, `mems_comments`.*, (COUNT(1) - 1) AS `cnt`
FROM `users`, `mems`
LEFT JOIN `mems_comments` ON `mems`.`id` = `mems_comments`.`id_mems`
WHERE `mems`.`id` = 1
AND `users`.`id` = `mems`.`id_user`;

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

ByVlad » 2011.06.27 17:23

Gemorroj, как всегда спасибо =).

ByVlad » 2011.06.27 18:03

Gemorroj, всё бы хорошо, только этот запрос берет только одну запись из таблицы mems, а нужно все удовлетворяющие условию.
Немного подкорректировал запрос:
SELECT `users`.`login` AS `us_login`, `users`.`avatar` AS `us_avatar`,
`mems`.*, `mems_comments`.`text` AS `mc_text`, `mems_comments`.`time` AS `mc_time`, (COUNT(1) - 1) AS `cnt`
FROM `users`, `mems`
LEFT JOIN `mems_comments` ON `mems`.`id` = `mems_comments`.`id_mems`
WHERE `mems`.`id_user` = " . $query['id'] . "
AND `users`.`id` = `mems`.`id_user`

Gemorroj » 2011.06.27 18:07

Код:

1
GROUP BY `mems`.`id`
ByVlad » 2011.06.27 18:13

Gemorroj, ага, оно, спасибо.

POFIGISST » 2011.06.27 20:42

Блин,чет в топе не изменяет пр и тц  у сайтов если показатели ростут,например если при реге сайта было пр 0,то если оно у сайта повышается,то картинка с данными не изменяется(( в каком файле это нужно прописать?)))скрипт полностью прикрепляю к посту)))

Gemorroj » 2011.06.27 21:12

POFIGISST, ага щас все бросятся тебе топ переписывать.

POFIGISST » 2011.06.27 21:53

я не просил переписывать,я просто спросил в каком файле "в каком файле это нужно прописать?)))" :/

ByVlad » 2011.06.27 23:58

Gemorroj, (COUNT(1) - 1) AS `cnt`
он должен подсчитать количество записей из таблицы mems_comments где `mems_comments`.`id_mems` = `mems`.`id`
но чет нифига не считает =(
и `users`.`login` AS `us_login`, `users`.`avatar` AS `us_avatar`
нужно ещё достать эти же данные, только `users`.`id` = `mems_comments`.`id_user`

ByVlad » 2011.06.28 04:35

Gemorroj, ^^ вопрос больше неактуален)
Теперь новый вопрос, в цикличном выводе через {foreach} в smarty
в каждом выводимом объекте идет {php}{/php} в него нужно передать {$row.id}

как это сделать?

Gemorroj » 2011.06.28 11:22

ByVlad, начнем с того, что от {php}{/php} нужно бы отказаться. Иначе попахивает смешиванием логики и представления.

ByVlad » 2011.06.28 12:04

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

Gemorroj » 2011.06.28 12:07

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

ByVlad » 2011.06.28 12:28

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT (
SELECT COUNT(1) FROM `mems_comments` WHERE `id_mems` = `mems`.`id`
) AS `count`,
`users`.`login` AS `us_login`,
`users`.`avatar` AS `us_avatar`,
`mems`.`text` AS `mems_text`,
`mems`.`time` AS `mems_time`,
`mems_comments`.`text` AS `mc_text`,
`mems_comments`.`time` AS `mc_time`,
`mems_comments`.`id` AS `mc_id`
FROM `users`, `mems`, `mems_comments`
WHERE `mems`.`id_user` = 1
AND `users`.`id` = `mems_comments`.`id_user`
AND `mems_comments`.`id_mems` = `mems`.`id`
GROUP BY `mems`.`id`, `mems_comments`.`id` DESC LIMIT 1

Код:

1
span style="color: #0000BB"><?php// шаблон {foreach item=row from=$mems} <table id="{$row.id}"> <tr> <td valign="top"><div class="ava"><a href="/{$querylogin}"><img src="{if !empty($query.avatar)}/files/avatar/s_{$query.avatar}.jpg{else}/template/web/ru/user_mid.gif{/if}" alt="" /></a></div></td> <td valign="top" width="100%"><div class="test"><a href="/{$query.login}"><b>{$query.login}</b></a> {if $user.id == $query.id}<div style="float:right;"> <span class="del"><a href="/mems_delete_{$row.id}.html" title="Удалить запись">удалить</a></span> {if $row.id_added == 0}<span class="del"><a href="/mems_edit_{$row.id}.html" title="Редактировать запись">изменить</a></span>{/if}{/if}<br/></div><br/>{$row.text}<br/><span class="time"><a href="/mems_view_{$row.id}.html">{$row.time|clock}</a></span></div><!-- Комментарии, их нужно в цикле вывести ещё, но как? -->{if $row.count > 0}<div class="com_post_br"></div>{if $row.cnt > 3}<div class="comms">3 последних комментария из <a href="/mems_view_{$mems.id}.html">{$row.cnt}</a></div>{/if}<div class="fontsize"><a href="/{$row.us_login}"><b>{$row.us_login}</b></a> {$row.mc_text}<br /><span class="time">{$row.mc_time|clock}</span> <span class="del"><a href="/mems_comment_delete_{$row.mc_id}">x</a></span></div><div class="hr_"></div>{/if}<!-- Конец комментариев --><div class="hr_"></div> <span class="nr"><a title="Добавить комментарий" href="/{$query.login}?act=add_comment&amp;id={$row.id}#{$row.id}">прокомментировать</a></span> - <span class="nr"><a href="/{$query.login}?act=add_me&amp;id={$row.id}#{$row.id}">добавить себе</a></span> -<span class="nr"><a href="/{$query.login}?act=like&amp;id={$row.id}#{$row.id}">мне нравится </a></span> </td> </tr></table><div class="br_1"></div>{foreachelse}Нифига нету.{/foreach}
Gemorroj » 2011.06.28 12:35

{php}{/php} не вижу.
верни LEFT JOIN

ByVlad » 2011.06.28 12:51

Gemorroj, я думал сделать в {php}{/php} цикл вывода с комментариями, так бы получалось ~5 запросов в цикле, при кешировании норм, у меня получилось только с обычным JOIN.

ByVlad » 2011.06.28 13:56

Gemorroj, с {php}{/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
{foreach item=row from=$mems}
<table id="{$row.id}">
<tr>
<td valign="top"><div class="ava"><a href="/{$querylogin}"><img src="{if !empty($query.avatar)}/files/avatar/s_{$query.avatar}.jpg{else}/template/web/ru/user_mid.gif{/if}" alt="" />
</a></div></td>
<td valign="top" width="100%"><div class="test"><a href="/{$query.login}"><b>{$query.login}</b></a> {if $user.id == $query.id}<div style="float:right;"> <span class="del"><a href="/mems_delete_{$row.id}.html" title="Удалить запись">удалить</a></span> {if $row.id_added == 0}<span class="del"><a href="/mems_edit_{$row.id}.html" title="Редактировать запись">изменить</a></span>{/if}{/if}<br/></div><br/>{$row.text}<br/>
<span class="time"><a href="/mems_view_{$row.id}.html">{$row.time|clock}</a></span></div>
<!-- Комментарии -->
{if $row.count > 0}
{php} $si = 0; {/php}
<div class="com_post_br"></div>
{if $row.cnt > 3}
<div class="comms">3 последних комментария из <a href="/mems_view_{$mems.id}.html">{$row.cnt}</a></div>
{/if}
{php}
global $isql,$tpl,$si;
$query = $isql -> cycle("SELECT `users`.`avatar` AS `us_avatar`, `users`.`login` AS `us_login`, `mems_comments`.*
FROM `mems_comments`,`users`
WHERE `users`.`id` = `mems_comments`.`id_user` AND `mems_comments`.`id_mems` = '".$mems['id']."'
ORDER BY `mems_comments`.`id` DESC LIMIT 3");
echo "SELECT `users`.`avatar` AS `us_avatar`, `users`.`login` AS `us_login`, `mems_comments`.*
FROM `mems_comments`,`users`
WHERE `users`.`id` = `mems_comments`.`id_user` AND `mems_comments`.`id_mems` = '".$si."'
ORDER BY `mems_comments`.`id` DESC LIMIT 3";
$si++;
print_r($tpl['tpl_vars']);
echo '<div class="fontsize">
<a href="/{$row.us_login}"><b>{$row.us_login}</b></a> {$row.mc_text}<br />
<span class="time">{$row.mc_time|clock}</span>
<span class="del"><a href="/mems_comment_delete_{$row.mc_id}">x</a></span>
</div>
<div class="hr_"></div>';
{/php}
{/if}
<!-- Конец комментариев -->
<div class="hr_"></div> <span class="nr"><a title="Добавить комментарий" href="/admin/comm681#681">прокомментировать</a></span> - <span class="nr"><a href="/admin/post/681">добавить себе</a></span> - <span class="nr"><a href="/admin/plus/681" onclick="get()">мне нравится </a></span> </td>
</tr>
</table><div class="br_1"></div>
{foreachelse}
 
{/foreach}
ByVlad » 2011.07.01 15:38

^^ Все вопросы не актуальны :D
Нужно достать данные из таблицы mems где `id_user` равняется записям из таблицы follows, что-то такое написал, но естесна оно не работает)

Код:

1
SELECT `mems`.* FROM `mems` WHERE `mems`.`id_user` IN(SELECT `follows`.* FROM `follows` WHERE `follows`.`id_user` = 1) ORDER BY `mems`.`time` DESC
Gemorroj » 2011.07.01 15:41

Код:

1
2
3
4
SELECT `mems`.*
FROM `mems`
INNER JOIN `follows` ON `follows`.`id_user` = `mems`.`id`
ORDER BY `mems`.`id` DESC
ByVlad » 2011.07.04 15:22

Нужно узнать id_user из трех таблиц mems, mems_comments, mems_likes
и отсортировать их по количеству записей для определенного id_user
как-то так.

Вапамнет » 2011.07.04 17:04

Привет. Как зделать чтоб в песне mр3 при скачеванию менялся альбом, название, исполнитель и т.д на адрес сайта ? Пример ссылки такой  site.ru/load.php?file=(адрес песни. например)wapinet.ru/music.mp3. Какой код нужна вписать в файл load.php чтоб изминить альбом, название и т.д?

POFIGISST » 2011.07.04 17:47

Вапамнет написал:

Привет. Как зделать чтоб в песне mр3 при скачеванию менялся альбом, название, исполнитель и т.д на адрес сайта ? Пример ссылки такой  site.ru/load.php?file=(адрес песни. например)wapinet.ru/music.mp3. Какой код нужна вписать в файл load.php чтоб изминить альбом, название и т.д?

если у тебя сеа,то там есть возможность к всем мп3 устанавливать эти данные))

POFIGISST » 2011.07.09 01:29

Помогите с мафией,у всех  она норм работает,а у меня там пустая страница((   тест акк что это может быть?

TLENS » 2011.07.10 09:12

\Но у меня не пустая

Gemorroj » 2011.07.10 10:34

POFIGISST, достаточно просто проверить html код валидатором, чтобы понять что из себя представляет скрипт ;)

POFIGISST » 2011.07.10 19:18

TLENS написал:

\Но у меня не пустая

все говорят что у них все нормик,а у меня пусто(( вот скрин прикрепляю))
Добавлено спустя   2 минуты  42 секунды:

Gemorroj написал:

POFIGISST, достаточно просто проверить html код валидатором, чтобы понять что из себя представляет скрипт ;)

Это я согласен Паш))но от паблика не стоит ожидать что выложат хороший скрипт без ошибок и багов на халяву))Поэтому спасибо кодерам которые выкладывают хоть какие то скрипты в паблик(и тебе тоже спасибо) )))

TLENS » 2011.07.10 23:44

Сейс зайду по ftp к тебе гляну че там.\
Надеюсь пароль не поменял
Добавлено спустя   2 минуты  22 секунды:
А у тебя этот сайт на другом сервере. Покажи файл maf.php

Gemorroj » 2011.07.11 10:30

конкретно на той странице 500 ошибка. проверь синтаксис php кода.

DarkRiDDeR » 2011.07.13 08:37

Помогите с запросом. Есть таблица
id | name | categor
Все данные в разброс, нужно выводить из определённой категории и повторяющиеся имена только один раз
пример:
2 | иван | mebel
3 | иван | paleno
4 | саня | mebel
5 | иван | mebel

Нужно только
2 | иван | mebel
4 | саня | mebel

Плохо в SQL шарю, простое что-нибудь запросто, а потяжелее не мого, помогите, если не троудно.

Gemorroj » 2011.07.13 10:02

GROUP BY name

DarkRiDDeR » 2011.07.13 14:00

О, точно! И так просто. А то я уже в подзапросы полез. Спасибо!

Anwap » 2011.07.13 22:13

Gemorroj, А как сделать чтоб в таблице постом выше еще и считало,например сколько mebel,сколько poleno?

Gemorroj » 2011.07.13 23:08

Anwap думаю, тут может помочь GROUP_CONCAT

TLENS » 2011.07.14 00:32

Как оптимизировать данный запрос?
А то выполняется пол минуты.

Код:

1
span style="color: #0000BB"><?php$q = mysql_query("SELECT * FROM `video` ORDER BY `id`");while($row = @mysql_fetch_array($q)) { mysql_query("UPDATE `video` SET `url_letit` = '" . (($arr[$row['id']]) ? $arr[$row['id']] : '') . "' WHERE id = '{$row['id']}'");}

Добавлено спустя   1 минуту  1 секунду:
В смысле можно ли его сделать одним запросом?

Nu3oN » 2011.07.14 01:00

Как комментируются константы в классах?
например свойства так:

Код:

1
span style="color: #0000BB"><?php /** * Переменная с настройками. * @var array */ private static $_arr;?>

как быть с константами?

Gemorroj » 2011.07.14 10:56

TLENS, что в массиве $arr?
Nu3oN,
http://pear.php.net/manual/ru/standards.naming.php

Имена констант всегда должны быть в верхнем регистре с подчеркиваниями для разделения слов. В качестве префикса в именах констант должно использоваться имя пакета/класса, в котором они используются. Например, все константы, которые используются в пакете DB::, начинаются с "DB_".

пример (почему-то с синтаксической ошибкой php, но суть уловить можно) http://pear.php.net/manual/ru/standards.sample.php

Код:

1
span style="color: #0000BB"><?php/** * Methods return this if they succeed */define('NET_SAMPLE_OK', 1);
TLENS » 2011.07.14 13:56

Gemorroj написал:

что в массиве $arr?

Код:

1
span style="color: #0000BB"><?php$f = file('data_link.dat'); // ~70000 строк$arr = array();foreach ($f as $v) { preg_match('/id_(\d+)_-_/', $v, $b); if ($b[1]) $arr[$b[1]] = $v;}unset($f);

В общем ссылки

TLENS » 2011.07.14 19:10

Паша а с каких айпишников идет спам?
Они разные?

Gemorroj » 2011.07.14 20:23

я не смотрел IP, особого труда удалить сообщение и забанить пользователя мне пока не составляет.

TLENS » 2011.07.14 20:24

Gemorroj =D
Добавлено спустя   4 минуты  46 секунд:
А как на счет оптимизации, с ним можно что то сделать?

TLENS » 2011.07.15 03:15

Как насчет такого интелекта для вырезания ссылок?

Код:

1
lt;?$commit = preg_replace('/([\s"\'\(\{\|]{0,1})((https{0,1}:\/\/){0,1}(([a-z\-]){3,20}\.){1,5}[a-z]{2,6}[0-9a-z\/\?\.\-\~&;_=%:#\+]*)([\s"\'\)\}\|]{0,1})/usi', ' <font color="#f00">Ссылка вырезаная</font> ', $commit);
Gemorroj » 2011.07.15 10:35

хз) пробуй)

TLENS » 2011.07.15 16:39

Да попробуваль разные варианты да и множество текстов обработал вроде норм лишнего не хавает

TLENS » 2011.07.15 23:21

xavier053, Как ты уже задолбал

Akdmeh » 2011.07.16 00:05

Tlens, удалил)

TLENS » 2011.07.17 08:05

Есть возможность в php выполнить несколько операций одновременно?

Gemorroj » 2011.07.17 09:59

TLENS, нативно нет. можно извращаться всякими exec'ами.

TLENS » 2011.07.17 10:01

А можешь помочь в этом вопросе? А то я с exec практически не работал. А точнее вообще не работал.

Gemorroj » 2011.07.17 10:59

http://www.google.com/search?client=ope … el=suggest

ByVlad » 2011.07.19 03:13

Вообщем нужно составить запрос сортировки пользователей по активности, что-то типа этого только нормальный:
SELECT * FROM `users` ORDER BY (SELECT COUNT(*) FROM `mems` WHERE `id_user` = что-то),(SELECT COUNT(*) FROM `mems_comments` WHERE `id_user` = что-то),(SELECT COUNT(*) FROM `mems_likes` WHERE `id_user` = чтото) DESC LIMIT 10

помогите пожалуйста)

ByVlad » 2011.07.19 10:23

Вообщем я наверное неверно объяснил, есть 4 таблицы:

mems:
структура:
id
id_user
и ещё ненужные поля

mems_comments:
структура:
id
id_user
id_mems
и ещё ненужные поля

mems_likes:
структура:
id
id_user
id_mems
и ещё ненужные поля.

Нужно составить ТОП-10 самых активных пользователей исходя из количества записей в этих таблицах с приоритетом таблиц mems,mems_comments,mems_likes.

Таблица пользователей:
users:
id
login
и ещё ненужные поля.

Gemorroj » 2011.07.19 10:29

Код:

1
2
3
4
5
6
7
8
SELECT `users`.*,
(
(SELECT COUNT(1) FROM `mems` WHERE `id_user` = `users`.`id`) +
(SELECT COUNT(1) FROM `mems_comments` WHERE `id_user` = `users`.`id`) +
(SELECT COUNT(1) FROM `mems_likes` WHERE `id_user` = `users`.`id`)
) AS `cnt`
FROM `users`
ORDER BY `cnt` DESC LIMIT 10
ByVlad » 2011.07.19 11:30

Gemorroj, ты гений, как всегда спасибо)
Добавлено спустя   6 минут  3 секунды:
Gemorroj, а ещё отдельную статистику реально сделать тоесть AS `cnt_mems`, пробовал, не получилось...

POFIGISST » 2011.07.26 23:05

Поставил зц мобивап себе,а там ошибка вот такая "Warning: Invalid argument supplied for foreach() in /home2/d4cc1zrx/public_html/index.php on line 62" и я как обычно х\з как её исправить,выкладываю код страницы

Код:

1
span style="color: #0000BB"><?php/** * @author [FaNiska] * @copyright 2009 * Загруз центр * Предложения, идеи, вопросы и об ошибках писать в icq 65-64-538 или на mobi-m-ru@ya.ru */include 'inc/db_connect.php';include 'inc/function.php';include 'inc/set.php';include 'inc/head.php';/*echo '<div class="post">Реклама:<br />';include 'link.php'; include 'link.php'; echo '<hr /></div>';*//// ВЫВОД Разделовif ($index == 1 && !isset($_GET['c'])){ mysql_query("DELETE FROM `cache` WHERE `time` < " . ($time - ($setup['cache_time']) * 60 * 10) . " LIMIT 50"); $category = mysql_query("SELECT * FROM `category` ORDER BY `por`;"); echo '<table border="2" width="100%">'; while ($cat = mysql_fetch_array($category)) { if ($cat['s_name'] == 'vrazdel') { echo '<tr class="vraz"><td colspan="2"><img src="ico/' . $cat['ico'] . '.gif" alt="+" width="16" height="16" /> &nbsp; &nbsp; &nbsp;' . $cat['r_name'] . '</td></tr>'; } elseif ($cat['s_name'] == 'link') { $tid = explode('|', $cat['folder']); $link = mysql_fetch_array(mysql_query("SELECT * FROM `$tid[0]` WHERE `id`='$tid[1]';")); $count = explode('i', $link['p_i_f']); echo '<tr class="menu"><td><img src="ico/' . $cat['ico'] . '.gif" alt="+" width="16" height="16" /> <a href="?c=' . $tid[0] . '&amp;id=' . $tid[1] . '">' . $cat['r_name'] . '</a></td><td> [' . $count['0'] . $count['1'] . ']</td></tr>'; } elseif ($cat['s_name'] == 'vlink') { echo '<tr class="vraz"><td colspan="2"><img src="ico/' . $cat['ico'] . '.gif" alt="+" width="16" height="16" /> <a href="' . $cat['folder'] . '">' . $cat['r_name'] . '</a></td></tr>'; } else { $count = explode('i', $cat['p_i_f']); $cat['s_name'] = str_replace('files/', '', $cat['s_name']); echo '<tr class="menu"><td><img src="ico/' . $cat['ico'] . '.gif" alt="+" width="16" height="16" /> <a href="?c=' . $cat['s_name'] . '">' . $cat['r_name'] . '</a></td><td> [' . $count['0'] . $count['1'] . ']</td></tr>'; } } echo '</table>'; echo '<hr />'; echo '<div class="navi"><a href="stat.php">Статистика ЗЦ</a> : <a href="set.php">Настройки</a></div>'; /// Удаление временных файлов из папки temp/ $arr_temp = glob('temp/*'); $i = 0; foreach ($arr_temp as $value) { @unlink($value); $i++; if ($i > 50) { break; } }}/// ВЫВОД Категорийelseif (isset($_GET['c'])){ if ($id != 0) { $head_cat = mysql_fetch_array(mysql_query("SELECT `s_name`, `sizetime` FROM `$table` WHERE `id`='$id';")); } if (!is_dir($head_cat['s_name'] . '/')) { exit('Выбранный раздел не существует'); } if ($head_cat['sizetime'] < ($time - 3600)) { $allfiles = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `' . $table . '` WHERE `folder` LIKE "' . $head_cat['s_name'] . '%" AND `type`=2;')); $allfiles = $allfiles['0']; $allnew = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `' . $table . '` WHERE `folder` LIKE "' . $head_cat['s_name'] . '%" AND `type`=2 AND `up_time`>' . $new_time . ';')); $allnew = '/+' . $allnew['0']; if ($id != 0) { mysql_query("UPDATE `$table` SET `p_i_f`='" . $allfiles . "i" . $allnew . "', `sizetime`='$time' WHERE `id`=$id LIMIT 1;"); } else { mysql_query("UPDATE `category` SET `p_i_f`='" . $allfiles . "i" . $allnew . "', `sizetime`='$time' WHERE `s_name` = 'files/$table' LIMIT 1;"); } } ////////// START - ПОСТРАНИЧНАЯ НАВИГАЦИЯ $k_post = mysql_fetch_array(mysql_query('SELECT COUNT(`id`) FROM `' . $table . '` WHERE `id_p`=' . $id . '')); $k_post = $k_post['0']; $k_page = k_page($k_post, $step); $page = page($k_page); $start = $step * $page - $step; ////////// END - ПОСТРАНИЧНАЯ НАВИГАЦИЯ $parametr = "$table|$id|$sort|$p|$step|$page|$prev_set|$prev_w|$prev_h|$d_w|$d_h"; if (isset($_GET['set'])) { include 'inc/set_inc.php'; } else { echo "<div class='navi'> &raquo; <a href=\"?c=$table&amp;id=$list[id]&amp;sort=$sort&amp;p=$p&amp;step=$step&amp;page=$page&amp;set\">Настройки</a> : <a href='search.php?c=$table&amp;search'>Поиск</a><br /> &raquo; Самые: <a href='top.php?c=$table&amp;id=$id'>скачиваемые</a> : <a href='new.php?c=$table&amp;id=$id'>новые</a><br /> </div>"; } if (mysql_result(mysql_query("SELECT COUNT(*) FROM `cache` WHERE `parametr` = '$parametr' && `time` > " . ($time - ($setup['cache_time']) * 60) . ""), 0) == 0) { $s = mysql_query("SELECT * FROM `$table` WHERE `id_p`=$id ORDER BY `$sort` $por LIMIT $start, $step"); $content = '<table width="100%">'; while ($list = mysql_fetch_array($s)) { if ($list['type'] == 1) { $count = explode('i', $list['p_i_f']); $allfiles = $count['0']; $allnew = $count['1']; $list['r_name'] = str_replace('*', '', $list['r_name']); if ($list['gr_id'] > 0 && $list['gr_id'] < 6) { switch ($list['gr_id']) { // Стандартные иконки групп. Можете изменять тут. case '1': $ico = "<img src='ext/mo.gif' alt='+' width='16' height='16'/> "; break; case '2': $ico = "<img src='ext/jar.gif' alt='+' width='16' height='16'/> "; break; case '3': $ico = "<img src='ext/mp3.gif' alt='+' width='16' height='16'/> "; break; case '4': $ico = "<img src='ext/sis.gif' alt='+' width='16' height='16'/> "; break; case '5': $ico = "<img src='ext/3gp.gif' alt='+' width='16' height='16'/> "; break; } $content = $content . "<tr><td> $ico <a href='group.php?c=$table&amp;id=$list[id]'>$list[r_name]</a></td><td>[$allfiles$allnew]</td></tr>"; } else { $content = $content . "<tr><td><img src='ico/$list[ico].gif' alt='+' /> <a href='index.php?c=$table&amp;id=$list[id]'>$list[r_name]</a></td><td>[$allfiles$allnew]</td></tr>"; } } elseif (in_array($list['f_ras'], $arr_ext)) ////// ФИЛЬТР ПО РАСШИРЕНИЮ { $list['r_name'] = str_replace('*', '', $list['r_name']); if ($prev_set == 1 && isset($prev_h) && isset($prev_w)) { // Если предпросмотр включен if ($list['f_ras'] == 'jpg' || $list['f_ras'] == 'jpeg' || $list['f_ras'] == 'png' || $list['f_ras'] == 'gif') { $content = $content . "<tr class='block'><td colspan='2'> $list[r_name] <a class='info' href='file.php?c=$table&amp;id=$list[id]'>подробности</a></td></tr><tr><td class='img' width='$prev_w'><img src='image.php?c=$table&amp;id=$list[id]&amp;W=$prev_w&amp;H=$prev_h' alt='скачать " . $file_name . "'/> </td><td class='info'><a class='info' href='file.php?c=$table&amp;id=$list[id]'>$list[r_name]</a> " . size_file($list['size']) . "<br />"; if (function_exists('getimagesize')) { $img_size = getimagesize($list['s_name']); $x = "($img_size[0]x$img_size[1])"; } else { $x = ''; } $content = $content . "<a class='info' href='load_img.php?c=$table&amp;id=$list[id]'>Скачать оригинал $x</a><br /> Кол-во скачиваний: $list[count]<br />"; if (isset($d_w) && isset($d_h)) { $content = $content . '<a class=\'info\' href="image.php?c=' . $table . '&amp;id=' . $list['id'] . '&amp;act=d&amp;W=' . $d_w . '&amp;H=' . $d_h . '">Скачать ' . $d_w . 'x' . $d_h . '</a> </td></tr>'; } else $content = $content . "</td></tr>"; } elseif ($list['f_ras'] == '3gp' || $list['f_ras'] == 'mp4' || $list['f_ras'] == 'avi') // можете расширить сами если ваш хостинг поддерживает другие форматы { $content = $content . "<tr class='block'><td colspan='2'> $list[r_name] <a class='info' href='file.php?c=$table&amp;id=$list[id]'>подробности</a></td></tr><tr><td class='img' width='$prev_w'><img src='ffmpeg.php?c=" . $table . "&amp;id=" . $list['id'] . "&amp;W=" . $prev_w . "&amp;H=" . $prev_h . "&amp;k=20' alt='" . $list['r_name'] . " " . $list['f_ras'] . "'/></td><td class='info'>Размер: " . size_file($list['size']) . "<br /><a class='info' href='load.php?c=$table&amp;id=$list[id]'>Скачать $list[f_ras]</a><br /> Кол-во скачиваний: $list[count]</td></tr>"; } else { $screen = eregi_replace($list['f_ras'] . '$', '', $list['s_name']); $arr_sc = glob($screen . '*'); foreach ($arr_sc as $value) { if (eregi('\.gif$|\.png$|\.jpeg$|\.jpg$', $value)) { $img = "<img src=\"screen.php?file={$value}\" alt=\"\" />"; break; } else { $img = ''; } } if (!isset($img) || empty($img)) { $img = "<img src='ext/$list[f_ras].gif' alt='+' width='16' height='16'/>"; } $content = $content . "<tr class='block'><td colspan='2'> $list[r_name] <a class='info' href='file.php?c=$table&amp;id=$list[id]'>подробности</a></td></tr><tr><td class='img' width='$prev_w'>$img</td><td class='info'> Размер: " . size_file($list['size']) . "<br /> Скачиваний: $list[count]<br /> <a class='info' href='load.php?c=$table&amp;id=$list[id]'>скачать $list[f_ras]</a></td></tr>"; } } else { $content = $content . "<tr><td><img src='ext/$list[f_ras].gif' alt='+' width='16' height='16'/> <a href='file.php?c=$table&amp;id=$list[id]'>$list[r_name]</a></td><td>" . size_file($list['size']) . "</td></tr>"; } } } $content = $content . '</table>'; echo $content; include_once 'inc/str.php'; mysql_query("REPLACE INTO `cache` (`parametr`, `content`, `str`, `time`, `count`) VALUES ('$parametr', '" . mysql_real_escape_string($content) . "', '" . mysql_real_escape_string($str) . "', '$time', '1')"); } else { $cache = mysql_fetch_array(mysql_query("SELECT * FROM `cache` WHERE `parametr`='$parametr' LIMIT 1")); echo $cache['content'] . $cache['str']; }}echo '<div class="navi"><a href="http://mobiwap.su">wap знакомства на WapLover.Net</a><br />';echo '<b><a href="readme.php">Купить скрипт загруз центра</a></b></div><div>';include 'inc/foot.php';?>

валидатор показал что нет ошибок((

TLENS » 2011.07.26 23:18

POFIGISST написал:

валидатор показал что нет ошибок((

тут не в синтаксисе проблема.
Пустая переменная $arr_temp
Добавлено спустя   1 минуту  6 секунд:
т.е. $arr_temp = glob('temp/*');
не вернул нифига.
сейчас дам исправления

POFIGISST » 2011.07.26 23:21

а что в ней должно находиться? или она вообще не должна существовать?))

TLENS » 2011.07.26 23:22

Код:

1
span style="color: #0000BB"><?php $arr_temp = glob('temp/*'); $i = 0; foreach ($arr_temp as $value) { @unlink($value); $i++; if ($i > 50) { break; } }

замени

Код:

1
span style="color: #0000BB"><?php $arr_temp = glob('temp/*'); $i = 0; if (is_array($arr_temp)) { foreach ($arr_temp as $value) { @unlink($value); $i++; if ($i > 50) { break; } } }
POFIGISST » 2011.07.26 23:23

спасибо Дим)))

TLENS » 2011.07.26 23:27

А хотя можно было просто вставить собаку перед foreach для заглушки эта ошибка не страшная просто нет файлов в папке temp
Добавлено спустя   8 минут  56 секунд:

POFIGISST написал:

а что в ней должно находиться

Глупый вопрос.
заходишь например на php.su кликаешь по ссылке функции по алфавиту и ищешь функцю glob, и смотриш что она должна вернуть

TLENS » 2011.08.03 21:34

Странно почему в ОПП переменная description не работает.

Код:

1
span style="color: #0000BB"><?phpclass Themes { public $title; public $nav; public $description = 1; public $content; public function __destruct () { global $_SET; $this->parse(); header("Content-type: text/html; charset=utf-8"); var_dump($this); //highlight_string($r); echo $r; } }

результат

Код:

1
2
3
4
object(Themes)#2 (4) {
["description"]=>
string(0) ""
}

["description"]=>string(0) "" вот почему?
В то время как

Код:

1
lt;?class Test { public $description = 1;}$test = new Test;var_dump($test);

Все норм.

Gemorroj » 2011.08.03 22:03

здесь какой-то маразм, а не ООП.
начнем с того, что вот так "global $_SET;" никогда писать нельзя.
и результат - как ты его получил? может ты сам же description и обнулил.

TLENS » 2011.08.03 22:09

Не понял на счет global, Нужно было сразу в конструкторе принять нужные параметры с set/
Кстати да этот кла вовсе не клас просто совокупность функций. Писал его когда только начинал учить ООП.
Сейчас то уже понял для чего надо ООП.
Но все же я публике тоже ввел в переменную данные то нет их.

TLENS » 2011.08.03 22:26

Ты был прав додумался пробить поиском description когда то тестил класс и стоит строчка $Themes->description = '';
Почему я о ней забыл. спс. уберу ту срань с форума. Надо бы и с сервера ее убрать.

DarkRiDDeR » 2011.08.05 16:08

Народ как сделать в Mysql сортировку по русским буквам? С английским всё норм, а с русским проблы. Кодировка UTF-8

Gemorroj » 2011.08.05 17:37

DarkRiDDeR, подозреваю, что нихрена не utf-8. Потому как при корректной работе с кодировками, никаких проблем не возникает.

DarkRiDDeR » 2011.08.06 06:20

Да при создании таблицы задал DEFAULT CHARSET utf8, всю запись вёл тоже с utf-8. Выводится всё норм, а сортировка что-то никак.

Gemorroj » 2011.08.06 09:55

соединение с бд должно быть еще настроено на работу с utf-8

DarkRiDDeR » 2011.08.06 11:30

Кажись понял. Я не настраивал, что utf, и mysql при записи считал, что это latin1(по умолчанию), а записывалось utf. Поэтому при выводе всё норм, но при сортироке, mysql сортирует utf, как lаtin. Но как теперь от этого избавиться: данные, которые уже записаны, нужны?

Gemorroj » 2011.08.06 11:40

SET NAMES utf8

DarkRiDDeR » 2011.08.06 12:45

Нет, это уже пробовал. Выходит: MySQL перекодирует, что в UTF, из latin1 в UTF. И получается воопще муть.

Gemorroj » 2011.08.06 22:19

DarkRiDDeR, твои проблемы) перводи бд в UTF-8

DarkRiDDeR » 2011.08.07 05:53

Решил сделать так: сниму дамп в lаtin1 и запихну его, как utf8. Кстати, есть скрипт, который дамп снимает? Рhрmуаdmin не подходит.

DarkRiDDeR » 2011.08.07 09:53

Фу-у... Рушил проблему. Хороший скрипт Sypex Dumper v.2.0.6 B (дампы делает). В нём снял дамп в latin1, а потом запихнул, как UTF8. Всё!!! Работает!!!

Gemorroj » 2011.08.07 10:01

почему phpmyadmin не подходит? лучшее что есть на php для работы с mysql.

DarkRiDDeR » 2011.08.07 10:07

Sypex Dumper v.2.0.6 в 4 раза быстрее, если верить разработчику. phpmyadmin на хосте стоит, я сначала через него хотел дамп снять, но там только он в UTF8 даёт. И опять выходит: что хранится в UTF, перекодировается из latin в utf, как-то так. Главное проблему решил :)

Gemorroj » 2011.08.07 11:03

ну какая разница, отдаст оно тебе страницу, за 0.4 или 0.1 сек? возможностей-то у phpmyadmin не в 4, а в 1000 раз больше.

DarkRiDDeR » 2011.08.07 11:13

Я не говорю, что он хуже, просто у него кракобязи на дампе были

POFIGISST » 2011.08.11 00:23

помогите сделать приват в чате только с 50 постов,идет вот такая

Код:

1
2
3
4
echo "<select name=\"prvt\">";
echo "<option value=\"0\">Всем</option>";
echo "<option value=\"1\">Приватно</option>";
echo "</select><br/>";

кнопка переключатель,хочу чтоб из базы users['posts'] брало сколько у человека постов,и если меньше 50 постов,то срабатывала функция if else ,то есть,если постов 50 или больше,то в кнопке появляется "Приватно" а если же постов нету,то "Приватно" просто исчезает,и можно говорить только "всем" вот как это сделать?((

TLENS » 2011.08.11 00:32

POFIGISST очень просто.

Код:

1
span style="color: #0000BB"><?php$posts = 49; // в эту переменную вставь с базы количество постов юзера.$limit = 50; // Лимитif ($posts >= $limit) { echo "<select name=\"prvt\">"; echo "<option value=\"0\">Всем</option>"; echo "<option value=\"1\">Приватно</option>"; echo "</select><br/>";}// А также чтобы не было дырки вставь такое же возле приема поста.$posts = 49; // в эту переменную вставь с базы количество постов юзера.$limit = 50; // Лимитif ($posts >= $limit) { // разрешаем} else { // не разрешаем}
POFIGISST » 2011.08.11 00:36

спасиб Дим,а "А также чтобы не было дырки вставь такое же возле приема поста." это где прием поста идет?((

TLENS » 2011.08.11 00:42

а я *** дай файл на который ссылается форма

POFIGISST » 2011.08.11 00:51

вот вся страница,теперь оно определяет сколько постов у того юзера которому я пишу,и если у него нету 50 постов,то я не могу ему в приват ответить,а он мне может если у меня больше 50 постов(


Код:

1
lt;?require'config.php';$user['avr'] = 0;$align='left';$title='Сказать';head();aut();if (!ctype_digit($_GET['rm'])){header('Location: index?'.SID);die;}if (!ctype_digit($_GET['nk'])){header('Location: index?'.SID);die;}$rm = intval($_GET['rm']);$nk = intval($_GET['nk']);who_add($rm,'room'); // Занисываем Кто онлайн...$db->sql_query ("Select rm from rooms where rm='".$rm."';");if (mysql_affected_rows() == 0){echo "Такой комнаты не существует!";foot();exit;}$select = @$db->sql_query ("Select * from users where id='".intval($nk)."'");if (mysql_affected_rows() == 0){echo "Юзер не найден. Возможно ник удалён.<br/>";echo gb.'<a href="room?rm='.$rm.'">В чат </a>'.div;foot();exit;}$inf = $db->sql_fetchrow ($select);if (ignor(user_inf($inf['id']),$user['id'])==1){echo 'Пользователь <b>'.$inf['user'].'</b> отправил вас в игнор!<br />';echo gb.'<a href="room?rm='.$rm.'">В чат </a>'.div;foot();exit;}$usid = $inf["id"];$nick = $inf["user"];$usname = $inf["name"];$birth = $inf["birth"];$sex = $inf["sex"];$city = $inf["city"];$mail = $inf["mail"];$site = $inf["site"];$infa = $inf["infa"];$icq = $inf["icq"];$credits = $inf["credits"];$gposts = $inf["gposts"];$status = $inf["status"];$date = $inf["date"];$op = $inf["op"];$onl = $inf["onl"];$mob = $inf["mob"];$us_ip = $inf["user_ip"];$us_soft = $inf["user_soft"];$img = $inf["img"];$nastroi = $inf["nastroi"];$visit = $inf["visit"];$room = $inf["room"];$byeotv = $inf["byeotv"];$number = $inf["number"];$level = $inf["level"];$fr = $inf["friends"];$mysmile = $inf["mysmile"];$votefoto = $inf["votefoto"];$ign = $inf["ignor"];$bee = $inf["site"];$myavatar = $inf["myavatar"];$version = $inf["version"];$postmag = $inf["postmag"];$alltraf = $inf["alltraf"];$postsf = $inf["postsf"];$idpass = $inf["pass"];$rating = $inf["rating"];$clan = $inf["clan"];$myblogs = $inf["myblogs"];$monets = $inf["money"];$presentset = $inf["presentset"];if ($credits>=0 && $credits<100) $victstatus="Ученик";if ($credits>=100 && $credits<500) $victstatus="Студент";if ($credits>=500 && $credits<1000) $victstatus="Бакалавр";if ($credits>=1000 && $credits<2000) $victstatus="Магистр";if ($credits>=2000 && $credits<5000) $victstatus="Кандидат в доктора";if ($credits>=5000 && $credits<7000) $victstatus="Доктор наук";if ($credits>=7000) $victstatus="Учитель НеЗнайки =)";$levelselect = @$db->sql_query ("Select * from levels where level='".$level."'");$levels = @$db->sql_fetchrow($levelselect);$levname = $levels["name"];echo "Сообщение для <b>".$nick."</b><br/>";if ($ver!='wml')echo '<form action="tell?rm='.$rm.'&amp;act=add&amp;nk='.$nk.'&amp;'.SID.'" method="post">';if ($ver=='wml')echo '<br/><input name="msg'.$ref.'" maxlength="512" title="Text"/><br/>';else echo '<br/><input type="text" name="msg" maxlength="512" title="Text"/><br/>';$posts = $inf["posts"]; // в эту переменную вставь с базы количество постов юзера.$limit = 50; // Лимит if ($posts >= $limit) { echo "<select name=\"prvt\">"; echo "<option value=\"0\">Всем</option>"; echo "<option value=\"1\">Приватно</option>"; echo "</select><br/>";} // А также чтобы не было дырки вставь такое же возле приема поста. $posts = $inf["posts"]; // в эту переменную вставь с базы количество постов юзера.$limit = 50; // Лимит if ($posts >= $limit) { // разрешаем} else { // не разрешаем}$posts = $inf["posts"];if ($user['dd']!=0){if ($user['level']>=4){echo '<select name="dd"><option value="0" selected="selected">Шрифт</option><option value="1">Наклонный</option>';if ($user['level']>=5) echo '<option value="2">Подчёркнутый</option>';if ($user['level']>=6) echo '<option value="3">Накл. и подч.</option>';if ($user['level']>=6) echo '<option value="4">Жирный</option>';if ($user['level']>=7) echo '<option value="5">Жирн. и подч.</option>';if ($user['level']>=7) echo '<option value="6">Огромный</option>';echo '</select><br />';}}if ($user['emo']!=0){echo '<select name="emo"><option value="0" selected="selected">Эмоции</option><option value="1">Радостно</option><option value="2">Печально</option><option value="3">Удивленно</option><option value="4">Ласково</option><option value="5">Смущенно</option><option value="6">Кокетливо</option><option value="7">Обиженно</option><option value="8">Настойчиво</option><option value="9">Шепотом</option><option value="10">Задумчиво</option><option value="11">Злобно</option></select><br />';}if ($user['color']!=0){echo '<select name="color"><option value="0" selected="selected">Цвет</option><option value="1">Красный</option><option value="2">Синий</option><option value="3">Сереневый</option><option value="4">Зеленый</option></select><br />';}if ($ver=='wml'){echo '<anchor title="go">Сказать<go href="tell?rm='.$rm.'&amp;act=add&amp;nk='.$nk.'&amp;'.SID.'" method="post">';echo '<postfield name="msg" value="$msg'.$ref.'"/><postfield name="dd" value="$dd"/><postfield name="emo" value="$emo"/><postfield name="color" value="$color"/><postfield name="prvt" value="$prvt"/></go></anchor><br />';}else{echo '<input type="submit" class="ibutton" value="Сказать"/></form><br />';}echo '<br />';$b_ip = $db->sql_fetchrow($db->sql_query ("Select * from bannip;"));$db->sql_query ("Select * from bannlist WHERE (ip = '".$inf[user_ip]."')and(soft = '".$inf[user_soft]."') LIMIT 1;");if ((mysql_affected_rows()!=0)||($inf[bann]>$time)||(substr_count($ip, $b_ip[ip])!=0)){echo "<font color=\"red\"><b>Пользователь в бане!</b></font><br />";}$k_g=$db->sql_fetchfield($db->sql_query("select count(*) as num from group_users where user_id = '".$inf['id']."' and access != '1'"),0);if($k_g!=0){echo '<dl></dl>';$r = $db->sql_query ("Select * from group_users where user_id = '".$inf['id']."' and access != '1' order by id LIMIT 100");while($a = @$db->sql_fetchrow($r)){$g = @$db->sql_fetchrow($db->sql_query ("Select * from groups where id = '".$a['gid']."'"));$lider = @$db->sql_fetchrow($db->sql_query ("Select * from groups where id = '".$g['id']."'"));echo 'В клане: <a href="/groups/group'.$g['id'].'">'.$g['name'].'</a><br>';if ($lider['lider_id']==$inf['id']) echo ' (<b>Лидер</b>)';echo '<br />';}}$sit = $_SERVER['HTTP_HOST'];if($inf['myavatar']!='')echo '<img src="http://'.$sit.'/'.$inf['myavatar'].'"><br>';$k_a = $db->sql_fetchfield($db->sql_query("select count(*) as num from foto_albom where user_id = '".$inf[id]."'"),0);if ($k_a!=0)echo links.' <a href="'.H.'album'.$inf[id].'">Альбомы ('.$k_a.')</a>'.div;$aud = $db->sql_fetchfield($db->sql_query("select count(*) as num from audio where user_id = '".$inf[id]."'"),0);if ($aud!=0)echo links.'f <a href="'.H.'audio'.$inf[id].'">Личный звук</a>'.div;echo "<u>Ник</u>: $inf[user]";if($onl+300>time()){echo" <u><img src='/img/online/on.gif'/></u><br/>";}else{echo" <u><img src='/img/online/off.gif'/></u></br>";}echo ' <u>Имя</u>: '.$inf[name].'<br/>';echo ' <u>Статус</u>: <b>'.$inf[status].'</b><br/>';if(($inf[level]>3)) echo " <u>Должность</u>: <b>$levname</b><br/>";if ($inf[sex]==1)echo " <u>Пол</u>: М<br/>";else if ($inf[sex]==0)echo " <u>Пол</u>: Ж<br/>";if($inf[day]!=0||$inf[month]!=0||$inf[year]!=0)echo " <u>Дата рождения</u>: $inf[day]-$inf[month]-$inf[year]<br/>";echo " <u>Постов</u>: $posts (+ ".$inf['dayp'].")<br>";echo " <u>Монеток</u>: $inf[rur]<br/>";if ($inf[para]>=1){if ($inf[sex]==0){echo ' <u><font color="black">Замужем за </font></u>: '.nik($inf[para]).' <br />'; }else{echo ' <u><font color="black">Женат на </font></u>: '.nik($inf[para]).' <br />'; }}$mail=explode('|',$inf['mail']);$mobtel=explode('|',$inf['mobtel']);$hometel=explode('|',$inf['hometel']);$icq=explode('|',$inf['icq']);if ($inf[site]!='' || $mail[0]!='' || $mobtel[0]!='' || $hometel[0]!='' || $icq[0]!=''){echo '<dl></dl>';if (($mail[0]!='') && (($mail[1]==0)||(friends($inf['id'],$user['id'])==1)))echo " <u>Email</u>: <a href=\"mail?to=$mail[0]\">$mail[0]</a><br/>";if (($mobtel[0]!='') && (($mobtel[1]==0)||(friends($inf['id'],$user['id'])==1)))echo " <u>Моб. телефон</u>: $mobtel[0]<br/>";if (($hometel[0]!='') && (($hometel[1]==0)||(friends($inf['id'],$user['id'])==1)))echo " <u>Дом. телефон</u>: $hometel[0]<br/>";if (($icq[0]!='') && (($icq[1]==0)||(friends($inf['id'],$user['id'])==1)))echo "<u>ICQ</u>: $icq[0]<br/>";if ($inf[site]!='')echo " <u>Вап-сайт</u>: <a href=\"http://$inf[site]\">http://$inf[site]</a><br/>";}echo " <u>О себе</u>: $infa<br/>";echo " <u>Дата реги</u>: $date<br/>";echo " <u>День рождения</u>: $inf[day]-$inf[month]-$inf[year]<br/>";echo " <u>Город</u>: $inf[city]<br/>";echo " <u>ID</u>: $inf[id]<br/>";echo '<br />';$k_st=$db->sql_fetchfield($db->sql_query("select count(*) as num from stena where user_id = '".$inf['id']."'"),0);$v0=$db->sql_fetchfield($db->sql_query("select count(*) as num from vote_us where user_id = '".$inf['id']."'"),0);echo links.' <a href="'.H.'stena'.$inf['id'].'">Стена '.$inf['user'].'</a> ('.$k_st.')'.div;$k_g = $db->sql_fetchfield($db->sql_query("select count(*) as num from gifts where gift_id = '".$inf['id']."'"),0);echo links.' <a href="gifts'.$inf['id'].'">Подарки '.$inf['user'].'</a>('.$k_g.')'.div;$usf = $db->sql_fetchfield($db->sql_query ("select count(*) as num from friends where user_id ='".$inf[id]."' and yes = '1';"),0);echo "<u><a href=\"my/friends?mod=friends&nk=$inf[id]\">Друзья ".$inf['user']."</a></u><br/>";if (friends($inf[id],$user['id'])==0)echo links.' <a href="my/friends?mod=add&act=add&nick='.$inf[id].'">В друзья</a><br><br>'.div;else echo links.' <a href="my/friends?del='.friends($inf[id],$user[id],'id').'">Из друзей</a><br><br>'.div;echo links.' <a href="my/privat?mod=add&to='.$inf[id].'">Написать ему(ей) письмо</a>'.div;if($user[level]>=7){echo '<br /><b><a href="admin/users?mod=view&amp;nick='.$inf[id].'">Апдейт юзера</a></b><br/><br />'; }if($user["level"]>5){if(($inf["level"]<7)||($user["level"]>6)){echo $div5;echo "<b>IP:</b> ".$us_ip." (".opsos($us_ip).")<br/>";echo "<b>Soft:</b> ".$us_soft."<br/>";if ($inf[ver]==wml) echo "<b>Версия сайта:</b> WML<br/>";else echo "<b>Версия сайта:</b> xHTML<br/>";echo $div5;}}/*echo "<a href=\"forum/?$ses&amp;nk=$usid&amp;mod=temus\">Все темы пользователя на форуме</a><br/>";echo "<a href=\"forum/?$ses&amp;nk=$usid&amp;mod=postus\">Все сообщения пользователя на форуме</a><br/>";*/echo gb.'<a href="room?rm='.$rm.'">В чат </a>'.div;foot();?>
TLENS » 2011.08.11 01:02

Ты уверен что такой столбец существует "posts"?
Что в столбце qposts?

POFIGISST » 2011.08.11 01:07

в столбце gposts пусто,а в столбце posts посты записаны, идет таблица users столбец posts  в ней))

TLENS » 2011.08.11 01:09

Ты не тот файл мне дал. дай тот куда отправляются данные

POFIGISST » 2011.08.11 01:15

Код:

1
lt;?require'config.php';aut();if (!ctype_digit($_GET['rm'])){header('Location: index');die;}$rm = check(intval($_GET['rm']));if (check(intval($_GET['del']))==1){if ($user['level']>=7){mysql_query("DELETE FROM `message` WHERE `rm` = '".$rm."'");}}who_add($rm,'room'); // Занисываем Кто онлайн...$rooms = mysql_fetch_array(mysql_query("SELECT * FROM `rooms` WHERE `rm` = '$rm'"));if (mysql_affected_rows() == 0){$align='center';$title='Ошибка!';head();echo 'Такой комнаты не существует!<br />';echo gbinroom.'<a href="enter">Прихожая</a>'.div;foot();}if ($rooms['intim']==1){if(!isset($_POST['inps']) && isset($_SESSION['inps']))$inps = check(intval($_SESSION['inps']));else $inps = check(intval($_POST['inps']));$_SESSION['inps'] = $inps;}if(empty($inps)) $inps = 0;if ($user['level']<$rooms['level']){$align='center';$title='Ошибка!';head();echo 'Извините, но в эту комнату Вам доступ запрешен!<br />';echo gbinroom.'<a href="enter">Прихожая</a>'.div;foot();}if (($rooms['sartir']!=1) && ($user['kik']>$time)){$align='center';$title='Вы выпнуты!';head();echo '<b>'.user($user['whokik']).'</b> выпнул вас из чата на <b>'.kikt($user['kik']).'</b> <br />Причина: <b>'.$user['whykik'].'</b><br />';$rooms = mysql_query("SELECT * FROM `rooms` WHERE sartir = '1' ORDER BY `pos` ASC");if(mysql_num_rows($rooms)!=0)echo 'Вам разрешен доступ только в<br />';while($room = mysql_fetch_array($rooms)){if ($room['level']<=$user['level'])echo '<a href="room?rm='.$room['rm'].'">'.$room['name'].'</a><br />';}echo '<br />';echo gbinroom.'<a href="enter">Прихожая</a>'.div;foot();}if ((check($_GET['sartir']==sartir))&&($rooms['sartir']==1)){$align='left';$title=$rooms['name'];head();echo '<b>Внимание!</b><br/>';echo 'Сейчас вы попадете в '.$rooms['name'].'<br/>Здесь вы можете делать все, что угодно (кроме рекламы и флуда).<br/>И за весь происходящий здесь беспредел администрация чата никакой ответственности не несет.<br/>Людям со слабыми нервами и тонкой душевной организацией заходить в '.$rooms['name'].' настоятельно не рекомендуется.<br/>';echo gbinroom.'<a href="room?rm='.$rm.'">Войти</a>'.div;echo gbinroom.'<a href="enter">Прихожая</a>'.div;foot();}if ((check($_GET['strip']==strip))&&($rooms['strip']==1)){$align='left';$title=$rooms['name'];head();echo '<center><a><img src="strip/xen/58.JPG" alt=""></a></center>';echo 'стриптиз команды <br/><br/>!хентай (1рубль)<br/>!мужик (1рубль)<br/>!баба (1рубль)<br/>!бомжую (бесплатно)<br/><br/>';echo 'дурь <br/><br/>!пива (1 рубль)<br/>!водки (2 рубля)<br/>!косяк (5 рублей)<br/>!лекарство (1 рубль)<br/>';echo gbinroom.'<a href="room?rm='.$rm.'">до +18 </a>после не входить</a>'.div;echo gbinroom.'<a href="enter">Прихожая</a>'.div;foot();}if ((check($_GET['zags']==zags))&&($rooms['zags']==1)){$zag= mysql_query ("Select * from zags WHERE `status` ='1' LIMIT 1 ");$zags = mysql_fetch_array ($zag);$align='left';$title=' '.$rooms['name'].'';head();if($zags[status]==1){require'sys/calendar.php';echo ' '.date("H:i", $time).' ';echo '<center><bgsound src="zags/logo.mid"loop="1"><a><img src="zags/zags.jpeg" alt=""></a></center>';echo 'Сейчас состоится священное таинство бракосочетания<br/>';echo links.'<a><img src="man.gif" alt=""></a> жених '.nik($zags[genix]).' '.div;echo links.'<a><img src="woman.gif" alt=""></a> невеста '.nik($zags[nevesta]).' '.div;echo ' свидетель '.nik($zags[svid]).' <br /> ';echo ' свидетельница '.nik($zags[svidet]).' <br /> ';echo 'дата свадьбы: '.$zags[d].'-'.$zags[m].'-'.$zags[g].' <br />';echo 'время: '.$zags[cm].':'.$zags[min].' <br />';echo 'ведущий: '.nik($zags[ved]).' <br /><br/>';echo gbinroom.'<a href="room?rm='.$rm.'">Войти</a>'.div;echo gbinroom.'<a href="enter">Прихожая</a>'.div;}else{echo '<b>Cейчас пока сюда нельзя. о начале проведения церемонии вам сообщат</b><br/>';echo gbinroom.'<a href="enter">Прихожая</a>'.div;}foot();}if (($rooms['intim']==1)&&((check($_GET['intim']==intim))||(empty($inps))||(strlen2($inps)<4)||($inps==0))){$align='left';$title=$rooms['name'];head();if ($ver!='wml')echo '<form action="room?rm='.$rm.'" method="post">';echo '* Ключ(min: 4):<br /><input name="inps" maxlength="30" title="Название"/><br/>';if ($ver=='wml'){echo '<br /><anchor title="go">Войти<go href="room?rm='.$rm.'" method="post"><br />';echo '<postfield name="inps" value="$inps"/></go></anchor><br />';}else{echo '<br /><input type="submit" class="ibutton" value="Войти"/></form><br /><br />';}echo '<b>*</b> Ключ должен быть длиннее 4 символов (латинских) и не должен состоять из одних 0<br />';echo gbinroom.'<a href="enter">Прихожая</a>'.div;foot();}$bs=explode('|',$user['binds']);$align='left';$title=$rooms['topic'].'-'.date("H:i", $time);head();if ($user['softk']!=1){if ($rooms['intim']!=1)echo '[<a href="who_room?rm='.$rm.'" accesskey="'.$bs[2].'">Кто в комнате?</a>]';echo '[<a href="who?rm='.$rm.'" accesskey="'.$bs[3].'">Кто где?</a>]';echo '[<a href="http://x4atix.ru/my/index.php">Личный кабинет</a>]';if ($user['level']>=4&&$rooms['intim']!=1)echo '[<a href="topic?rm='.$rm.'" accesskey="'.$bs[5].'">Топ</a>]<br />';}echo gbinroom.'<a href="tell?rm='.$rm.'" accesskey="'.$bs[0].'">Сказать ['.$bs[0].']</a><br>';if ($user['polevv']!=2&&$user['polevv']!=0){if ($ver!='wml')echo '<form action="tell?rm='.$rm.'&act=add" method="post">';if ($ver=='wml')echo '<input name="msg'.$ref.'" maxlength="512" title="Text"/><br/>';else echo '<input name="msg" maxlength="512" title="Text"/><br/>';if ($user['dd']!=0){if ($user['level']>=4){echo '<select name="dd"><option value="0" selected="selected">Шрифт</option><option value="1">Наклонный</option>';if ($user['level']>=5) echo '<option value="2">Подчёркнутый</option>';if ($user['level']>=6) echo '<option value="3">Накл. и подч.</option>';if ($user['level']>=6) echo '<option value="4">Жирный</option>';if ($user['level']>=7) echo '<option value="5">Жирн. и подч.</option>';if ($user['level']>=7) echo '<option value="6">Огромный</option>';echo '</select><br />';}}if ($user['emo']!=0){echo '<select name="emo"><option value="0" selected="selected">Эмоции</option><option value="1">Радостно</option><option value="2">Печально</option><option value="3">Удивленно</option><option value="4">Ласково</option><option value="5">Смущенно</option><option value="6">Кокетливо</option><option value="7">Обиженно</option><option value="8">Настойчиво</option><option value="9">Шепотом</option><option value="10">Задумчиво</option><option value="11">Злобно</option></select><br />';}if ($user['color']!=0){echo '<select name="color"><option value="0" selected="selected">Цвет</option><option value="1">Красный</option><option value="2">Синий</option><option value="3">Сереневый</option><option value="4">Зеленый</option></select><br />';}echo '<input type="submit" class="ibutton" value="Сказать"/></form><br />';}echo '<a href="room?rm='.$rm.'&obn=obn" accesskey="'.$bs[1].'">Обновить ['.$bs[1].']</a> '.div;if (check($_GET['obn'])==obn){header ('Location: room?rm='.$rm.''); exit;}if (empty($user['max'])) $user['max']=10;$max = $user['max'];$k_post=mysql_result(mysql_query("select COUNT(*) from message WHERE `rm` = '".$rm."' and `inps` = '".$inps."';"),0);$k_page=k_page($k_post,$max);$page=page($k_page);$start=$max*$page-$max;if ($k_post == 0)echo 'Здесь сообщений пока нет :(<br />';if (isset($_GET['err']) && $_GET['err'] == 't')echo '<b>Промежуток между сообщениями должен быть больше '.$rooms['flyd'].' сек.</b><br />';if (isset($_GET['delete'])){if ($user['level']>=5){mysql_query("DELETE FROM `message` WHERE `id` = '".$_GET['delete']."'");echo 'Сообщение удалено<br />';}else{echo 'Сообщение не удалено<br />';}}if ($rooms['umnik']!=0) require H.'bots/umnik1.php';if ($rooms['shut']!=0) require H.'bots/shut.php';if ($rooms['znatok']!=0) require H.'bots/znatok.php';if ($rooms['anek']!=0) require H.'bots/anek.php';if ($rooms['tupica']!=0) require H.'bots/umnikmat1.php';if ($rooms['tupica']!=0) require H.'bots/tupica.php';$mess = @mysql_query( @"SELECT * from `message` WHERE `rm` = '".$rm."' and `inps` = '".$inps."' order by id DESC limit $start, $max;" );while($msg = @mysql_fetch_array($mess)){$text = $msg['msg'];if ($msg['color']>0) $text = color_msg($text);if ($msg['bb']>0)$text = bb_msg($text);if ($msg['emo']>0)$text = emo_msg($text);if (($rooms['tupica']==0) && ($rooms['sartir']==0))if ($rooms['antim']>0)$text = antim($text);if ($rooms['antir']>0)$text = antir($text);if ($msg['komu']!=0) {if ($user['id']==$msg['komu']) $komu = '<span style="color: #FF0000;">'.user($msg['komu']).'</span>,';else $komu = user($msg['komu']).',';}else{$komu = '';}if ($msg['privat']==0){if ($msg['user_id']!=0)echo nik($msg['user_id'],''.H.'inside?rm='.$rm.'&nk='.$msg['user_id'].'').date("(H:i", $msg['time']).')';else echo '<img src="'.H.'img/bot.gif" alt="" /><font color="#000000">'.$msg['user'].'</font>'.date("(H:i", $msg['time']).')';if ($user['level']>=5)echo '<small><a href="room?rm='.$rm.'&delete='.$msg['id'].'">[X]</a></small>';echo '>'.$komu.text($text).'<br />';}else if ($msg['privat']==$user['id']||$msg['user_id']==$user['id']){if ($msg['user_id']!=0)echo nik($msg['user_id'],''.H.'inside?rm='.$rm.'&nk='.$msg['user_id'].'').date("(H:i", $msg['time']).')';else echo '<img src="'.H.'img/bot.gif" alt="" /><font color="#ffff00">'.$msg['user'].'</font>'.date("(H:i", $msg['time']).')';echo '<b>[P!]</b>';if ($user['level']>=5)echo '<small><a href="room?rm='.$rm.'&delete='.$msg['id'].'">[X]</a></small>';echo '>'.$komu.text($text).'<br />';} else if (($msg['privat']!=$user['id']||$msg['user_id']!=$user['id']) && $user['level']>=$set['privat'] && $set['privat']!=0){ // Чтение привата супер админами...if ($msg['user_id']!=0)echo nik($msg['user_id'],''.H.'inside?rm='.$rm.'&nk='.$msg['user_id'].'').date("(H:i", $msg['time']).')';else echo '<img src="'.H.'img/bot.gif" alt="" /><font color="#ffff00">'.$msg['user'].'</font>'.date("(H:i", $msg['time']).')';echo '<b>[!!!]</b>';if ($user['level']>=5)echo '<small><a href="room?rm='.$rm.'&delete='.$msg['id'].'">[X]</a></small>';echo '>'.$komu.text($text).'<br />';}}if ($user['polevv']!=1&&$user['polevv']!=0){echo gbinroom.'Сказать:'.div;if ($ver!='wml')echo '<form action="tell?rm='.$rm.'&act=add" method="post">';if ($ver=='wml')echo '<input name="msg'.$ref.'" maxlength="512" title="Text"/><br/>';else echo '<input name="msg" maxlength="512" title="Text"/><br/>';if ($user['dd']!=0){if ($user['level']>=4){echo '<select name="dd"><option value="0" selected="selected">Шрифт</option><option value="1">Наклонный</option>';if ($user['level']>=5) echo '<option value="2">Подчёркнутый</option>';if ($user['level']>=6) echo '<option value="3">Накл. и подч.</option>';if ($user['level']>=6) echo '<option value="4">Жирный</option>';if ($user['level']>=7) echo '<option value="5">Жирн. и подч.</option>';if ($user['level']>=7) echo '<option value="6">Огромный</option>';echo '</select><br />';}}if ($user['emo']!=0){echo '<select name="emo"><option value="0" selected="selected">Эмоции</option><option value="1">Радостно</option><option value="2">Печально</option><option value="3">Удивленно</option><option value="4">Ласково</option><option value="5">Смущенно</option><option value="6">Кокетливо</option><option value="7">Обиженно</option><option value="8">Настойчиво</option><option value="9">Шепотом</option><option value="10">Задумчиво</option><option value="11">Злобно</option></select><br />';}if ($user['color']!=0){echo '<select name="color"><option value="0" selected="selected">Цвет</option><option value="1">Красный</option><option value="2">Синий</option><option value="3">Сереневый</option><option value="4">Зеленый</option></select><br />';}if ($ver=='wml'){echo '<anchor title="go">Сказать<go href="tell?rm='.$rm.'&act=add" method="post">';echo '<postfield name="msg" value="$msg'.$ref.'"/><postfield name="dd" value="$dd"/><postfield name="emo" value="$emo"/><postfield name="color" value="$color"/></go></anchor>';echo '<br/>';}else{echo '<input type="submit" class="ibutton" value="Сказать"/></form><br />';}}echo gbinroom;if(check($_GET['histiri'])==histiri){str(H.'room?rm='.$rm.'&histiri=histiri&',$k_page,$page);}else{echo '<a href="room?rm='.$rm.'&histiri=histiri" accesskey="'.$bs[6].'">История ['.$bs[6].']</a>';}echo div;if ($user['softk']!=0){if ($ver=='wml'){if ($rooms['intim']!=1)echo '<do type="options" name="who_room" label="Кто в комнате?"><go href="who_room?rm='.$rm.'"/></do>';echo '<do type="options" name="who" label="Кто где?"><go href="who?rm='.$rm.'"/></do><do type="options" name="smiles" label="Смайлы"><go href="smiles/index?rm='.$rm.'"/></do>';if ($user['level']>=4&&$rooms['intim']!=1)echo '<do type="options" name="topic" label="Сменить Топик"><go href="topic?rm='.$rm.'"/></do>';if ($user['level']>=7)echo '<do type="options" name="topic" label="Очистить комнату"><go href="room?rm='.$rm.'&del=1"/></do>';echo '<br />';}else{if ($rooms['intim']!=1)echo '[<a href="who_room?rm='.$rm.'" accesskey="'.$bs[2].'">Кто в комнате?['.$bs[2].']</a>]';echo '[<a href="who?rm='.$rm.'" accesskey="'.$bs[3].'">Кто где?['.$bs[3].']</a>][<a href="smiles/index?rm='.$rm.'" accesskey="'.$bs[4].'">Смайлы['.$bs[4].']</a>]';if ($user['level']>=4&&$rooms['intim']!=1)echo '[<a href="topic?rm='.$rm.'" accesskey="'.$bs[5].'">Сменить Топик['.$bs[5].']</a>]<br />';if ($user['level']>=7)echo '[<a href="room?rm='.$rm.'&del=1">Очистить комнату</a>]<br />';}}if ($rooms['intim']==1)echo gbinroom.'<a href="enter?intim">Выйти</a>'.div;echo gbinroom.'<a href="enter" accesskey="'.$bs[7].'">Прихожая ['.$bs[7].']</a>'.div;foot();?>

вот файл комнат,в него данные которые юзер пишет отправляются))

TLENS » 2011.08.11 01:22

И это не он коточь там поидее реврайт стоит. дай мне файл на который ссылается tell и что в config.php?

POFIGISST » 2011.08.11 01:33

Вот файл телл,он ссылается на переменную rm

Код:

1
lt;?require'config.php';$user['avr'] = 0;$align='left';$title='Сказать';aut();head();$act = check($_GET['act']);$rm = intval($_GET['rm']);if (empty($rm)) header ('Location: enter');$rooms = mysql_fetch_array(mysql_query("SELECT * FROM `rooms` WHERE `rm` = '$rm'"));if ($rooms['intim']==1){if(!isset($_POST['inps']) && isset($_SESSION['inps']))$inps = check(intval($_SESSION['inps']));else $inps = check(intval($_POST['inps']));$_SESSION['inps'] = $inps;}if(empty($inps)) $inps = 0;if (($rooms['sartir']!=1) && ($user['kik']>$time)){echo '<b>'.user($user['whokik']).'</b> выпнул вас из чата на <b>'.kikt($user['kik']).'</b> <br />Причина: <b>'.$user['whykik'].'</b><br />';$rooms = mysql_query("SELECT * FROM `rooms` WHERE sartir = '1' ORDER BY `pos` ASC");if(mysql_num_rows($rooms)!=0)echo 'Вам разрешен доступ только в<br />';while($room = mysql_fetch_array($rooms)){if ($room['level']<=$user['level'])echo '<a href="room?rm='.$room['rm'].'">'.$room['name'].'</a><br />';}echo '<br />';echo gbinroom.'<a href="enter">Прихожая</a>'.div;foot();}if (empty($act)){if ($ver!='wml')echo '<form action="tell?rm='.$rm.'&amp;act=add" method="post">';if ($ver=='wml')echo '<br/><input name="msg'.$ref.'" maxlength="512" title="Text"/><br/>';else echo '<br/><input name="msg" maxlength="512" title="Text"/><br/>';if ($user['dd']!=0){if ($user['level']>=4){echo '<select name="dd"><option value="0" selected="selected">Шрифт</option><option value="1">Наклонный</option>';if ($user['level']>=5) echo '<option value="2">Подчёркнутый</option>';if ($user['level']>=6) echo '<option value="3">Накл. и подч.</option>';if ($user['level']>=6) echo '<option value="4">Жирный</option>';if ($user['level']>=7) echo '<option value="5">Жирн. и подч.</option>';if ($user['level']>=7) echo '<option value="6">Огромный</option>';echo '</select><br />';}}if ($user['emo']!=0){echo '<select name="emo"><option value="0" selected="selected">Эмоции</option><option value="1">Радостно</option><option value="2">Печально</option><option value="3">Удивленно</option><option value="4">Ласково</option><option value="5">Смущенно</option><option value="6">Кокетливо</option><option value="7">Обиженно</option><option value="8">Настойчиво</option><option value="9">Шепотом</option><option value="10">Задумчиво</option><option value="11">Злобно</option></select><br />';}if ($user['color']!=0){echo '<select name="color"><option value="0" selected="selected">Цвет</option><option value="1">Красный</option><option value="2">Синий</option><option value="3">Сереневый</option><option value="4">Зеленый</option></select><br />';}if ($ver=='wml'){echo '<br /><anchor title="go">Сказать<go href="tell?rm='.$rm.'&amp;act=add" method="post">';echo '<postfield name="msg" value="$msg'.$ref.'"/><postfield name="dd" value="$dd"/><postfield name="emo" value="$emo"/><postfield name="color" value="$color"/></go></anchor>';echo '<br/><br />';}else{echo '<br /><input type="submit" class="ibutton" value="Сказать"/></form><br /><br />';}}else{function latrus($textw) {return str_replace( array('Ё','Ё','Ж','Ж','Ч','Ч','Щ','Щ','Щ','Ш','Ш','Э','Э','Ю', 'Ю','Я', 'Я','ч','ш','щ','э','ю','я','ё','ж','A','Б','В','Г', 'Д','E','З','И','Й ','К','Л','М','Н','О','П','Р','С','Т','У', 'Ф','Х','Ц','Ы','а','б','в', 'г','д','е','з','и','й','к','л', 'м','н','о','п','р','с','т','у','ф','х ','ц','ы','Ъ','ъ','Ь', 'ь'), array('YO','Yo','ZH','Zh','CH','Ch','SHC','SHc','Shc','SH', 'Sh','YE','Ye','YU','Yu','YA','Ya','ch','sh','shc','ye','yu', 'ya','yo ','zh','A','B','V','G','D','E','Z','I','Y','K','L', 'M','N','O','P','R' ,'S','T','U','F','H','C','X','a','b','v', 'g','d','e','z','i','y','k',' l','m','n','o','p','r','s','t', 'u','f','h','c','x','','','',''),$textw); }if ($setss[pivo]==1 || $setss[pivo]==2 || $setss[vodka]==1 || $setss[vodka]==2 ){$strr=check($_POST['msg']);$str =latrus($strr); }if ($setss[kosak]==1 ){$strr=check($_POST['msg']);$str =latrus($strr); }function vodka ($t){ $c = strlen($t); for($i=0;$i<$c;$i++) { $t[$i] = (is_int($i/2)) ? strtoupper($t[$i]) : $t[$i]; $ret[] = $t[$i]; } return implode('',$ret); } function pivo ($t){ $c = strlen($t); for($i=0;$i<$c;$i++) { $t[$i] = (is_int($i/3)) ? strtoupper($t[$i]) : $t[$i]; $ret[] = $t[$i]; } return implode('',$ret); } if ($setss[pivo]==1 || $setss[pivo]==2 ){$msg =translit(pivo($str));}if ($setss[vodka]==1 || $setss[vodka]==2 ){$msg =translit(vodka($str));}if ($setss[kosak]==1 ){$msg =vodka($str);}if ($setss[pivo]+$setss[vodka]+$setss[kosak]==0){$msg =check($_POST['msg']);}$dd = check($_POST['dd']);$emo = check($_POST['emo']);$color = check($_POST['color']);$prvt = check($_POST['prvt']);if(isset($_GET['nk'])) $nk = intval($_GET['nk']);else $nk = 0;if($prvt!=0){if(isset($_POST['prvt']) && isset($_GET['nk'])) $privat = intval($_GET['nk']);}else $privat = 0;if (strlen2($msg)<2){header ('Location: room?rm='.$rm.''); exit;}$msg = iconv('utf-8', 'windows-1251', $msg);$msg = substr($msg,0,512);$msg = iconv('windows-1251', 'utf-8', $msg);if ($user['translit']==1)$msg = translit($msg);$mess=mysql_result(mysql_query("select COUNT(*) from message WHERE `user_id` = '$user[id]' and `time`>'".($time - $rooms['flyd'])."';"),0);if ($mess > 0){ header ('Location: room?rm='.$rm.'&err=t'); exit;}if ($rooms['inkog']!=0){mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,emo,bb,color,komu,privat) VALUES ('Инкогнито','0','$time','$msg','$rm','$emo','$dd','$color','$nk','$privat')");}else{mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,emo,bb,color,komu,privat,inps) VALUES ('$user[user]','$user[id]','$time','$msg','$rm','$emo','$dd','$color','$nk','$privat','$inps')");}posts_add();if ($rooms['umnik']!=0) require H.'bots/umnik3.php';if ($rooms['tupica']!=0) require H.'bots/umnikmat2.php';if ($rooms['tupica']!=0) require H.'bots/tupica2.php';if ($rooms['flyder']!=0) require H.'bots/flyder.php';if ($rooms['strip']!=0){if ($msg=='!пива'||$msg=='!пиВа'){if ($rooms['striper']!=0){if ($user['rur']>=1){mysql_query ("Update users set rur='".($user['rur']-1)."' where id='".$user["id"]."'");mysql_query ("Update setus set pivo='1',vodka='0',timer='".(time()+600)."' where user_id='".$user["id"]."'");mysql_query ("Update setus set potr='".($setss[potr]+1)."' where user_id='".$user["id"]."'");$mes = '[yellow]держи пивка[/yellow] ';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");$mes="<a><img src=\"/strip/bar/pivo.jpeg\" alt=\"\" /></a>";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]')");}else{$mes = '[yellow]У вас недостаточно рубликов![/yellow] надо то всего один.... слюнки глотай!';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");}}else{$mes = "Извините, но в этой комнате я не работаю...";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm')");}}if ($msg=='!водки'||$msg=='!воДки'){if ($rooms['striper']!=0){if ($user['rur']>=2){mysql_query ("Update users set rur='".($user['rur']-2)."' where id='".$user["id"]."'");mysql_query ("Update setus set vodka='1',timer='".(time()+1200)."',pivo='0' where user_id='".$user["id"]."'");mysql_query ("Update setus set potr='".($setss[potr]+2)."' where user_id='".$user["id"]."'");$mes = '[yellow]хватай стакан крепче![/yellow] ';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");$mes="<a><img src=\"/strip/bar/vodka.jpeg\" alt=\"\" /></a>";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]')");}else{$mes = '[yellow]У вас недостаточно рубликов![/yellow] надо то всего один.... слюнки глотай!';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");}}else{$mes = "Извините, но в этой комнате я не работаю...";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm')");}}if ($msg=='!косяк' || $msg=='!коСяК' || $msg=='!kOsYaK'){if ($rooms['striper']!=0){if ($user['rur']>=15){mysql_query ("Update users set rur='".($user['rur']-15)."' where id='".$user["id"]."'");mysql_query ("Update setus set kosak='1',pivo='0',vodka='0',timkos='".(time()+1800)."' where user_id='".$user["id"]."'");mysql_query ("Update setus set potr='".($setss[potr]+5)."' where user_id='".$user["id"]."'");$mes = '[yellow]пыхай...[/yellow] ';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");$mes="<a><img src=\"/strip/bar/kosak.jpeg\" alt=\"\" /></a>";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]')");}else{$mes = '[yellow]У вас недостаточно рубликов![/yellow] надо то всего один.... слюнки глотай!';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");}}else{$mes = "Извините, но в этой комнате я не работаю...";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm')");}}if ($msg=='! LeKaRsTvO' || $msg=='! лЕкаРстВо' || $msg=='! ЛеКаРсТвО'){if ($rooms['striper']!=0){if ($user['rur']>=1){mysql_query ("Update users set rur='".($user['rur']-10)."' where id='".$user["id"]."'");mysql_query ("Update setus set kosak='0',pivo='0',vodka='0',timer='0',timkos='0' where user_id='".$user["id"]."'");mysql_query ("Update setus set potr='".($setss[potr]+10)."' where user_id='".$user["id"]."'");$mes = '[yellow]ща мы тебя вылечим - 1 рубль[/yellow] ';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");$mes="<a><img src=\"/strip/bar/tabletka.jpeg\" alt=\"\" /></a>";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]')");}else{$mes = '[yellow]У вас недостаточно рубликов![/yellow] надо то всего десять.... торчи дальше!';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");}}else{$mes = "Извините, но в этой комнате я не работаю...";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm')");}}if ($msg=='!хентай' || $msg=='!хЕнтАй' || $msg=='!хеНтАй' || $msg=='!хeNtAy'){if ($rooms['striper']!=0){if ($user['rur']>=1){mysql_query ("Update users set rur='".($user['rur']-1)."' where id='".$user["id"]."'");mysql_query ("Update users set rurmag='".($user['rurmag']+1)."' where id='".$user["id"]."'");$mes = '[yellow]минус рублик гг[/yellow] ';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");$rand=rand(1,200);$mes="<a><img src=\"/strip/xen/".$rand.".JPG\" alt=\"\" /></a>";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]')");}else{$mes = '[yellow]У вас недостаточно рубликов![/yellow] надо то всего один.... в щелку подсматривай за другими или сбегай в банк';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");}}else{$mes = "Извините, но в этой комнате я не работаю...";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm')");}}if ($msg=='!мужик' || $msg=='!муЗхиК' || $msg=='!мУзХиК' || $msg=='!mUzHiK'){if ($rooms['striper']!=0){if ($user['rur']>=1){mysql_query ("Update users set rur='".($user['rur']-1)."' where id='".$user["id"]."'");mysql_query ("Update users set rurmag='".($user['rurmag']+1)."' where id='".$user["id"]."'");$mes = '[yellow]минус рублик гг[/yellow] ';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");$rand=rand(1,1001);$mes="<a><img src=\"/gifts/3/".$rand.".jpg\" alt=\"\" /></a>";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]')");}else{$mes = '[yellow]У вас недостаточно рубликов![/yellow] надо то всего один.... в щелку подсматривай за другими или сбегай в банк';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");}}else{$mes = "Извините, но в этой комнате я не работаю...";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm')");}}if ($msg=='!бомжую' || $msg=='!боМзхУю' || $msg=='!бОмЗхУйУ' || $msg=='!bOmZhUyU'){if ($rooms['striper']!=0){$mes = '[yellow]Нравится? гг[/yellow] ';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");$rand=rand(1,1381);$mes="<a><img src=\"/gifts/2/".$rand.".jpg\" alt=\"\" /></a>";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]')");}else{$mes = "Извините, но в этой комнате я не работаю...";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm')");}}if ($msg=='!баба' || $msg=='!баБа' || $msg=='!бАбА' || $msg=='!bAbA'){if ($rooms['striper']!=0){if ($user['rur']>=1){mysql_query ("Update users set rur='".($user['rur']-1)."' where id='".$user["id"]."'");mysql_query ("Update users set rurmag='".($user['rurmag']+1)."' where id='".$user["id"]."'");$mes = '[yellow]минус рублик гг[/yellow] ';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");$rand=rand(1,208);$mes="<a><img src=\"/strip/baba/".$rand.".jpg\" alt=\"\" /></a>";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]')");}else{$mes = '[yellow]У вас недостаточно рубликов![/yellow] надо то всего один.... в щелку подсматривай за другими или сбегай в банк';mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm','$user[id]','$user[id]')");}}else{$mes = "Извините, но в этой комнате я не работаю...";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_striper','0','".($time+1)."','".$mes."','$rm')");}}}if ($rooms['zags']!=0){if ($rooms['svaisch']!=0){$zag= mysql_query ("Select * from zags WHERE `status` ='1' LIMIT 1 ");$zags = mysql_fetch_array ($zag);if($zags[status]==1){$zag2= mysql_query ("Select * from users WHERE `id` ='".$zags[genix]."' LIMIT 1 ");$zags2 = mysql_fetch_array ($zag2);$zag3= mysql_query ("Select * from users WHERE `id` ='".$zags[nevesta]."' LIMIT 1 ");$zags3 = mysql_fetch_array ($zag3);$zag4= mysql_query ("Select * from users WHERE `id` ='".$zags[svid]."' LIMIT 1 ");$zags4 = mysql_fetch_array ($zag4);$zag5= mysql_query ("Select * from users WHERE `id` ='".$zags[svidet]."' LIMIT 1 ");$zags5 = mysql_fetch_array ($zag5);$zag1= mysql_query ("Select * from users WHERE `id` ='".$zags[ved]."' LIMIT 1 ");$zags1 = mysql_fetch_array ($zag1);if($user['id']==1 || $user[level]==9 || $zags[ved]==$user[id]){if ($msg=='!начать'||$msg=='!nachat'){$mes = "Мы собрались сдесь чтобы скрепить брачными узами два любящих сердца $zags2[user] и $zags3[user] . Прошу свидетелей засвидетельствовать что это святое действие не по принуждению ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm')");$mes = "свидетельствуеш ли ты $zags4[user] что $zags2[user] по доброй воли женится сегодня на $zags3[user]" ;mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm')");$mes = "набери команду !да или !da ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm','$zags[svid]','$zags[svid]')");if (mysql_query('UPDATE `zags` SET `nach` = "1" WHERE `id` ="'.$zags[id].'" LIMIT 1 '));}}if($zags[nach2]==0){if($zags[nach]==1){if($user['id']==1 || $user[level]==9 || $zags[svid]==$user[id] ){if ($msg=='!да' || $msg=='!da'){$mes = "свидетельствуеш ли ты $zags5[user] что $zags3[user] по доброй воли выходит замуж сегодня за $zags2[user]" ;mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm')");$mes = "набери команду !да или !da ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm','$zags[svidet]','$zags[svidet]')");if (mysql_query('UPDATE `zags` SET `nach2` = "1" WHERE `id` ="'.$zags[id].'" LIMIT 1 '));}}}}if($zags[nach3]==0){if($zags[nach2]==1){if($user['id']==1 || $user[level]==9 || $zags[svidet]==$user[id] ){if ($msg=='!да' || $msg=='!da'){$mes = "и так начнем церемонию" ;mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm')");$mes = "[yellow]Обручается раб Божий $zags2[user] рабе Божией $zags3[user] во имя Отца и Сына и Святаго Духа, ныне и присно и во веки веков. Аминь.[/yellow]";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm' )");$mes = " $zags2[user] [yellow]Имеешь ли произволение благое и непринужденное и крепкую мысль взять себе в жены [/yellow] $zags3[user] ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm' )");$mes = "набери команду !имею или !imeu ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm','$zags[genix]','$zags[genix]')");if (mysql_query('UPDATE `zags` SET `nach3` = "1" WHERE `id` ="'.$zags[id].'" LIMIT 1 '));}}}}if($zags[nach4]==0){if($zags[nach3]==1){if($user['id']==1 || $user[level]==9 || $zags[genix]==$user[id] ){if ($msg=='!имею' || $msg=='!imeu'){$mes = "$zags3[user] [yellow] Имеешь ли произволение благое и непринужденное, и твердую мысль, взяти себе в мужа сего [/yellow] $zags2[user] ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm' )");$mes = "набери команду !имею или !imeu ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm','$zags[nevesta]','$zags[nevesta]')");if (mysql_query('UPDATE `zags` SET `nach4` = "1" WHERE `id` ="'.$zags[id].'" LIMIT 1 '));}}}}if($zags[nach5]==0){if($zags[nach4]==1){if($user['id']==1 || $user[level]==9 || $zags[nevesta]==$user[id] ){if ($msg=='!имею' || $msg=='!imeu'){$mes = "$zags3[user] и $zags2[user] [yellow] в знак искренности своих намерений, дайте друг другу клятвы вечной любви и согласия! [/yellow]";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm' )");$mes = "[yellow]Клянешся ли ты раб божий $zags2[user] в радости и в горе любить и оберегать рабу божью[/yellow] $zags3[user] ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm')");$mes = "набери команду !клянусь или !klenus ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm','$zags[genix]','$zags[genix]')");if (mysql_query('UPDATE `zags` SET `nach5` = "1" WHERE `id` ="'.$zags[id].'" LIMIT 1 '));}}}}if($zags[nach6]==0){if($zags[nach5]==1){if($user['id']==1 || $user[level]==9 || $zags[genix]==$user[id] ){if ($msg=='!клянусь' || $msg=='!klenus'){$mes = "[yellow]Клянешся ли ты раба божья $zags3[user] в радости и в горе любить и оберегать раба божьего[/yellow] $zags2[user] ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm')");$mes = "набери команду !клянусь или !klenus ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm,komu,privat) VALUES ('".$zags1[user]."','0','".($time+1)."','".$mes."','$rm','$zags[nevesta]','$zags[nevesta]')");if (mysql_query('UPDATE `zags` SET `nach6` = "1" WHERE `id` ="'.$zags[id].'" LIMIT 1 '));}}}}if($zags[nach6]==1){if($user['id']==1 || $user[level]==9 || $zags[nevesta]==$user[id] ){if ($msg=='!клянусь' || $msg=='!klenus'){$mes = "[yellow]И десница раб Твоих благословится! Жених и невеста, обменяйтесь кольцами в ознаменование благодатной помощи в сохранении супружеской любви, немеркнущей благодаря Божией милости! [/yellow] ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm')");$mes = "$zags3[user] и $zags2[user] [green]объявляю вас мужем и женой! Присуствующие, можете поздравить новобрачных! [/green] ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm')");mysql_query ("INSERT INTO zags2 (genix,nevesta,time) VALUES ('".$zags[genix]."','".$zags[nevesta]."','".$time."')");if (mysql_query('UPDATE `users` SET `para` ="'.$zags[nevesta].'" WHERE `id` ="'.$zags[genix].'" LIMIT 1 '));if (mysql_query('UPDATE `users` SET `para` ="'.$zags[genix].'" WHERE `id` ="'.$zags[nevesta].'" LIMIT 1 '));mysql_query("DELETE FROM `zags` WHERE `id`='".$zags[id]."' LIMIT 1");}}}}else{$mes = "нет открытых церемоний ";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm')");}}else{$mes = "извините но в этой комнате я не работаю";mysql_query ("INSERT INTO message (user,user_id,time,msg,rm) VALUES ('$user_svaisch','0','".($time+1)."','".$mes."','$rm')");}}header ('Location: room?rm='.$rm.'');exit;}echo gb.'<a href="room?rm='.$rm.'">В чат </a>'.div;foot();?>

Добавлено спустя   1 минуту  50 секунд:
в конфиг вродь ток подключение к базе идет,и паро мелких настроек)) ну вот его тоже выкладываю))

Код:

1
lt;?// НАСТРОЙКИ СОЕДИНЕНИЯ С БДdefine('DB_host','localhost'); // Хостdefine('DB_user','114464'); // Пользователь БДdefine('DB_pass','114464'); // Парольdefine('DB_db','114464'); // БД// ПРОЧИЕ НАСТРОЙКИ///////////// ЭТО НЕ ТРОГАЕМ!/////////|||/require_once'sys/start.php'; //include_once 'sys/sys.php'; ///////////////////////////////// Настройки групп$set['p_add_gr'] = 1; // Посты для создания группы$set['s_gr_logo'] = 50; // Вес лого$set['w_logo_gr'] = 200;// Высота лого (отображение)$set['h_logo_gr'] = 100;// Ширина лого (отображение)// Настройки обменника файлов$set['path'] = 'files';// папка с файлами$set['fo_size'] = 10; // макс размер в мб$set['fo_day_new'] = 2; // сколько файл считается новым$set['prev_size'] = '80*80'; // размер превьюшек$set['marker'] = 1;// включен - 1, нет - 0$set['text_marker'] = 'Gggg';// текст маркера$set['rur_1mb'] = 1; // + рублей за 1мб загружаемых файлов$set['top_num'] = 20; // Топ ... Юзеров и файлов$set['eval_change'] = 1; // не меняемrequire_once H."sys/bann.php";?>
TLENS » 2011.08.11 01:37

Корочь давай архив с чатом а то мы так будем месяц искать

POFIGISST » 2011.08.11 01:38

А что если просто так

Код:

1
2
3
4
5
6
7
8
echo '<select name=\"prvt\">
<option value=\"0\">Всем</option>';
if($user['posts']>'50')
{
echo '<option value=\"1\">Приватно</option>';
}
 
echo '</select><br/>';

прписать,ну только ошибку в этом коде исправить((
Добавлено спустя   1 минуту  18 секунд:
В Этой теме он ))

POFIGISST » 2011.08.13 21:35

подскажите как сделать при нажатии на ссылку занос число в базу? например ссылка "Слить" нажимаешь на нее и в базу в определенное поле записывается значение "1" ,как такое сделать?)

tipsun » 2011.08.14 05:46

Подскажите, делает ли что-то с кодировкой функция strtr() и strtolower(), т.к. у меня глюки с кодировкой начинались и на хосте.

Gemorroj » 2011.08.14 09:57

да. эти функции некорректно работают с мультибайтовыми кодировками.
используй mbstring.

tipsun » 2011.08.14 12:37

Мой мозг никак не высрет функцию антимата.
Можно простым str_ireplace(); то, что есть в архиве, но будет проходить м-а.т

Gemorroj » 2011.08.14 14:03

tipsun, мат всегда будет проходить. Я бы вообще не заморачивался такими глупостями.

POFIGISST » 2011.08.16 04:06

подскажите как всунуть таблу из базы в переменную,идет табла foto_add,и там поле adres,что типа такого должно быть $zzz = foto_add['adres'];,только это не правильно(

TLENS » 2011.08.16 04:20

Код:

1
span style="color: #0000BB"><?php$q = mysql_query("SELECT ...");$foto_add = mysql_fetch_array($q);echo $foto_add['adres'];
POFIGISST » 2011.08.16 04:23

TLENS написал:

Код:

1
span style="color: #0000BB"><?php$q = mysql_query("SELECT ...");$foto_add = mysql_fetch_array($q);echo $foto_add['adres'];

Спасибо большое Дим))

POFIGISST » 2011.08.16 04:54

как можно  3 переменных прикрепить? примерно вот так

Код:

1
echo '<img src="http://'.$sit.''.$foto_add['adres'].''.jpg"><br>';

тут 2 переменных,и незнаю как их скрепить в одной строке((

и еще вопрос,какая у меня вот тут

Код:

1
span style="color: #0000BB"><?phprequire'config.php';$q = mysql_query("SELECT ...");$foto_add = mysql_fetch_array($q);echo $foto_add['adres'];//$sit = $_SERVER['HTTP_HOST'];echo '<img src="http://test4.ru'.$foto_add['adres'].'.jpg"><br>'; ?>

ошибка?((

TLENS » 2011.08.16 04:57

Код:

1
span style="color: #0000BB"><?php$a1 = 1;$a2 = 2;$a3 = 3;echo '[' . $a1 . $a2 . $a3 .']';

[123]
Добавлено спустя   1 минуту  12 секунд:
но можно и таким образом как это делал ты $a1 . '' . $a2

POFIGISST » 2011.08.16 05:12

ну вот у мя такой говнокод вышел

Код:

1
span style="color: #0000BB"><?phprequire'config.php';$q = mysql_query("SELECT ...");$a2 = mysql_fetch_array($q);$sit = $_SERVER['HTTP_HOST'];echo '<img src ="http://[' . $sit . $a2 .'].jpg"><br>';?>
TLENS » 2011.08.16 05:14

SELECT ... замени на нормальный запрос
Добавлено спустя   1 минуту  10 секунд:
и $a2 это массив уверен у тебя пишет array

POFIGISST » 2011.08.16 05:17

$q = mysql_query("SELECT * FROM  foto_add");

на такой заменить?))прост с базами у мя ваще беда((
Добавлено спустя   1 минуту  16 секунд:
ты прав насчет массива,пишет вот так "<img src ="http://[test4.ruArray].jpg"><br>" (((

TLENS » 2011.08.16 05:22

бля я как тебе написал? $a2['adres']
вставь var_dump($a2);
Добавлено спустя   1 минуту  1 секунду:
лан я спать

POFIGISST » 2011.08.16 05:25

массив уже убрал,теперь так

Код:

1
<img src ="http://[test4.ru/files/album/album_2_3].jpg"><br>

если убрать [ скобочки,то картинка норм будет появляться))

TLENS » 2011.08.16 05:26

ну так в чем проблема?

POFIGISST » 2011.08.16 05:26

TLENS написал:

бля я как тебе написал? $a2['adres']
вставь var_dump($a2);
Добавлено спустя   1 минуту  1 секунду:
лан я спать

приятных тебе))

вот такой код

Код:

1
echo '<img src ="http://' . $sit . $foto_add['adres'] .'.jpg"><br>';

все норм выводит))спасибо еще раз))
Добавлено спустя   1 минуту  20 секунд:

TLENS написал:

ну так в чем проблема?

ну так я же думал,что если уберу их,то ошибка синтаксиса будет((

TLENS » 2011.08.16 05:29

новый вызов mysql_fetch_array покажет следующий столбец. ну вообщем спрашивай если что не понятно. да и не забывай читать инфу о функциях

POFIGISST » 2011.08.16 05:31

TLENS написал:

новый вызов mysql_fetch_array покажет следующий столбец. ну вообщем спрашивай если что не понятно. да и не забывай читать инфу о функциях

а если мне нужен именно не следующий столбец,а 5 или 10 например?

Gemorroj » 2011.08.16 10:24

не столбец, а строку.
у тега img атрибут alt обязательный.

TLENS » 2011.08.16 10:32

Gemorroj написал:

не столбец, а строку.
у тега img атрибут alt обязательный.

а ну да

POFIGISST » 2011.08.16 22:03

а с альтом это вот так

Код:

1
echo '<img src ="http://' . $sit . $foto_add['adres'] .'.jpg"><alt="фото"/><br/>';

?)

tipsun » 2011.08.16 22:11

http://htmlbook.ru

TLENS » 2011.08.16 22:12

POFIGISST написал:

а с альтом это вот так

Код:

1
echo '<img src ="http://' . $sit . $foto_add['adres'] .'.jpg"><alt="фото"/><br/>';

?)

ГГ

Код:

1
echo '<img src ="http://' . $sit . $foto_add['adres'] .'.jpg alt="фото" /><br/>';
POFIGISST » 2011.08.16 22:16

Подскажите)))вот у мя идет такой код

Код:

1
lt;?require'../config.php';$align='left';$title='Подарки';aut();head();who_add(0,'enter');$mod = check($_GET['mod']);if(!isset($_GET['nk']) && isset($_SESSION['nk']))$nk = check($_SESSION['nk']);else {$nk = check($_GET['nk']);$_SESSION['nk']=$_GET['nk'];}switch($mod){default:echo 'Подароки <b>'.user_inf($nk,'user').'</b><br/><br />';if (empty($user['max'])) $user['max']=10;$max = $user['max'];$k_post=mysql_result(mysql_query("select count(*) as num from gifts where gift_id = '".$nk."'"),0);$k_page=k_page($k_post,$max);$page=page($k_page);$start=$max*$page-$max;$r = mysql_query ("Select * from gifts where gift_id = '".$nk."' order by time desc LIMIT $start, $max");if ($k_post == 0)echo 'Подарков пока нет...<br />';$post_k=$start+1;while($a = @mysql_fetch_array($r)){if ($a[publ]!=0){if ($user[id]==$nk||$user[id]==$a[user_id])echo '<a href="'.H.'gifts'.$nk.'_'.$a[id].'"><img src="'.H.'gifts/'.$a['gift'].'" title="Личный подарок!"/></a> ';else echo '<img src="'.H.'img/gl.gif"/> ';}else{echo '<a href="'.H.'gifts'.$nk.'_'.$a[id].'"><img src="'.H.'gifts/'.$a['gift'].'" title="Информация о подарке"/></a> ';}}if ($k_page>1){echo '<dl><dt></dt></dl>';str(''.H.'gifts'.$nk.'?',$k_page,$page);echo '<br /><dl><dt></dt></dl>';}echo '<br /><a href="gifts/index?mod=add&amp;nk='.$nk.'">Сделать подарок</a><br />';break;case 'read':$gift = check(intval($_GET['gift']));$a = @mysql_fetch_array(mysql_query ("Select * from gifts where gift_id = '".$nk."' and id = '".$gift."'"));echo '<img src="'.H.'gifts/'.$a['gift'].'"/><br />';if ($a[anonim]==0)$gu = nik($a[user_id]); else $gu = 'Аноним';if ($a[publ]==0)$publ = ''; else $publ = ' </b>(<u title="Подарок виден только вам!">Лично</u>)<b>';echo '<u>Подарил:</u> <b>'.$gu.$publ.'</b> ('.times($a['time']).')<br />';echo '<u>Комментарий:</u><br />'.$a['kom'].'<br />';if($user[id]==$nk || $user[level]>=5)echo '<br /><a href="'.H.'gifts'.$nk.'_'.$a[id].'?del">Удалить</a><br />';if (isset($_GET['del'])){if($user[id]==$nk || $user[level]>=5){mysql_query("DELETE FROM gifts where gift_id = '".$nk."' and id = '".$gift."'");}header ('Location: '.H.'gifts'.$nk.'?'.SID);}break;case 'add':if (!user($nk)){echo 'Такого пользователя не существует!'; exit; }echo 'Подарок для <b>'.user_inf($nk,'user').'</b><br/>';require_once(H."sys/func/count_dir.php");$downdir_array = array();$dir = opendir (".");while ($file = readdir ($dir)) {if (is_dir($file)) {if($file=="."||$file=="..") continue;$downdir_array[]=$file;}}closedir ($dir);sort($downdir_array);$total = count($downdir_array);for ($i = 0; $i < $total; $i++){echo '<img src="../img/dir.gif" alt=""/> <a href="?mod=addi&amp;path='.$downdir_array[$i].'&amp;'.SID.'">Подарки по '.$downdir_array[$i].' рублей</a> ('.count_dir($downdir_array[$i]).')<br/>';}break;case 'addi':$path = check(intval($_GET['path']));$d=opendir("$path");if(isset($_GET['list']))$list = check(intval($_GET['list']));else $list = check(intval($_POST['list']));if(!$list) $list = "1";$n = "1";while(($k=readdir($d))!==false){if ($k=='.'||$k=='..'||$k=="index.php"||$k==".htaccess"||$k==".Thumbs.db") continue;$n++;}closedir($d);$num=($n/$user['max']);if ($num!==(int)$num){$foo = (int) $num;$fo = ($foo + 1);}else{$fo=$num;}if ($list == "") {$c="0";}else{$c=($user['max']*($list-1));}$d=opendir("$path");$la = "-1";echo 'Подарок для <b>'.user_inf($nk,'user').'</b><br/>';echo 'Стоймость подарка: <b>'.$path.'</b> рублей<dl></dl>';while(($e=readdir($d))){if ($e=='.'||$e=='..'||$e=="index"||$e==".htaccess"||$e==".Thumbs.db") continue;$la = $la + 1;if($la>$c-1 and $la<$c+$user['max']){$laa = $la + 1; // Номер файлаecho "<a href=\"index?mod=gift&amp;path=$path&amp;gift=$e\"><img src=\"$path/$e\" alt=\"$e1\"/></a> ";}}for ($i=0; $i<=$fo; $i++)if ($list == "$path") {$c=0;}else{$c=($user['max']*($list-1));}$lis = $list + 1;$lis1 = $list - 1;echo '<br/>';if ($lis1 < 1){echo "&lt;&lt;пред.";}else{echo "<a href=\"index?list=$lis1&amp;mod=".$mod."&amp;path=$path\">&lt;&lt;пред. </a>";}if ($lis == $i){echo "| след.&gt;&gt;<br/>";}else{echo "| <a href=\"index?list=$lis&amp;mod=".$mod."&amp;path=$path\">след.&gt;&gt;</a><br/>";}if ($ver!='wml') echo "<form method=\"POST\" action=\"index?mod=".$mod."&amp;path=$path\" name=\"auth\">";echo "Перейти к:<br/>";echo "<input name=\"list\" format=\"*N\" size=\"3\"/><br/>";echo "странице<br/>";if ($ver=='wml'){echo "<anchor title=\"go\">Пошёл<go href=\"index?mod=".$mod."&amp;path=$path\" method=\"post\">";echo "<postfield name=\"list\" value=\"$(list)\"/>";echo "</go></anchor>";echo "<br/>";}else{echo "<input type=\"submit\" class=\"ibutton\" value=\"Пошёл\" name=\"enter\"><br/>";}$alls = $i - 1;echo "<br/>";echo "Подарков:<b> $n</b><br/>Страницa:<b> $list/$alls</b><br/>";closedir($d);break;case 'gift':$path = check(intval($_GET['path']));$gift = check($_GET['gift']);if ($user['rur']<$path)$err = 'У вас нет <b>'.$path.'</b> рублей!';if (empty($err)){$act = check($_GET['act']);if (empty($act)){echo '<b>Подарок:</b><br /><img src="'.$path.'/'.$gift.'"/><br />';if ($ver!='wml')echo '<form action="index?mod='.$mod.'&amp;act=add&amp;&amp;path='.$path.'&amp;gift='.$gift.'&amp;'.SID.'" method="post">';echo 'Комментарий:<br /><input name="kom" title="Комментарий"/><br/>';echo '<input type="checkbox" name="anonim" value="1"/> Анонимный<br/>';echo '<input type="checkbox" name="publ" value="1"/> Личный<br/>';if ($ver=='wml'){echo '<br /><anchor title="go">Сделать подарок<go href="index?mod='.$mod.'&amp;act=add&amp;&amp;path='.$path.'&amp;gift='.$gift.'&amp;'.SID.'" method="post"><br />';echo '<postfield name="kom" value="$kom"/><postfield name="anonim" value="$anonim"/><postfield name="publ" value="$publ"/></go></anchor><br /><br />';}else{echo '<br /><input type="submit" class="ibutton" value="Сделать подарок" class="cp"><br />';}}else{$kom = check($_POST['kom']);$anonim = check(intval($_POST['anonim']));$publ = check(intval($_POST['publ']));if ($user['translit']==1)$kom = translit($kom);mysql_query("INSERT INTO `gifts` (user_id,gift_id,time,kom,gift,anonim,publ) values('$user[id]','".user_inf($nk)."','$time','$kom','".$path."/".$gift."','$anonim','$publ')");$rurm = $user['rur']-$path;mysql_query('UPDATE `users` SET `rur` = "'.$rurm.'" WHERE `id` = "'.$user['id'].'"');echo 'Подарок отправлен пользователю <b>'.user_inf($nk,'user').'</b>!<br />';if ($anonim==1)$podaril = 'Аноним';else $podaril = $user['user'];if (user_inf($nk,'fr_notify')==1){if ($user['sex']==1)$sex = 'сделал'; else $sex = 'сделала';$ids = mysql_fetch_array(mysql_query("SELECT * FROM `gifts` WHERE `kom` = '".$kom."'"));$idi=$ids['id'];$msg = 'Пользователь [b]'.$podaril.'[/b] '.$sex.' Вам [url=/gifts'.$nk.'_'.$idi.']подарок[/url].';mysql_query ("INSERT INTO privat (user,user_id,to_user,to_id,time,msg) VALUES ('$user_system','0','".user($nk)."','".user_inf($nk)."','$time','$msg')");$subject = $_SERVER['HTTP_HOST'];$msgmail = ''.$podaril.' '.$sex.' Вам подарок.\r Просмотреть Ваши подарки можно на странице:\r http://'.$_SERVER['HTTP_HOST'].'/gifts'.$nk.' \r\r С уважением,Администрация '.$_SERVER['HTTP_HOST'].'\r\r\r_ _ _ _ _Вы можете поменять настройки e-mail оповещений на странице:http://'.$_SERVER['HTTP_HOST'].'/my/setting?mod=notify';$adds = "From: <admin@".$_SERVER['HTTP_HOST'].">";$adds .= "X-sender: <admin@".$_SERVER['HTTP_HOST'].">";$adds .= "Content-Type: text/plain; charset=utf-8";$mail=explode('|',user_inf($to,'mail'));mail($mail[0],$subject,$msgmail,$adds);}}}else echo $err;break;}echo '<br />';echo gb.'<a href="/gifts'.$nk.'">Подарки</a>'.div;echo gb.'<a href="'.H.$nk.'">В анкету</a>'.div;echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;foot();?>

Это идет вывод подарков,значение сколько картинок выводить на страницу,берется из базы, табла users поле max ,смысл в том что в это поле заносятся настройки сколько сообщений выводить в комнатах,хочу изменить,чтоб значение бралось не из базы,а просто так сразу выводило по 5 подарков на страницу,полностью без базы,только как это сделать,не совсем понимаю((
Добавлено спустя   1 минуту  53 секунды:

tipsun написал:

http://htmlbook.ru

я как раз там и смотрел синтаксис его)))
Добавлено спустя   3 минуты :

TLENS написал:

POFIGISST написал:

а с альтом это вот так

Код:

1
echo '<img src ="http://' . $sit . $foto_add['adres'] .'.jpg"><alt="фото"/><br/>';

?)

ГГ

Код:

1
echo '<img src ="http://' . $sit . $foto_add['adres'] .'.jpg alt="фото" /><br/>';

спасибо))вопрос не по теме ,а как ты сделал такой шрифт,которым у тя подпись,ну это "Мое творчество.
the-best-xxx.ru
podsmotri.org
И еще пару покамест не стоящих внимания."

TLENS » 2011.08.16 22:41

Не понял вопроса. [ size=8][/size ]

POFIGISST » 2011.08.16 22:44

TLENS написал:

Не понял вопроса.

какого из всех?а то я много задал((сорри((

tipsun » 2011.08.16 23:51

Вроде так

Код:

1
span style="color: #0000BB"><?php//$max = $user['max'];$max = 5;/*а вообще ноги растут с /sys/user.php файла, может и в нем поменять, может не только тут этот параметр используется*/// Запрос в базе данных по юзеруif ($us && $pass) {$req = $db->sql_query("SELECT * FROM `users` WHERE `id` = '".check(intval($us))."' LIMIT 1");if ($db->sql_numrows($req)) {$user = $db->sql_fetchrow($req);//можно и так:$user['max'] = 5;if (md5($pass) === $user['pass']) { // =D}else {// Если пароль не совпадает, уничтожаем переменные сессии и чистим кукиunset ($_SESSION['id']);unset ($_SESSION['ps']);setcookie('id', '');setcookie('ps', '');$user = false;}?>
POFIGISST » 2011.08.17 00:17

Офигеть :O  работает ,спасибо,пассы и так в мд5 в базе храняться  =D

Gemorroj » 2011.08.17 11:10

check(intval($us))
wtf?

POFIGISST » 2011.08.20 00:19

что это за ошибка при заливке базы?

Gemorroj » 2011.08.20 08:56

ну, там же написано. записываешь данные в колонку, которой не существует.

Nu3oN » 2011.08.23 01:34

Голова уже лопается... необходимо при создании объекта класса, передавать неопределенное колличество аргументов!
Например:

Код:

1
span style="color: #0000BB"><?phpfunction getClass($name, $args=array()){ $a = new $name(/* Сюда надо как то вставить аргументы из массива $args */); return $a;}

потом

Код:

1
span style="color: #0000BB"><?php$a = getClass('class_one', array(1, 2, 3, 4));$b = getClass('class_two', array('a', 'b', 'c'));

Как это можно реализовать? __autoload даже не предлагать гг

Пробовал еще так:

Код:

1
span style="color: #0000BB"><?php$a = new $name();call_user_func_array(array($a, '__construct'), $args);

Но тогда фигня выходит... Обьекты дублируются:

array(0) { }
array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) }
array(0) { }
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }

это хорошо если аргументы не указаны в конструкторе! а если указаны...
Должно быть как минимум два, и я введу эти два аргумента, а мне будет выдавать ошибку, и скрипт будет спокойно работать дальше!

Nu3oN » 2011.08.23 02:36

Все! разобрался!
Мне интересно почему так получается, если в функции создать класс, то выдаст ошибку, если же в этой же функции подключить файл (через include / require) то все нормально?

Gemorroj » 2011.08.23 19:51

не понял.. как ты создаешь класс? через eval чтоли? и как проблему с неопределенным числом аргументов решил?

TLENS » 2011.08.23 20:18

Nu3oN
Возможно проблема из за не глобальных переменных

Nu3oN » 2011.08.23 22:16

Gemorroj написал:

не понял.. как ты создаешь класс? через eval чтоли? и как проблему с неопределенным числом аргументов решил?

Код:

1
span style="color: #0000BB"><?phpfunction getClass($name, $args=array()){ require($name . '.class.php'); require('PassingArguments.class.php'); result new PassingArguments($args);}И сам файл PassingArguments:eval(' class PassingArguments extends '.$name.' { function __construct($args) { call_user_func_array(\'parent::__construct\', $args); } }');?>

Добавлено спустя   2 минуты  31 секунду:
Можно еще так:

Код:

1
span style="color: #0000BB"><?php$reflection = new ReflectionClass('NameClass');$object = $reflection -> newInctanceArgs(array(/* аргументы */));?>

Но не у всех есть такая библа =)

TLENS » 2011.08.23 22:41

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

Gemorroj » 2011.08.23 22:57

Nu3oN, я тоже переодически сталкиваюсь с такой проблемой с аргументами, пока нормальных решений не знаю. что eval, что Reflection - говно..
Добавлено спустя   1 минуту  20 секунд:
TLENS, подробнее код. по-моему, это уже обсуждали, возможно, загружен канал

Nu3oN » 2011.08.23 23:47

Gemorroj написал:

Nu3oN, я тоже переодически сталкиваюсь с такой проблемой с аргументами, пока нормальных решений не знаю. что eval, что Reflection - говно..

Лучших вариантов на ближайшее время не вижу (= точнее вообще никаких не наблюдаю гг

Nu3oN » 2011.08.25 01:02

В общем очередной раз переписываю свою cms, и вот решил изменить полностью структуру MVC...
В прошлый раз я писал все иначе, все делилось просто: "/папка/контроллер/переменные" без права на выбор!
Теперь решил все сделать как должно быть! и мне необходимо из URL получить путь к контроллеру, класс контроллера и выводимый метод, с учетом того-что папок может быть очень много! решил это реализовать так:

Код:

1
span style="color: #0000BB"><?php $_GET['do'] = '/dir/dir/dir/class/method/'; // Образец (папок может быть хоть сколько) $arrDefault = array('path' => 'home', 'class' => 'welcome', 'method' => 'index', 'vars' => 'null'); $arrPath = array_filter(explode('/', $_GET['do']), 'trim'); $intPath = count($arrPath); $i=0; $get = array('str'=>'', 'dir'=>'', 'class'=>''); foreach ($arrPath as $key) { $get['str'] = (empty($get['dir']) ? null : $get['dir']) . $key; if (is_dir(PS_EXTRA_CONTROLLERS . $get['str']. '/')) { $get['dir'] = $get['str'] . '/'; } else { if (is_file(PS_EXTRA_CONTROLLERS . $get['str'] . '.php')) { $get['class'] = $arrPath[$i]; } } ++$i; } $arrDefault['path'] = empty($get['dir']) ? $arrDefault['path'] : $get['dir']; $arrDefault['class'] = empty($get['class']) ? $arrDefault['class'] : $get['class'];?>

Насколько это гуманно?

Gemorroj » 2011.08.25 11:30

ну да, 2 вариант - маппинг. т.е. разработчик сам прописывает в диспетчере все возможные запросы, и в бутстрапе просто ищутся соответствия с заранее определенными правилами.

tipsun » 2011.08.28 06:18

Это короче надо искать другие варианты соединения?

Код:

1
2
3
4
5
Внимание:
curl_setopt_array(): CURLOPT_FOLLOWLOCATION
не может быть активирована, когда safe_mode включен
или open_basedir установлен в
/usr/home/tipsun/htdocs/cinema/index.php
tipsun » 2011.08.28 22:29

Хотя можно и другим способом эту переадресацию поймать: get_headers('url', 1);.
Да и вообще file_get_contents(); обойтись. Думал как получше замаскироваться, чтоб граб долго работал.
- - - -
Эта переадресация 1 раз встечается (в месяц: /2011-08/).

Gemorroj » 2011.09.01 11:31

tipsun, скорее всего там не совсем корректно переадресация сделана. в соответствии с протоколом HTTP 1.1, путь всегда должен быть абсолютным. т.е. не /index.php, а http://wapinet.ru/index.php
curl работает только со 2 вариантом. в 90% случаев, проблема именно в этом.

tipsun » 2011.09.01 13:46

Спс.
Я там смотрел, полный адрес идет, ну во всяком случае в Chrome в загловках. (этот Chrome не поймешь, он сам разметку исправляет, лишние теги убирает, добавляет итп)

Gemorroj » 2011.09.01 13:54

смотри в фаербаге или драгонфлае

tipsun » 2011.09.01 15:41

Ок, спс.
Я там по-другому сделал. Переадресация встречается 1 раз.
Эту переадресацию ловлю при помощи get_headers().
Далее цикл по находжению ссылок, в котором попутно идет запись нужной инфы в базу.
Подключаюсь при помощи cURL.
Что плохо, более подробная инфа лежит в ссылке (как бы подробнее), и надо получается каждый раз на ссылку заходить за более подробной инфой. Но зато 1 раз.
Можно после сканирования сделать, я думаю.
Это еще предстоит написать.

Ну короче вот сие бот-недоразумение...

Код:

1
span style="color: #0000BB"><?php////////////Автор: TiPsun// ICQ : 34142776//////////require_once 'db.php';function scanerBot($url=null) { GLOBAL $db; GLOBAL $n; $agent = 'Nokia6070/2.0 (04.00) Profile/MIDP-2.0 Configuration/CLDC-1.1'; $net = curl_init(); curl_setopt_array($net, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $agent, CURLOPT_AUTOREFERER => 1)); $out = curl_exec($net); curl_close($net); $html = mb_convert_encoding($out, 'utf-8', 'windows-1251'); preg_match_all('/movie\/(\d+)\/.{2}([^\<]+)/', $html, $matches); $date = baseName($url); $db->beginTransaction(); foreach ($matches[1] as $key => $value) { $query = $db->prepare("INSERT INTO `films` SET `id`=?, `date`=?, `name`=?;"); $query->execute(array($value, $date, $matches[2][$key])); } $db->commit(); $n += 1; if (preg_match('/(http:\/\/m\.kinopoisk\.ru\/premier\/\d{4}-\d{2}\/).{2}&rarr;/', $html, $match)) { scanerBot($match[1]); } else { exit('Отсканировано '.$n.' страниц!'); } }//////////$url = 'http://m.kinopoisk.ru/premier/';$url = get_headers($url, 1);$n = 0;scanerBot($url['Location']);//////////?>

Можно и свою дату ставить. Год-Месяц и подключиться...
Ну чем для каждого такую работу выполнять, лучше наверно все у себя сохранить.

Gemorroj » 2011.09.02 13:56

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

tipsun » 2011.09.02 18:31

=0 неужели, наконец норм, Ура! :)

DarkRiDDeR » 2011.09.03 16:36

Можно ли хранить конфиденциальные данные в сессиях?

Gemorroj » 2011.09.03 16:38

да

TLENS » 2011.09.08 18:45

В чем дело при отдаче файла отдается нормально до 99.9% и когда уже в браузере остается 0 сек. идет задержка где то пол минуты. И потом только пишет загружено. Вот код отдачи файлов.

Код:

1
span style="color: #0000BB"><?phperror_reporting(0);ini_set('zlib.output_compression', 'Off');ini_set('output_handler', '');ini_set('max_execution_time', 999);set_time_limit(999);require './sistem/sistem.class.php';$_SET = new Start;$down = true;require './sistem/informator.class.php';$query = $_SERVER['QUERY_STRING'];$id = @explode('/', $_SERVER['REQUEST_URI']);if (substr($id[2], 0, 3) == 'id_') { preg_match('/id_(\d+)/', $id[2], $id); $id = (int)$id[1];} else { $id =(int) $id[2];}$q = mysql_query("SELECT * FROM `video` WHERE `id` = {$id}");if (mysql_num_rows($q)) { $row = mysql_fetch_array($q); $url = $row['url_file'];}if (substr($_SERVER['REQUEST_URI'], -3) == 'flv') { $url = preg_replace('/\.[^\.]+$/', '', $url) . '.flv';}$url = @parse_url($url);$fp = @fsockopen($url['host'], 80, $errno, $errstr, 10);if (!$fp) { exit('Warning. Server problem');}foreach($_SERVER as $k=> $v) { $http=substr($k, 0, 5); if($http == 'HTTP_') { $h=substr($k, 5); if($h == 'HOST') $headers .= 'Host: ' . $url['host'] . "\r\n"; elseif($h == 'REFERER') $headers .= 'Referer: http://' . $url['host'] . "\r\n"; else $headers .= $h.': '.$v."\r\n"; }}fputs ($fp, "GET " . $url['path'] . " HTTP/1.0\r\n" . $headers . "\r\n");$headers = array();while (!feof($fp)) { $b = trim(fgets($fp)); if(!$b) break; if(substr($b, 0, 5) == 'HTTP/') { $headers['HTTP'] = $b; }else { $buf=explode(': ', $b); $headers[$buf[0]] = $buf[1]; }}$name = 'the-best-xxx_ru-' . basename($url['path']); //header($headers['HTTP']); header('Connection: Close'); header('Content-Transfer-Encoding: binary'); header('Content-Disposition: attachment; filename="' . $name . '"'); header('Content-Type: ' . $headers['Content-Type']);if($headers['Content-Range']) header('Content-Range: ' . $headers['Content-Range']);if($headers['Content-Length']) header('Content-Length: ' . $headers['Content-Length']);if($headers['Accept-Ranges']) header('Accept-Ranges: ' . $headers['Accept-Ranges']);while (!feof($fp)) { echo fread($fp, 1024); //usleep(1000); flush();}
Игорь482 » 2011.09.08 19:46

Подскажите пожалуйста, сайт стоит на сервере но после обновления ПО Текст: функция toGDImage
выдает ошибку /ffmpeg.so:
undefined symbol:
img_convert...
Зарание спасибо

Gemorroj » 2011.09.08 20:07

TLENS, это антивирус скорее всего) посмотри загрузку проца что жрет ресурсы.
Добавлено спустя    38 секунд:
Игорь482, код приведи плз.

TLENS » 2011.09.08 21:14

Gemorroj написал:

это антивирус скорее всего) посмотри загрузку проца что жрет ресурсы.

Антивирь даже отключил тоже самое, да и на процессах ничего заметного не происходит загрузчик жрет.
Но вот выполнил copy на денвере то он без задержки скопировал.
Я запутался. Если даже проблема в юзер-агенте то почему на других сайтах норм а с моего задержка пробовал оперу и хром.
Может проблема в скрипте?

TLENS » 2011.09.09 12:45

Что то с загрузчиком. Пробовал с мобильного 300 кб качает и все. сейчас буду раздуплять

Gemorroj » 2011.09.09 13:25

ну, я не вижу проблем в скрипте..(

TLENS » 2011.09.09 13:27

Изза чего может быть 300 кб?

Gemorroj » 2011.09.09 13:37

возможно, дело в Content-Encoding. Удаленный сервер его передает, а ты нет.

TLENS » 2011.09.09 13:47

Поставил то же самое. Сейчас напишу код похож и буду ему давать заголовки прослежу как он отвечает

TLENS » 2011.09.09 22:22

Паша ответь мне плис что это такое, Какие есть предположения?

Код:

1
span style="color: #0000BB"><?php //--- Выдача файла --// public function readfile () { //fpassthru($this->fp); $starttime = microtime(1); $fp = fopen('info.txt', 'a'); while (!feof($this->fp)) { $len = strlen(fread($this->fp, 1024)); $stt = microtime(1); fputs($fp, $len . ' - ' . ($stt - $starttime) . "\n"); $starttime = $stt; } }

Дак вот в файле info.txt ряд ожидаемых строчек.
Но последние:

1024 - 5.00679016113E-6
1024 - 0.001140832901
1024 - 2.00271606445E-5
1024 - 1.09672546387E-5
348 - 60.0000932217
0 - 14.9743289948

Это слишком!
---------------------
С другими хостами например с твого норм только с одним сайтом такая трабла.
Предположение бан по маске.
Так как с других серверов норм.
Но почему файлы дает фиг его знает.

Gemorroj » 2011.09.09 22:36

я чето не догоняю.
$fp = fopen('info.txt', 'a'); // открыли только для записи
while (!feof($this->fp)) { // тут проверка на конец файла, но модификатор "a" как раз помещает указатель на конец файла, так что внутрь while мы не должны попасть

TLENS » 2011.09.09 22:37

Ты не понял Есть $fp а есть $this->fp который открыт выше
в $this->fp открыт вайл со стороннего хоста.

Gemorroj » 2011.09.09 22:38

а епт)
дай весь код. запущу на своей фряхе.

TLENS » 2011.09.09 22:40

Я его запускал на других работает как надо. скорее ip

Код:

1
span style="color: #0000BB"><?phperror_reporting(0);ini_set('zlib.output_compression', 'Off');ini_set('output_handler', '');ini_set('max_execution_time', 999);//var_dump($GLOBALS["HTTP_SERVER_VARS"]);class Parser { public $host; public $path; public $name; public $url; public $header; public $fp; public $err; public $accept_headers; public function __construct($url, $name = '') { if (!$name) { $this->name = basename($url); } else { $this->name = $name; } $url = parse_url($url); $this->host = $url['host']; $this->path = $url['path']; $this->accept_headers = $this->get_accept_headers(); } //--------- Подготовка принятых заголовков для передачи ------// private function get_accept_headers () { foreach($_SERVER as $k => $v) { $http = substr($k, 0, 5); if($http == 'HTTP_') { $h = substr($k, 5); if($h == 'HOST') $headers .= 'Host: ' . $this->host . "\r\n"; elseif($h == 'REFERER') $headers .= 'Referer: http://' . $this->host . "\r\n"; else $headers .= $h . ': ' . $v . "\r\n"; } } return $headers; } //----- Соеденение и передача заголовков ------// public function connect () { $this->fp = @fsockopen($this->host, 80, $errno, $errstr, 10); if (!$this->fp) { $this->err = '<h1>' . $errno . '</h1>' . "\n" . '<p>' . $errstr . '</p>'; return false; } else { fputs ($this->fp, "GET " . $this->path . " HTTP/1.0\r\n" . $this->accept_headers . "\r\n"); return true; } } //----------- Получаю заголовки -------// public function get_headers () { $headers = array(); while (!feof($this->fp)) { $b = trim(fgets($this->fp)); if(!$b) break; if(substr($b ,0, 5) == 'HTTP/') { $headers['HTTP'] = $b; } else { $buf = explode(': ', $b); $headers[$buf[0]] = $buf[1]; } } return $headers; } //--- Выдача файла --// public function readfile () { //fpassthru($this->fp); $starttime = microtime(1); $fp = fopen('info.txt', 'a'); while (!feof($this->fp)) { $f = fread($this->fp, 1024); $len = strlen($f); $stt = microtime(1); fputs($fp, $len . ' - ' . ($stt - $starttime) . "\n"); if ($len < 1024) { fputs($fp, $f . "\n\n\n"); } $starttime = $stt; } }}set_time_limit(999);$file = new Parser ('http://ds.sasisa.ru/fc/upload_files/1199739600/wap_sasisa_ru_homevideo_tanya_xxx.3gp');if (!$file->connect()) exit($file->err);$headers = $file->get_headers();//var_dump($headers); exit;//header($headers['HTTP']);//header('Keep-Alive: timeout=10, max=60');//header('Connection: Keep-Alive, close');//header ("Cache-Control: None");//header('Content-Encoding: binary');//header('Content-Disposition: attachment; filename="' . $file->name . '"');//if($headers['Content-Range']) //header('Content-Range: ' . $headers['Content-Range']); //if($headers['Accept-Ranges']) //header('Accept-Ranges: ' . $headers['Accept-Ranges']); //header('Content-Length: ' . $headers['Content-Length']); //header('Content-Type: ' . $headers['Content-Type']);$file->readfile();

Добавлено спустя   4 минуты  54 секунды:
Ну что там?

Gemorroj » 2011.09.09 22:57

последние строчки:

1024 - 1,5020370483398E-5
1024 - 1,5020370483398E-5
348 - 60,271856069565

а дальше пидарасня какая-то. такое ощущение, что сам файл пишется. щас код повнимательнее посмотрю.

TLENS » 2011.09.09 22:59

А та не парся то я решил глянуть что там 83 строка
Добавлено спустя   6 минут  41 секунду:
Я конечно люблю загадки но не до такой степени.
Выполнил

Код:

1
span style="color: #0000BB"><?php$starttime = microtime(1);copy('http://ds.sasisa.ru/fc/upload_files/1199739600/wap_sasisa_ru_homevideo_tanya_xxx.3gp', 'test.file');echo round(microtime(1) - $starttime, 4);

Результат 0.6344
Все таки проблема в коде.
Паша вся надежда на тебя. Сейчас попробую отправляемые заголовки перевести в нижний регистр. Но мало верится что поможет я уже не знаю что делать.

TLENS » 2011.09.09 23:15

Подожди дак у тебя тоже вис, это статы с твоего сервера?
1024 - 1,5020370483398E-5
1024 - 1,5020370483398E-5
348 - 60,271856069565

Gemorroj » 2011.09.09 23:16

да.
смотрю в чем дело.

Gemorroj » 2011.09.09 23:45

=))
вобщем так)
Добавлено спустя    20 секунд:

Код:

1
span style="color: #0000BB"><?php//error_reporting(0);ini_set('zlib.output_compression', 'Off');ini_set('output_handler', '');ini_set('max_execution_time', 999);//var_dump($GLOBALS["HTTP_SERVER_VARS"]); class Parser{ public $host; public $path; public $name; public $url; public $header; public $fp; public $err; public $accept_headers; public function __construct($url, $name = '') { if (!$name) { $this->name = basename($url); } else { $this->name = $name; } $url = parse_url($url); $this->host = $url['host']; $this->path = $url['path']; $this->accept_headers = $this->get_accept_headers(); } public function __destruct() { is_resource($this->fp) ? fclose($this->fp) : null; } /** * Подготовка принятых заголовков для передачи * * @return string */ private function get_accept_headers () { $headers = ''; foreach ($_SERVER as $k => $v) { $http = substr($k, 0, 5); if ($http == 'HTTP_') { $h = substr($k, 5); if ($h == 'HOST') { $headers .= 'Host: ' . $this->host . "\r\n"; } else if ($h == 'REFERER') { $headers .= 'Referer: http://' . $this->host . "\r\n"; } else if ($h == 'CONNECTION') { $headers .= "Connection: close\r\n"; } else if ($h == 'ACCEPT_ENCODING' || $h == 'TE') { // пропускаем } else { $headers .= str_replace('_', '-', ucwords(strtolower($h))) . ': ' . $v . "\r\n"; } } } return $headers; } /** * Соеденение и передача заголовков * * @return bool */ public function connect () { $this->fp = @fsockopen($this->host, 80, $errno, $errstr, 10); if (!$this->fp) { $this->err = '<h1>' . $errno . '</h1>' . "\n" . '<p>' . $errstr . '</p>'; return false; } else { fputs ($this->fp, "GET " . $this->path . " HTTP/1.0\r\n" . $this->accept_headers . "\r\n"); return true; } } /** * Получаю заголовки * * @return array */ public function get_headers () { $headers = array(); while (($b = fgets($this->fp)) !== false) { $b = trim($b); if ($b === '') break; if (substr($b, 0, 5) == 'HTTP/') { $headers['HTTP'] = $b; } else { $buf = explode(': ', $b); $headers[$buf[0]] = $buf[1]; } } return $headers; } /** * Запись файла */ public function readfile () { $starttime = microtime(1); $fp = fopen('info.txt', 'a'); fputs($fp, $this->accept_headers . "\n\n\n\n"); while (($f = fgets($this->fp)) !== false) { $len = strlen($f); $stt = microtime(1); fputs($fp, $len . ' - ' . ($stt - $starttime) . "\n"); $starttime = $stt; } }}set_time_limit(999);$file = new Parser ('http://ds.sasisa.ru/fc/upload_files/1199739600/wap_sasisa_ru_homevideo_tanya_xxx.3gp');if (!$file->connect()) exit($file->err);$headers = $file->get_headers();//var_dump($headers); exit; //header($headers['HTTP']);//header('Keep-Alive: timeout=10, max=60');//header('Connection: Keep-Alive, close');//header ("Cache-Control: None");//header('Content-Encoding: binary');//header('Content-Disposition: attachment; filename="' . $file->name . '"'); //if($headers['Content-Range']) //header('Content-Range: ' . $headers['Content-Range']); //if($headers['Accept-Ranges']) //header('Accept-Ranges: ' . $headers['Accept-Ranges']); //header('Content-Length: ' . $headers['Content-Length']); //header('Content-Type: ' . $headers['Content-Type']); $file->readfile();
TLENS » 2011.09.09 23:45

Слушаю

Gemorroj » 2011.09.09 23:47

Конкретно проблема в 60 задержке - в заголовке Connection: Keep-Alive
Там еще была ошибка в работе с feof

TLENS » 2011.09.09 23:50

Я твой должник. Я до сих пор толком не понял для чего Keep-Alive сейчас почитаю, А что на счет EOF?

Gemorroj » 2011.09.09 23:56

ну там получалось что 1 раз считывал лишнюю строчку.
ну там еще и сзаголовками была проблема, они же в php типа как ACCEPT_CHARSET, а передавать нужно Accept-Charsert. Как минимум _ заменить на - надо.

TLENS » 2011.09.10 00:02

А блин куда я смотрел. Но тоже кстати собирался рыть в get_accept_headers ().
Моя бабушка всегда мне говорила если долго мучится что нибудь получится.
Меня очень запутало то что с Твоего сайта не было проблем.
Спасибо огромное еще раз!

Gemorroj » 2011.09.10 01:01

вапинет отдает такое: Keep-Alive: timeout=5, max=100
т.е. задержка 5 сек, а не 60 сек, как на сасисе.

POFIGISST » 2011.09.26 20:26

Помогите плиз написать функцию,которая будет блокировать смайлы в чате в одном посте,вернее чтоб лимит был,например чтоб в одном посте показывало только 2 смайла,а остальные чтоб не выводило,а то есть умники которые в одном посте ставят по 20 смайлов,и страниц х.з. сколько грузиться,к посту прикрепляю файл отвечающий за это(( сам пробовал,но нифига не вышло,только ошибок кучу сделал((

TLENS » 2011.09.26 20:34

Это ты писал скрипт?

POFIGISST » 2011.09.26 20:37

TLENS написал:

Это ты писал скрипт?

нет,файл был написан Шахтером,а мод личных смайлов на заказ писали((
Добавлено спустя   8 минут  41 секунду:
примерно таким

Код:

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
define('MAX_SMILES',2); // Максимальное количество смайлов
 
$cache_sml;
$cache_pat;
$n = 0;
 
function sml_replace_callback($match)
{
global $cache_sml,$n;
if($n == MAX_SMILES)
return '';
$n++;
return $cache_sml[$match[1]];
}
function smiles($msg)
{
global $cache_pat,$cache_sml,$user,$n;
 
if(empty($cache_sml) or empty($cache_pat))
{
$file = file_get_contents(H.'smiles/smiles.txt');
preg_match_all('%(.+) (.+)%',$file,$arr);
$cache_pat = array_map('sml_mk_pat',$arr[2]);
$arr[1] = array_map('sml_mk_img',$arr[1]);
$cache_sml = array_combine($arr[2],$arr[1]);
}

кодом можно сделать наверное,но не соображу как это замутить((

TLENS » 2011.09.26 20:53

Сейчас напишу дополнение.
Ток скажи честно сколько заплатил за него.

POFIGISST » 2011.09.26 20:56

TLENS написал:

Сейчас напишу дополнение.
Ток скажи честно сколько заплатил за него.

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

TLENS » 2011.09.26 21:43

Код:

1
lt;?$count_smiles = 3;/** * Замена по ограничению * @return (string) * By TLENS 26.09.2011 */function my_replace($var1, $var2, $str, $count = 0){ if ($count <= 0) { return str_replace($var1, $var2, $str); } $arr = explode($var1, $str); $c = sizeof($arr); if ($c <= $count) { return str_replace($var1, $var2, $str); } $result = (string)''; for ($i = 0; $i<$c; $i++) { if ($i < $count) { $result .= $arr[$i] . $var2; } else { $result .= $arr[$i] . ((($i + 1) < $c) ? $var1 : ''); } } return $result;}//-------------------------------------//function smiles($msg){ global $db, $set,$user, $count_smiles; $f_smiles=file(H."smiles/smiles.txt"); for ($i=0;$i<count($f_smiles);$i++) { $str_sm=explode(' ',trim($f_smiles[$i])); $str_sm2=''; for ($z=1;$z<count($str_sm);$z++) { if ($z>1){$str_sm2.=' ';} $str_sm2.=$str_sm[$z]; } $str_sm2=explode(',',$str_sm2); for ($i2=0;$i2<count($str_sm2);$i2++) { $str_sm2[$i2]=stripcslashes(htmlspecialchars($str_sm2[$i2])); $msg=str_replace("$str_sm2[$i2]", "<img src=\"/smiles/$str_sm[0].gif\" alt=\"\" />", $msg); } } $q=mysql_query("SELECT * FROM `user_smiles_spis`"); //Личные смайлы while($post = mysql_fetch_array($q)){ $msg = str_replace($post['sim'], '<a><img src="/smiles/usersmiles/'.$post['name'].'.gif" alt="'.$post['name'].'"/></a>', $msg); } if ($user['level']>3){ $f_smiles=file(H."smiles/smiles_mod.txt"); for ($i=0;$i<count($f_smiles);$i++) { $str_sm=explode(' ',trim($f_smiles[$i])); $str_sm2=''; for ($z=1;$z<count($str_sm);$z++) { if ($z>1){$str_sm2.=' ';} $str_sm2.=$str_sm[$z]; } $str_sm2=explode(',',$str_sm2); for ($i2=0;$i2<count($str_sm2);$i2++) { $str_sm2[$i2]=stripcslashes(htmlspecialchars($str_sm2[$i2])); $msg=my_replace("$str_sm2[$i2]", "<img src=\"/smiles/$str_sm[0].gif\" alt=\"\" />", $msg, $count_smiles); } }} return $msg;}function links_preg1($arr){return '<a href="'.$arr[1].'">'.$arr[2].'</a>';}function links_preg2($arr){return $arr[1].'<a href="'.$arr[2].'">'.$arr[2].'</a>'.$arr[4];}function links($msg){$msg=preg_replace_callback('~\[url=([^ \r\n\t`\'"]+)\](.*?)\[/url\]~iu', 'links_preg1', $msg);$msg=preg_replace_callback('~(^|\s)([a-z]+://([^ \r\n\t`\'"]+))(\s|$)~iu', 'links_preg2', $msg);return $msg;}$versiya = '4.0';function bbcodehightlight($arr){$arr[0]=html_entity_decode($arr[0], ENT_QUOTES, 'UTF-8');$arr[0]=preg_replace('#<img src="(.*?)" alt="(.*?)" />#sui', '\\2', $arr[0]);return '<div class="" style="overflow:scroll;clip:auto;max-width:480px;">'.preg_replace('#<code>(.*?)</code>#si', '\\1' ,highlight_string($arr[0],1)).'</div>'."\n";}function BBcode($msg){$msg=preg_replace('#\[b\](.*?)\[/b\]#si', '<span style="font-weight: bold;">\1</span>', $msg);$msg=preg_replace('#\[i\](.*?)\[/i\]#si', '<span style="font-style: italic;">\1</span>', $msg);$msg=preg_replace('#\[u\](.*?)\[/u\]#si', '<span style="text-decoration: underline;">\1</span>', $msg);$msg=preg_replace('#\[b\](.*?)\[/b\]#si', '<span style="font-weight: bold;">\1</span>', $msg);$msg=preg_replace('#\[i\](.*?)\[/i\]#si', '<span style="font-style: italic;">\1</span>', $msg);$msg=preg_replace('#\[q\](.*?)\[/q\]#si', '<span style="text-decoration: underline;">\1</span>', $msg);$msg=preg_replace('#\[del\](.*?)\[/del\]#si', '<del>\1</del>', $msg);$msg=preg_replace('#\[small\](.*?)\[/small\]#si', '<span style="font-size: small;">\1</span>', $msg);$msg=preg_replace('#\[big\](.*?)\[/big\]#si', '<span style="font-size: large;">\1</span>', $msg);$msg=preg_replace('#\[blink\](.*?)\[/blink\]#si', '<blink>\1</blink>', $msg);$msg=preg_replace('#\[red\](.*?)\[/red\]#si', '<span style="color:#FF0000;">\1</span>', $msg);$msg=preg_replace('#\[green\](.*?)\[/green\]#si', '<span style="color:#00FF00;">\1</span>', $msg);$msg=preg_replace('#\[blue\](.*?)\[/blue\]#si', '<span style="color:#0000FF;">\1</span>', $msg);$msg=preg_replace('#\[yellow\](.*?)\[/yellow\]#si', '<span style="color:#ffff22;">\1</span>', $msg);$msg=preg_replace('#\[fea\](.*?)\[/fea\]#si', '<span style="color:#FF00FF;">\1</span>', $msg);return $msg;}define('vb12', true);function br($msg,$br='<br />'){$msg=eregi_replace("((<br( ?/?)>)|\n|\r)+",$br, $msg);return $msg;}function page2($page2){$page2=str_replace('</body>','<div align="center"><small><a href="http://masteram.us">© -=ШАХТЕР=-</a></small></div></body>',$page2);$page2=str_replace('</card>','<div align="center"><small><a href="http://masteram.us">© -=ШАХТЕР=-</a></small></div></card>',$page2);return $page2;}if ((eregi('^/enter\.php',$_SERVER['SCRIPT_NAME']))||(eregi('^/index\.php',$_SERVER['SCRIPT_NAME']))){ob_start(page2);define('set2.0', true);}else if ((eregi('^'.dirname($_SERVER['PHP_SELF']).'/enter\.php',$_SERVER['SCRIPT_NAME']))||(eregi('^'.dirname($_SERVER['PHP_SELF']).'/index\.php',$_SERVER['SCRIPT_NAME']))){ob_start(page2);}function esc($text,$br=NULL){if ($br!=NULL)for ($i=0;$i<=31;$i++)$text=str_replace(chr($i), NULL, $text);else{for ($i=0;$i<10;$i++)$text=str_replace(chr($i), NULL, $text);for ($i=11;$i<20;$i++)$text=str_replace(chr($i), NULL, $text);for ($i=21;$i<=31;$i++)$text=str_replace(chr($i), NULL, $text);}return $text;}function text($str,$br=true,$html=true,$smiles=true,$links=true,$bbcode=true){if ($html==true)if ($smiles==true)$str=smiles($str);if ($links==true)$str=links($str);if ($bbcode==true)$str=bbcode($str);if ($br==true){$str=br($str);$str=esc($str);}else{$str=esc($str);}return $str;}function color_msg($text){global $db, $set,$user, $msg;if ($msg['color']==1)$text = '[red]'.$msg['msg'].'[/red]';elseif ($msg['color']==2)$text = '[blue]'.$msg['msg'].'[/blue]';elseif ($msg['color']==3)$text = '[fea]'.$msg['msg'].'[/fea]';elseif ($msg['color']==4)$text = '[green]'.$msg['msg'].'[/green]';return $text;}function bb_msg($text){global $db, $set,$user, $msg;if ($msg['bb']==1)$text = '[i]'.$text.'[/i]';elseif ($msg['bb']==2)$text = '[u]'.$text.'[/u]';elseif ($msg['bb']==3)$text = '[i][u]'.$text.'[/u][/i]';elseif ($msg['bb']==4)$text = '[b]'.$text.'[/b]';elseif ($msg['bb']==5)$text = '[i][b]'.$text.'[/b][/i]';elseif ($msg['bb']==6)$text = '[big]'.$text.'[/big]';return $text;}function emo_msg($text){global $db, $set,$user, $msg;if ($msg['emo']==1) $text = '[Радостно] '.$text;elseif ($msg['emo']==2) $text = '[Печально] '.$text;elseif ($msg['emo']==3) $text = '[Удивленно] '.$text;elseif ($msg['emo']==4) $text = '[Ласково] '.$text;elseif ($msg['emo']==5) $text = '[Смущенно] '.$text;elseif ($msg['emo']==6) $text = '[Кокетливо] '.$text;elseif ($msg['emo']==7) $text = '[Обиженно] '.$text;elseif ($msg['emo']==8) $text = '[Настойчиво] '.$text;elseif ($msg['emo']==9) $text = '[Шепотом] '.$text;elseif ($msg['emo']==10) $text = '[Задумчиво] '.$text;elseif ($msg['emo']==11) $text = '[Злобно] '.$text;return $text;}function antir($msg){global $db, $set,$user;$msg = str_replace("((http://))((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z;]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%&'_\+=:;\?\.-]*)*)", "".$set['antir']."", $msg);$msg=str_replace(".wab.","".$set['antir']."",$msg);$msg=str_replace(".com","".$set['antir']."",$msg);$msg=str_replace(".net","".$set['antir']."",$msg);$msg=str_replace(".org","".$set['antir']."",$msg);$msg=str_replace(".kz","".$set['antir']."",$msg);$msg=str_replace(".ua","".$set['antir']."",$msg);$msg=str_replace(".ru","".$set['antir']."",$msg);$msg=str_replace(",ru","".$set['antir']."",$msg);$msg=str_replace("-ru","".$set['antir']."",$msg);$msg=str_replace("-ru","".$set['antir']."",$msg);$msg=str_replace("_ru","".$set['antir']."",$msg);$msg=str_replace("-net","".$set['antir']."",$msg);$msg=str_replace(",net","".$set['antir']."",$msg);$msg=str_replace("-su","".$set['antir']."",$msg);$msg=str_replace("_su","".$set['antir']."",$msg);$msg=str_replace(".su","".$set['antir']."",$msg);$msg=str_replace(",su","".$set['antir']."",$msg);$msg=str_replace("-mobi","".$set['antir']."",$msg);$msg=str_replace("_mobi","".$set['antir']."",$msg);$msg=str_replace(".mobi","".$set['antir']."",$msg);$msg=str_replace(",mobi","".$set['antir']."",$msg);$msg=str_replace("-info","".$set['antir']."",$msg);$msg=str_replace("_info","".$set['antir']."",$msg);$msg=str_replace(".info","".$set['antir']."",$msg);$msg=str_replace(",info","".$set['antir']."",$msg);$msg=str_replace("-com","".$set['antir']."",$msg);$msg=str_replace("_com","".$set['antir']."",$msg);$msg=str_replace(".com","".$set['antir']."",$msg);$msg=str_replace(",com","".$set['antir']."",$msg);$msg=str_replace("-msk","".$set['antir']."",$msg);$msg=str_replace("_msk","".$set['antir']."",$msg);$msg=str_replace(".msk","".$set['antir']."",$msg);$msg=str_replace(",msk","".$set['antir']."",$msg);$msg=str_replace("-tk","".$set['antir']."",$msg);$msg=str_replace("_tk","".$set['antir']."",$msg);$msg=str_replace(".tk","".$set['antir']."",$msg);$msg=str_replace(",tk","".$set['antir']."",$msg);$msg=str_replace(".in","".$set['antir']."",$msg);$msg=str_replace("-cn","".$set['antir']."",$msg);$msg=str_replace("_cn","".$set['antir']."",$msg);$msg=str_replace(".cn","".$set['antir']."",$msg);$msg=str_replace(",cn","".$set['antir']."",$msg);$msg=str_replace("-biz","".$set['antir']."",$msg);$msg=str_replace("_biz","".$set['antir']."",$msg);$msg=str_replace(".biz","".$set['antir']."",$msg);$msg=str_replace(",biz","".$set['antir']."",$msg);$msg=str_replace("-h2m","".$set['antir']."",$msg);$msg=str_replace("_h2m","".$set['antir']."",$msg);$msg=str_replace(".h2m","".$set['antir']."",$msg);$msg=str_replace(",h2m","".$set['antir']."",$msg);$msg=str_replace("-wen","".$set['antir']."",$msg);$msg=str_replace("_wen","".$set['antir']."",$msg);$msg=str_replace(".wen","".$set['antir']."",$msg);$msg=str_replace(",wen","".$set['antir']."",$msg);$msg=str_replace("-ua","".$set['antir']."",$msg);$msg=str_replace("_ua","".$set['antir']."",$msg);$msg=str_replace(".ua","".$set['antir']."",$msg);$msg=str_replace(",ua","".$set['antir']."",$msg);return $msg;}function antim($text){$text=strtr($text,array('сука'=>'***','блядь'=>'***','блядь'=>'***','хуй'=>'***','пизда'=>'***','сучка'=>'***','пидор'=>'***','пидар'=>'***','пидор'=>'***','пидрила'=>'***','чмо'=>'***','ебать'=>'***','бля'=>'***'));return $text;}function url_replace($m) {if( !isset($m[3]) ) {return '<a href="' . $m[1] . '">' . $m[2] . '</a>';} else {return '<a href="' . $m[3] . '">' . $m[3] . '</a>';}}function img_replace($m) {if( !isset($m[3]) ) {return '<img src="' . $m[1] . '" alt="' . $m[2] . '">';} else {return '<img src="' . $m[3] . '" alt="' . $m[3] . '">';}}//------------------ Функция вставки BB-кода --------------------//function bb2($text){$text = preg_replace_callback('~\\[link=(http://.+?)\\](.+?)\\[/link\\]|(http://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~', 'url_replace', $text);$text = preg_replace_callback('~\\[imgs=(.+?)\\](.+?)\\[/imgs\\]|((www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~', 'img_replace', $text);return $text;}?>

Код ужасный. Даж я такого в детстве не писал. Думал подправить потом плюнул
Добавлено спустя    57 секунд:
вверху настройка количества

POFIGISST » 2011.09.26 21:46

TLENS
с этим кодом весь чат не работает,просто белая страница(((

TLENS » 2011.09.26 21:48

Включи показ ошибок

POFIGISST » 2011.09.26 21:52

не показывает((или я не правильно включаю,хотя вот error_reporting(-1); должно выводить ошибки((
Добавлено спустя   2 минуты  17 секунд:
error_reporting (E_ALL); и так включить пытался((нифига(((

TLENS » 2011.09.26 21:56

Попробуй поставить в самом начале ведь этот инклюдится куда то
error_reporting(E_ALL);
ini_set("display_errors", 1);
Добавлено спустя   1 минуту  2 секунды:
В общем код дал рабочий. Ничего в нем не менял кроме одной функции она работает разбирайся сам. Включай мозги

Gemorroj » 2011.09.26 22:01

замени <? на
<?php

POFIGISST » 2011.09.26 22:07

TLENS
спасибо Дим,это с самим файлом хуйня какая-то,хотя раньше норм вродь работал((
Добавлено спустя   2 минуты  12 секунд:

Gemorroj написал:

замени <? на
<?php

спасиб Паш,забываю это исправлять когда редачу файлы((

POFIGISST » 2011.09.26 22:25

а если вот так

Код:

1
span style="color: #0000BB"><?phpdefine('MAX_SMILES',2); // Максимальное количество смайлов$cache_sml;$cache_pat;$n = 0;function sml_replace_callback($match){global $cache_sml,$n; if($n == MAX_SMILES)return '';$n++;return $cache_sml[$match[1]];}function smiles($msg){global $cache_pat,$cache_sml,$user,$n;if(empty($cache_sml) or empty($cache_pat)){$file = file_get_contents(H.'smiles/smiles.txt');preg_match_all('%(.+) (.+)%',$file,$arr);$cache_pat = array_map('sml_mk_pat',$arr[2]);$arr[1] = array_map('sml_mk_img',$arr[1]);$cache_sml = array_combine($arr[2],$arr[1]);}$q=mysql_query("SELECT * FROM `user_smiles_spis`"); //Личные смайлы while($post = mysql_fetch_array($q)){$msg = str_replace($post['sim'],'<a><img src= "/smiles/usersmiles/'.$pot['name'].'.gif" alt="'.$post['name'].'"/></a>',$msg);}$msg = preg_replace_callback($cache_pat,'sml_replace_callback',$msg);$n = 0;return $msg;}function sml_mk_pat($sml){return '%('.preg_quote($sml).')%';}function sml_mk_img($sml){return '<img src="/smiles/'.$sml.'.gif"/>';}function links_preg1($arr){return '<a href="'.$arr[1].'">'.$arr[2].'</a>';}function links_preg2($arr){return $arr[1].'<a href="'.$arr[2].'">'.$arr[2].'</a>'.$arr[4];}function links($msg){$msg=preg_replace_callback('~\[url=([^ \r\n\t`\'"]+)\](.*?)\[/url\]~iu', 'links_preg1', $msg);$msg=preg_replace_callback('~(^|\s)([a-z]+://([^ \r\n\t`\'"]+))(\s|$)~iu', 'links_preg2', $msg);return $msg;}$versiya = '4.0 Лицензионная';function bbcodehightlight($arr){$arr[0]=html_entity_decode($arr[0], ENT_QUOTES, 'UTF-8');$arr[0]=preg_replace('#<img src="(.*?)" alt="(.*?)" />#sui', '\\2', $arr[0]);return '<div class="" style="overflow:scroll;clip:auto;max-width:480px;">'.preg_replace('#<code>(.*?)</code>#si', '\\1' ,highlight_string($arr[0],1)).'</div>'."\n";}function BBcode($msg){$msg=preg_replace('#\[b\](.*?)\[/b\]#si', '<span style="font-weight: bold;">\1</span>', $msg);$msg=preg_replace('#\[i\](.*?)\[/i\]#si', '<span style="font-style: italic;">\1</span>', $msg);$msg=preg_replace('#\[u\](.*?)\[/u\]#si', '<span style="text-decoration: underline;">\1</span>', $msg);$msg=preg_replace('#\[b\](.*?)\[/b\]#si', '<span style="font-weight: bold;">\1</span>', $msg);$msg=preg_replace('#\[i\](.*?)\[/i\]#si', '<span style="font-style: italic;">\1</span>', $msg);$msg=preg_replace('#\[q\](.*?)\[/q\]#si', '<span style="text-decoration: underline;">\1</span>', $msg);$msg=preg_replace('#\[del\](.*?)\[/del\]#si', '<del>\1</del>', $msg);$msg=preg_replace('#\[small\](.*?)\[/small\]#si', '<span style="font-size: small;">\1</span>', $msg);$msg=preg_replace('#\[big\](.*?)\[/big\]#si', '<span style="font-size: large;">\1</span>', $msg);$msg=preg_replace('#\[blink\](.*?)\[/blink\]#si', '<blink>\1</blink>', $msg);$msg=preg_replace('#\[red\](.*?)\[/red\]#si', '<span style="color:#FF0000;">\1</span>', $msg);$msg=preg_replace('#\[green\](.*?)\[/green\]#si', '<span style="color:#00FF00;">\1</span>', $msg);$msg=preg_replace('#\[blue\](.*?)\[/blue\]#si', '<span style="color:#0000FF;">\1</span>', $msg);$msg=preg_replace('#\[yellow\](.*?)\[/yellow\]#si', '<span style="color:#ffff22;">\1</span>', $msg);$msg=preg_replace('#\[fea\](.*?)\[/fea\]#si', '<span style="color:#FF00FF;">\1</span>', $msg);return $msg;}define('vb3', true);function br($msg,$br='<br />'){$msg=eregi_replace("((<br( ?/?)>)|\n|\r)+",$br, $msg);return $msg;}function esc($text,$br=NULL){if ($br!=NULL)for ($i=0;$i<=31;$i++)$text=str_replace(chr($i), NULL, $text);else{for ($i=0;$i<10;$i++)$text=str_replace(chr($i), NULL, $text);for ($i=11;$i<20;$i++)$text=str_replace(chr($i), NULL, $text);for ($i=21;$i<=31;$i++)$text=str_replace(chr($i), NULL, $text);}return $text;}function text($str,$br=true,$html=true,$smiles=true,$links=true,$bbcode=true){if ($html==true)if ($smiles==true)$str=smiles($str);if ($links==true)$str=links($str);if ($bbcode==true)$str=bbcode($str);if ($br==true){$str=br($str);$str=esc($str);}else{$str=esc($str);}return $str;}function color_msg($text){global $db, $set,$user, $msg;if ($msg['color']==1)$text = '[red]'.$msg['msg'].'[/red]';elseif ($msg['color']==2)$text = '[blue]'.$msg['msg'].'[/blue]';elseif ($msg['color']==3)$text = '[fea]'.$msg['msg'].'[/fea]';elseif ($msg['color']==4)$text = '[green]'.$msg['msg'].'[/green]';return $text;}function bb_msg($text){global $db, $set,$user, $msg;if ($msg['bb']==1)$text = '[i]'.$text.'[/i]';elseif ($msg['bb']==2)$text = '[u]'.$text.'[/u]';elseif ($msg['bb']==3)$text = '[i][u]'.$text.'[/u][/i]';elseif ($msg['bb']==4)$text = '[b]'.$text.'[/b]';elseif ($msg['bb']==5)$text = '[i][b]'.$text.'[/b][/i]';elseif ($msg['bb']==6)$text = '[big]'.$text.'[/big]';return $text;}function emo_msg($text){global $db, $set,$user, $msg;if ($msg['emo']==1) $text = '[Радостно] '.$text;elseif ($msg['emo']==2) $text = '[Печально] '.$text;elseif ($msg['emo']==3) $text = '[Удивленно] '.$text;elseif ($msg['emo']==4) $text = '[Ласково] '.$text;elseif ($msg['emo']==5) $text = '[Смущенно] '.$text;elseif ($msg['emo']==6) $text = '[Кокетливо] '.$text;elseif ($msg['emo']==7) $text = '[Обиженно] '.$text;elseif ($msg['emo']==8) $text = '[Настойчиво] '.$text;elseif ($msg['emo']==9) $text = '[Шепотом] '.$text;elseif ($msg['emo']==10) $text = '[Задумчиво] '.$text;elseif ($msg['emo']==11) $text = '[Злобно] '.$text;return $text;}function antir($msg){global $db, $set,$user;$msg = str_replace("((http://))((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z;]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%&'_\+=:;\?\.-]*)*)", "".$set['antir']."", $msg);$msg=str_replace(".wab.","".$set['antir']."",$msg);$msg=str_replace(".com","".$set['antir']."",$msg);$msg=str_replace(".net","".$set['antir']."",$msg);$msg=str_replace(".org","".$set['antir']."",$msg);$msg=str_replace(".kz","".$set['antir']."",$msg);$msg=str_replace(".ua","".$set['antir']."",$msg);$msg=str_replace(".ru","".$set['antir']."",$msg);$msg=str_replace(",ru","".$set['antir']."",$msg);$msg=str_replace("-ru","".$set['antir']."",$msg);$msg=str_replace("-ru","".$set['antir']."",$msg);$msg=str_replace("_ru","".$set['antir']."",$msg);$msg=str_replace("-net","".$set['antir']."",$msg);$msg=str_replace(",net","".$set['antir']."",$msg);$msg=str_replace("-su","".$set['antir']."",$msg);$msg=str_replace("_su","".$set['antir']."",$msg);$msg=str_replace(".su","".$set['antir']."",$msg);$msg=str_replace(",su","".$set['antir']."",$msg);$msg=str_replace("-mobi","".$set['antir']."",$msg);$msg=str_replace("_mobi","".$set['antir']."",$msg);$msg=str_replace(".mobi","".$set['antir']."",$msg);$msg=str_replace(",mobi","".$set['antir']."",$msg);$msg=str_replace("-info","".$set['antir']."",$msg);$msg=str_replace("_info","".$set['antir']."",$msg);$msg=str_replace(".info","".$set['antir']."",$msg);$msg=str_replace(",info","".$set['antir']."",$msg);$msg=str_replace("-com","".$set['antir']."",$msg);$msg=str_replace("_com","".$set['antir']."",$msg);$msg=str_replace(".com","".$set['antir']."",$msg);$msg=str_replace(",com","".$set['antir']."",$msg);$msg=str_replace("-msk","".$set['antir']."",$msg);$msg=str_replace("_msk","".$set['antir']."",$msg);$msg=str_replace(".msk","".$set['antir']."",$msg);$msg=str_replace(",msk","".$set['antir']."",$msg);$msg=str_replace("-tk","".$set['antir']."",$msg);$msg=str_replace("_tk","".$set['antir']."",$msg);$msg=str_replace(".tk","".$set['antir']."",$msg);$msg=str_replace(",tk","".$set['antir']."",$msg);$msg=str_replace(".in","".$set['antir']."",$msg);$msg=str_replace("-cn","".$set['antir']."",$msg);$msg=str_replace("_cn","".$set['antir']."",$msg);$msg=str_replace(".cn","".$set['antir']."",$msg);$msg=str_replace(",cn","".$set['antir']."",$msg);$msg=str_replace("-biz","".$set['antir']."",$msg);$msg=str_replace("_biz","".$set['antir']."",$msg);$msg=str_replace(".biz","".$set['antir']."",$msg);$msg=str_replace(",biz","".$set['antir']."",$msg);$msg=str_replace("-h2m","".$set['antir']."",$msg);$msg=str_replace("_h2m","".$set['antir']."",$msg);$msg=str_replace(".h2m","".$set['antir']."",$msg);$msg=str_replace(",h2m","".$set['antir']."",$msg);$msg=str_replace("-wen","".$set['antir']."",$msg);$msg=str_replace("_wen","".$set['antir']."",$msg);$msg=str_replace(".wen","".$set['antir']."",$msg);$msg=str_replace(",wen","".$set['antir']."",$msg);$msg=str_replace("-ua","".$set['antir']."",$msg);$msg=str_replace("_ua","".$set['antir']."",$msg);$msg=str_replace(".ua","".$set['antir']."",$msg);$msg=str_replace(",ua","".$set['antir']."",$msg);return $msg;}function antim($text){$text=strtr($text,array('сука'=>'***','блядь'=>'***','блядь'=>'***','хуй'=>'***','пизда'=>'***','сучка'=>'***','пидор'=>'***','пидар'=>'***','пидор'=>'***','пидрила'=>'***','чмо'=>'***','ебать'=>'***','бля'=>'***'));return $text;}function url_replace($m) {if( !isset($m[3]) ) {return '<a href="' . $m[1] . '">' . $m[2] . '</a>';} else {return '<a href="' . $m[3] . '">' . $m[3] . '</a>';}}function img_replace($m) {if( !isset($m[3]) ) {return '<img src="' . $m[1] . '" alt="' . $m[2] . '">';} else {return '<img src="' . $m[3] . '" alt="' . $m[3] . '">';}}//------------------ Функция вставки BB-кода --------------------//function bb2($text){$text = preg_replace_callback('~\\[link=(http://.+?)\\](.+?)\\[/link\\]|(http://(www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~', 'url_replace', $text);$text = preg_replace_callback('~\\[imgs=(.+?)\\](.+?)\\[/imgs\\]|((www.)?[0-9a-z\.-]+\.[0-9a-z]{2,6}[0-9a-zA-Z/\?\.\~&amp;_=/%-:#]*)~', 'img_replace', $text);return $text;}?>

сделать? но так почему то не выводит лычный смайл,вернее показывает что должна быть картинка,но её нету,оно имя из базы не тянет,по исходному коду показывает вот так

<a><img src= "/smiles/usersmiles/.gif" alt="222"/>


имя не берет почему то((

WapStyle » 2011.09.26 22:40

Код:

1
2
3
4
5
6
7
8
function links_preg1($arr)
{
return '<a href="'.$arr[1].'">'.$arr[2].'</a>';
}
function links_preg2($arr)
{
return $arr[1].'<a href="'.$arr[2].'">'.$arr[2].'</a>'.$arr[4];
}

Это часть кода...

Жгёш пополной :D

POFIGISST » 2011.09.26 22:42

WapStyle написал:

Код:

1
2
3
4
5
6
7
8
function links_preg1($arr)
{
return '<a href="'.$arr[1].'">'.$arr[2].'</a>';
}
function links_preg2($arr)
{
return $arr[1].'<a href="'.$arr[2].'">'.$arr[2].'</a>'.$arr[4];
}

Это часть кода...

Жгёш пополной :D

чесн сказать,я сам даже такого не напишу((

TLENS » 2011.09.26 22:44

WapStyle Заценил? гг

POFIGISST » 2011.09.26 22:51

Это был мой позор(((исправил все,теперь работает((правда говнокод остался((
Добавлено спустя   4 минуты  54 секунды:
смайлы личные работают,и обычные тоже,обычных смайлов выводит только по 2 смайла в одном посте,а вот личных,скок напишешь,сток и выведет,хоть 100 штук в одном посте,теперь не знаю как ограничитель личных смайлов сделать((чтоб их тоже выводило только по два в одном посте(( в какой строке или в какой части это можно сделать подскажите((

Код:

1
span style="color: #0000BB"><?phpdefine('MAX_SMILES',2); // Максимальное количество смайлов$cache_sml;$cache_pat;$n = 0;function sml_replace_callback($match){global $cache_sml,$n; if($n == MAX_SMILES)return '';$n++;return $cache_sml[$match[1]];}function smiles($msg){global $cache_pat,$cache_sml,$user,$n;if(empty($cache_sml) or empty($cache_pat)){$file = file_get_contents(H.'smiles/smiles.txt');preg_match_all('%(.+) (.+)%',$file,$arr);$cache_pat = array_map('sml_mk_pat',$arr[2]);$arr[1] = array_map('sml_mk_img',$arr[1]);$cache_sml = array_combine($arr[2],$arr[1]);}$q=mysql_query("SELECT * FROM `user_smiles_spis`"); //Личные смайлы while($post = mysql_fetch_array($q)){$msg = str_replace($post['sim'],'<a><img src= "/smiles/usersmiles/'.$post['name'].'.gif" alt="'.$post['name'].'"/></a>',$msg);}$msg = preg_replace_callback($cache_pat,'sml_replace_callback',$msg);$n = 0;return $msg;}function sml_mk_pat($sml){return '%('.preg_quote($sml).')%';}function sml_mk_img($sml){return '<img src="/smiles/'.$sml.'.gif"/>';}function links_preg1($arr){return '<a href="'.$arr[1].'">'.$arr[2].'</a>';}function links_preg2($arr){return $arr[1].'<a href="'.$arr[2].'">'.$arr[2].'</a>'.$arr[4];}function links($msg){$msg=preg_replace_callback('~\[url=([^ \r\n\t`\'"]+)\](.*?)\[/url\]~iu', 'links_preg1', $msg);$msg=preg_replace_callback('~(^|\s)([a-z]+://([^ \r\n\t`\'"]+))(\s|$)~iu', 'links_preg2', $msg);return $msg;}$versiya = '4.0 Лицензионная';function bbcodehightlight($arr){$arr[0]=html_entity_decode($arr[0], ENT_QUOTES, 'UTF-8');$arr[0]=preg_replace('#<img src="(.*?)" alt="(.*?)" />#sui', '\\2', $arr[0]);return '<div class="" style="overflow:scroll;clip:auto;max-width:480px;">'.preg_replace('#<code>(.*?)</code>#si', '\\1' ,highlight_string($arr[0],1)).'</div>'."\n";}
POFIGISST » 2011.09.27 23:39

Блин,создаю таблицу в базе вот такую

Код:

1
2
3
4
5
6
7
`id` INT( 11 ) NULL DEFAULT NULL AUTO_INCREMENT ,
`name` INT( 20 ) NULL DEFAULT NULL AUTO_INCREMENT ,
`id_dir` INT( 50 ) NULL DEFAULT NULL ,
`sim` VARCHAR( 50 ) NULL DEFAULT NULL ,
`user` INT( 11 ) NULL DEFAULT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

и выдает ошибку "#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key "
это значить что в таблице может быть только одно поле с атрибутом AUTO_INCREMENT,а мне нужно два таких поля(( как это сделать? или лучше обойтись одним полем id ? в принципе значения в поле id и name ,будут одинаковые если поставить AUTO_INCREMENT  (

Gemorroj » 2011.09.28 00:17

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

POFIGISST » 2011.09.28 00:31

Gemorroj написал:

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

наверное поле name нужно убрать,ведь значения в полях id и name будут одинаковые,и поле ид можно использовать в двух значениях сразу как имя(чтоб не повторялось имя файла при загрузке) и как ид ))

TLENS » 2011.09.28 00:34

POFIGISST
Ну оно за частую так и делается.

POFIGISST » 2011.09.28 22:16

как мне в этом

Код:

1
span style="color: #0000BB"><?phprequire'../../config.php';$align='left';$title='Личные смайлы';aut();head();who_add(0,'enter');echo '<div class="menu">';if(!isset($user)){ echo '<div class="err">Доступ закрыт</div>'; }if($_GET['act']=='dir'){if(isset($_POST['name']) && isset($_POST['pos'])){ $name = esc(stripcslashes(htmlspecialchars($_POST['name']))); $pos = intval($_POST['pos']); if(strlen2($name)>32){ $err='Слишком большое название директории'; }else if(strlen2($name)<3){ $err='Слишком короткое название директории'; }else if($pos<0){ $err='Неверный выбор положения директории'; }else{mysql_query("INSERT INTO `user_smiles_dir` (`name`, `pos`, `user`) values('$name', '$pos', '$user[id]')");mysql_query("OPTIMIZE TABLE `user_smiles_dir` where `user` = $user[id]");print'Директория <b>'.$name.'</b> добавлена';}}echo '<form method="post" action="add.php?act=dir">';echo 'Название:(3-32)<br/><input name="name" maxlength="32"/><br/>';echo 'Позиция:(от 1)<br/><input name="pos"/><br/>';echo '<input value="Добавить" type="submit"/></form>';echo '&#187;&nbsp;<a href="index.php">Отмена</a><br/>';}else if($_GET['act']=='smile'){if(isset($_FILES['file']) && $_FILES['file']!=NULL && isset($_POST['name']) && isset($_POST['sim']) && isset($_POST['dir'])){ $name = esc(stripcslashes(htmlspecialchars($_POST['name']))); $dir_s = intval($_POST['dir']); $sim = htmlspecialchars($_POST['sim']);if($imgc=@imagecreatefromstring(file_get_contents($_FILES['file']['tmp_name']))){ $name = rus_to_lat(tolower($name));if($name==NULL){ $err = 'Название файла не заполнено'; }else if(strlen2($name)>10){ $err = 'Название слишком большое. max 10'; }else if(strlen2($name)<1){ $err = 'Название слишком маленькое. min 1'; }else{mysql_query("INSERT INTO `user_smiles_spis` (`name`, `id_dir`, `sim`, `user`) values ('".$name."', '$dir_s', '$sim', '$user[id]')");copy($_FILES['file']['tmp_name'], '../../smiles/usersmiles/'.$name.'.gif');chmod('../../smiles/usersmiles/'.$name.'.gif',0666);print"<b>Смайл загружен</b><br>";}}else{ print"Это не смайл"; }mysql_query("OPTIMIZE TABLE `smiles_spis`"); }echo 'Загружать только *.gif<br/>';echo '<form method="post" enctype="multipart/form-data" action="add.php?act=smile">';echo '<input type="file" name="file" accept="image/*,image/gif"/><br/>';echo '<b>Короткое название смайла:</b><br/><input name="name"><br/>';echo '<b>На что заменяем?:</b><br/><input name="sim"><br/>';echo '<b>Директория</b>:<br/><select name="dir">';$q = mysql_query("SELECT * FROM `user_smiles_dir` where `user` = $user[id]");while($dir = mysql_fetch_array($q)){ echo '<option value="'.$dir['id'].'">'.esc(stripcslashes(htmlspecialchars($dir['name']))).'</option>'; }echo '</select><br/>';echo '<input value="Загрузить" type="submit"/></form>';echo '&#187;&nbsp;<a href="index.php">Отмена</a><br/>';}else{ echo '<div class="err">Неверный ввод</div>'; } echo '</div>';echo gb.'<a href="'.H.'my/index">Личный кабинет</a>'.div;echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;foot();?>

сделать,чтоб название файла который закидывают было не то которое юзер пишет,а чтоб файл сохранялся с именем ид,то есть если ид равен 5 например,то чтоб и файл автоматически менял название на 5.gif как такое сделать?:(

tipsun » 2011.09.28 23:28

ID чего/кого? Юзера, смайла в дирректории по порядку?

POFIGISST » 2011.09.28 23:38

tipsun написал:

ID чего/кого? Юзера, смайла в дирректории по порядку?

в таблице user_smiles_spis первое поле идет id там автоинкремент стоит,вот хочу чтоб по умолчанию картинкам присваивалось имя их ИДа,чтоб юзер сам не мог давать имя файлу который он закидывает((

POFIGISST » 2011.09.29 19:41

а как можно сделать проверку данных которые юзер записывает в форму? то есть есть слова определенные в тхт файле,и над сделать проверку,чтоб если юзер в водит то слово которое в этом тхт файле , то чтоб писало ошибку((

Gemorroj » 2011.09.29 20:26

ну при сабмите проверяй

POFIGISST » 2011.09.29 20:29

Gemorroj написал:

ну при сабмите проверяй

напиши название  функции которая делает такую проверку?:)

Gemorroj » 2011.09.29 20:41

==

POFIGISST » 2011.09.29 20:48

это примерно так, переменная которую юзер вводит,проверяется в тхт файле,и если есть совпадения,то ошибку выдает?:)

Gemorroj » 2011.09.29 21:01

да

POFIGISST » 2011.09.29 21:08

Gemorroj написал:

да

спасиб))

TLENS » 2011.09.30 22:12

Посоветуйте как лучше перенести таблицы с сервера на сервер.
phpmyadmin переносит  с потерями. А в ручную писать скрипт нет времени. Надо успеть до 0:00

Gemorroj » 2011.09.30 22:18

какие именно "потери"?

TLENS » 2011.09.30 22:23

Ну я бекаплю частями по 10000 - 500000  запросов.
При заливке через phpmyadmin разные ошибки, так заливаю через гменеджер-ий заливщик.
пару ошибок и 10 тыс. потерялась. Ну в общем перелил только что фотки 400тыс. то проц. 5 нет в базе

Gemorroj » 2011.09.30 22:24

блин. что за "разные ошибки"?

TLENS » 2011.09.30 22:28

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

TLENS » 2011.10.01 12:21

Паша подскажи что делать.
Стоит nginx и set_time_limit включен но не работает.
Дает 504
читал в гугле решение только max_execution_time но для отдачи файлов ето не вариант надо именно set_time_limit/
Да и безопасный режим отключен

Gemorroj » 2011.10.01 13:40

это в nginx надо ковырять время ожидания ответа.
конкретную директиву не помню.

POFIGISST » 2011.10.05 19:56

Блин,написал сохранение писем,но где то ошибка в запросе,при нажатии на ссылку,в определенное поле в базу,должно заносить результат 1,но нифига не заносит его((
подскажите где в коде у мя ошибка?
вот код((

Код:

1
span style="color: #0000BB"><?phprequire'../config.php';$align='left';$title='Сообщения';head();aut();who_add(0,'enter');switch($mod){default:if (isset($_GET['delread'])){$db->sql_query("DELETE FROM `privat` where to_id = '".$user['id']."' and readin =1");header ('Location: privat?'.SID);}if (isset($_GET['save'])){$db->sql_query("INSERT INTO `saved` where to_id = '".$user['id']."'");header ('Location: privat?'.SID);}if (isset($_GET['delall'])){$db->sql_query("DELETE FROM `privat` where to_id = '".$user['id']."'");header ('Location: privat?'.SID);}echo '&#187; <a href="privat?mod=in">Входящие</a>(<b>'.$db->sql_fetchfield($db->sql_query("select count(*) as num from privat where to_id = '".$user['id']."' and readin !=1"),0).'</b>/'.$db->sql_fetchfield($db->sql_query("select count(*) as num from privat where to_id = '".$user['id']."'"),0).')<br />';echo '&#187; <a href="privat?mod=aut">Исходящие</a>(<b>'.$db->sql_fetchfield($db->sql_query("select count(*) as num from privat where user_id = '".$user['id']."' and readin !=1"),0).'</b>/'.$db->sql_fetchfield($db->sql_query("select count(*) as num from privat where user_id = '".$user['id']."'"),0).')<br />';echo '&#187; <a href="privat?mod=saved">Сохраненные </a>(<b>'.$db->sql_fetchfield($db->sql_query("select count(*) as num from saved where user_id = '".$user['id']."'"),0).'</b>)<br /><br />';echo '&#187; <a href="privat?mod=add">Написать</a><br />';echo '&#187; <a href="privat?save">Сохранить все прочитанные</a><br />';echo '&#187; <a href="privat?delread">Удалить все прочитанные</a><br />';echo '&#187; <a href="privat?delall">Удалить все входящие</a><br />';echo '&#187; <a href="friends">Ваши Друзья</a><br />';echo '&#187; <a href="ignor">Черный список</a><br />';break;case add:if (empty($act)){if ($_GET['err']==1)echo '<b>Сообщение должно быть длиннее 5 символов!</b>';if ($_GET['err']==2)echo '<b>Такого пользователя не существует!</b><br />';if ($_GET['err']==3)echo '<b>Проверочный код введен неверно!</b>';if ($_GET['err']==4)echo '<b>Чтобы писать записки, нужно набрать '.$set['posts_pr'].' постов!</b>';if ($_GET['err']==5)echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>';if ($_GET['err']==6)echo '<b>Вы не можете писать этому пользователю, т.к. находитесь в его черном списке.</b>';if ($_GET['err']==7)echo '<b>Этому пользователю писать могут только друзья.</b>';if ($_GET['err']==8)echo '<b>Полозователь запретил отправлять ему сообщения.</b>';if ($ver!='wml')echo '<form action="privat?mod='.$mod.'&amp;act=act&amp;'.SID.'" method="post">';$to = check($_GET['to']);if ($ver=='wml'){echo 'Кому (Ник/ID):<br /><input name="to'.$ref.'" maxlength="15" value="'.$to.'" title="komu"/><br/>';echo 'Сообщение:<br /><input name="msg'.$ref.'" maxlength="512" title="komu"/><br/>';$chislo=rand(1000,9999);$db->sql_query("DELETE FROM `chislo` WHERE `ip` = '".$ip."'");$db->sql_query("INSERT INTO `chislo` (chislo,ip) values('$chislo','".$ip."')");echo '&#160;<b>'.$chislo.'</b><br/>Проверочный код:<br/><input type="text" name="code'.$ref.'" size="4" maxlength="4" title="code"/>';echo '<br /><anchor title="go">Написать<go href="privat?mod='.$mod.'&amp;act=add&amp;'.SID.'" method="post"><br />';echo '<postfield name="to" value="$to'.$ref.'"/><postfield name="msg" value="$msg'.$ref.'"/><postfield name="code" value="$code'.$ref.'"/></go></anchor><br />';}else{echo "Кому (Ник/ID):<br /><input name='to' maxlength='15' value='$to' title='komu'/><br/>\n";echo'Сообщение:<br /><textarea cols="'.$user['pole2'].'" rows="'.$user['pole1'].'" name="msg" ></textarea><br />';$chislo=rand(1000,9999);$db->sql_query("DELETE FROM `chislo` WHERE `ip` = '".$ip."'");$db->sql_query("INSERT INTO `chislo` (chislo,ip) values('$chislo','".$ip."')");echo '&#160;<b>'.$chislo.'</b><br/>Проверочный код:<br/><input type="text" name="code" size="4" maxlength="4" title="code"/><br/>';echo '<input type="submit" class="ibutton" value="Написать"/></form><br /><br />';}}else{$to = check($_POST['to']);$msg = check($_POST['msg']);$_POST['code'] = check($_POST['code']);$msg = iconv('utf-8', 'windows-1251', $msg);$msg = substr($msg,0,512);$msg = iconv('windows-1251', 'utf-8', $msg);if ($user['translit']==1)$msg = translit($msg);if ($user['posts']<$set['posts_pr']){header ('Location: privat?mod='.$mod.'&err=4&'.SID); exit;}if (!user($to)){header ('Location: privat?mod='.$mod.'&err=2&'.SID); exit;}if (strlen2($msg)<5){header ('Location: privat?mod='.$mod.'&err=1&'.SID); exit;}if (user_inf($to,'xstatus')==2){header ('Location: privat?mod='.$mod.'&err=5&'.SID); exit;}if (ignor(user_inf($to),$user['id'])==1){header ('Location: privat?mod='.$mod.'&err=6&'.SID); exit;}if (user_inf($to,'pp_m_s')==2){header ('Location: privat?mod='.$mod.'&err=8&'.SID); exit;}if (user_inf($to,'pp_m_s')==1 && friends($to,$user['id'])!=1){header ('Location: privat?mod='.$mod.'&err=7&'.SID); exit;}$online = $db->sql_fetchrow($db->sql_query("SELECT * FROM `chislo` WHERE `ip` = '".$ip."'"));if($online['chislo'] != intval($_POST['code'])){header ('Location: privat?mod='.$mod.'&err=3&'.SID); exit;}if ($db->sql_query ("INSERT INTO privat (user,user_id,to_user,to_id,time,msg) VALUES ('$user[user]','$user[id]','".user($to)."','".user_inf($to)."','$time','$msg')")){if (user_inf($to,'pm_notify')==1){if ($user['sex']==1)$sex = 'оставил'; else $sex = 'оставила';$msgmail = "".$user['user']." ".$sex." Вам личное сообщение.\n Просмотреть Ваши новые личные сообщения можно на странице:\n http://".$_SERVER['HTTP_HOST']."/my/privat \n\n С уважением,Администрация ".$_SERVER['HTTP_HOST']."\n_ _ _ _ _\nВы можете поменять настройки e-mail оповещений на странице:http://".$_SERVER['HTTP_HOST']."/my/setting?mod=notify";$mail=explode('|',user_inf($to,'mail'));addmail($mail[0], $user['user'].' '.$sex.' Вам личное сообщение', $msgmail);}echo 'Сообщение для <b>'.user_inf($to,'user').'</b> отправлено!<br />';$db->sql_query("DELETE FROM `chislo` WHERE `ip` = '".$ip."'");if (user_inf($to,'onl')<($time-300)){if(user_inf($to,'avtootvet')!=""){echo 'Автоответчик: '.user_inf($to,'avtootvet').'<br/>';}}}}break;case in:if (isset($_GET['del'])){$db->sql_query("DELETE FROM `privat` WHERE `id` = '".intval($_GET['del'])."' and `to_id` = '$user[id]'");}if (isset($_GET['delall'])){$db->sql_query("DELETE FROM `privat` WHERE `user_id` = '".intval($_GET['delall'])."' and `to_id` = '$user[id]'");}if (isset($_GET['save'])){$db->sql_query("update privat set save = '1' where id = '".$a['id']."'");}if (empty($user['max_pr'])) $user['max_pr']=5;$max = $user['max_pr'];$k_post=$db->sql_fetchfield($db->sql_query("select count(*) as num from privat where to_id = '".$user['id']."'"),0);$k_page=k_page($k_post,$max);$page=page($k_page);$start=$max*$page-$max;$r = $db->sql_query ("Select * from privat where to_id = '".$user['id']."' order by time desc LIMIT $start, $max");$k = $db->sql_numrows($r);if ( $k == 0 ){echo 'Сообщений пока нет :(<br />';}$post_k=$start+1;while($a = @$db->sql_fetchrow($r)){if ($a['readin'] == 0){$db->sql_query ("Update privat set readin = '1' WHERE id ='".$a['id']."'");echo links.'<img src="'.H.'img/new.gif" alt="" /> ';}else echo links;if ($a['user_id']==0)echo '<b>'.nik($a['user']).'</b> ('.times($a['time']).')<br />'.div;else echo '<b>'.nik($a['user_id']).'</b> ('.times($a['time']).')<br />'.div;echo antir(text($a['msg']))."<br/>";echo '<dl><dt></dt></dl><a href="privat?mod=add&amp;to='.user_inf($a['user']).'">Ответить</a>| <a href="privat?mod='.$mod.'&amp;save='.$a['id'].'">Сохранить</a> | <a href="friends?mod=add&amp;act=add&amp;nick='.user_inf($a['user']).'">В друзья</a>|<a href="ignor?mod=add&amp;act=add&amp;nick='.user_inf($a['user']).'">В черный список</a>|<a href="privat?mod='.$mod.'&amp;del='.$a['id'].'">Удалить</a>|<a href="privat?mod='.$mod.'&amp;delall='.user_inf($a["user"]).'">Удалить всё от</a> '.user($a["user"]).'';echo "<hr />";}if ($k_page>1){echo "<dl><dt></dt></dl>";str('privat?mod=in&amp;',$k_page,$page); // Вывод страницecho "<br /><dl><dt></dt></dl><br />";}break;case aut:if (empty($user['max_pr'])) $user['max_pr']=5;$max = $user['max_pr'];$k_post=$db->sql_fetchfield($db->sql_query("select count(*) as num from privat where user_id = '".$user['id']."'"),0);$k_page=k_page($k_post,$max);$page=page($k_page);$start=$max*$page-$max;$r = $db->sql_query ("Select * from privat where user_id = '".$user['id']."' order by time desc LIMIT $start, $max");$k = $db->sql_numrows($r);if ( $k == 0 ){echo 'Сообщений пока нет :(<br />';}$post_k=$start+1;while($a = @$db->sql_fetchrow($r)){if ($a['to_id']=='')echo user($a['to_user"']).'('.times($a['time']).')<br />';else echo '<b>'.nik($a['to_user']).'</b> ('.times($a['time']).')<br />';echo antir(text($a['msg']))."<br/>";echo '<dl><dt></dt></dl><a href="privat?mod=add&amp;to='.user_inf($a['to_user']).'">Написать ещё</a>|<a href="friends?mod=add&amp;user='.user_inf($a['to_user']).'">В друзья</a>|<a href="ignor?mod=add&amp;act=add&amp;nick='.$inf['id'].'">В черный список</a>';echo "<hr />";}if ($k_page>1){echo "<dl><dt></dt></dl>";str('privat?mod='.$mod.'&amp;',$k_page,$page); // Вывод страницecho "<br /><dl><dt></dt></dl><br />";}break;case del:break;}if ($mod)echo gb.'<a href="'.H.'my/privat">Ваши письма</a>'.div;echo gb.'<a href="'.H.'my/index">Личный кабинет</a>'.div;echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;foot();?>

вот запрос в базу который отвечает за занос 1 в базу((

$db->sql_query("update privat set save = '1' where id = '".$a['id']."'");

Gemorroj » 2011.10.05 20:28

после запроса сделай вывод ошибки. какой драйвер для работы с бд используется?

POFIGISST » 2011.10.05 20:33

Gemorroj написал:

после запроса сделай вывод ошибки. какой драйвер для работы с бд используется?

ошибку не показывает,а просто обновляет страницу,ссылка на сохранение письма идет такая http://test4.ru/my/privat?mod=in&save=14
save=14 - это ид письма,которому нужно присвоить значение 1 в базе в определенную строку,а оно нифига не заносит(

Gemorroj » 2011.10.05 22:56

ну пиши ошибку в лог

POFIGISST » 2011.10.05 22:59

Gemorroj написал:

ну пиши ошибку в лог

не умею((не знаю как делать:(

Gemorroj » 2011.10.06 10:25

error_log('error');

TLENS » 2011.10.06 13:15

неужели так еще кто то пишет?

POFIGISST написал:

if ($_GET['err']==1)echo '<b>Сообщение должно быть длиннее 5 символов!</b>';
if ($_GET['err']==2)echo '<b>Такого пользователя не существует!</b><br />';
if ($_GET['err']==3)echo '<b>Проверочный код введен неверно!</b>';
if ($_GET['err']==4)echo '<b>Чтобы писать записки, нужно набрать '.$set['posts_pr'].' постов!</b>';
if ($_GET['err']==5)echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>';
if ($_GET['err']==6)echo '<b>Вы не можете писать этому пользователю, т.к. находитесь в его черном списке.</b>';
if ($_GET['err']==7)echo '<b>Этому пользователю писать могут только друзья.</b>';
if ($_GET['err']==8)echo '<b>Полозователь запретил отправлять ему сообщения.</b>';

POFIGISST » 2011.10.06 15:18

TLENS написал:

неужели так еще кто то пишет?

POFIGISST написал:

if ($_GET['err']==1)echo '<b>Сообщение должно быть длиннее 5 символов!</b>';
if ($_GET['err']==2)echo '<b>Такого пользователя не существует!</b><br />';
if ($_GET['err']==3)echo '<b>Проверочный код введен неверно!</b>';
if ($_GET['err']==4)echo '<b>Чтобы писать записки, нужно набрать '.$set['posts_pr'].' постов!</b>';
if ($_GET['err']==5)echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>';
if ($_GET['err']==6)echo '<b>Вы не можете писать этому пользователю, т.к. находитесь в его черном списке.</b>';
if ($_GET['err']==7)echo '<b>Этому пользователю писать могут только друзья.</b>';
if ($_GET['err']==8)echo '<b>Полозователь запретил отправлять ему сообщения.</b>';

вывод ошибок,а как ты предлогаешь написать?:)

TLENS » 2011.10.06 15:28

Тот вариант тоже правильный но там в место if надо использовать elseif дабы предотвратить бессмысленные проверки.
А вообще по всем принципам кодинга, да и по производительности такой вариант будет правильней.

Код:

1
span style="color: #0000BB"><?phpif (isset($_GET['err'])) { switch($_GET['err']) case 1 : echo '<b>Сообщение должно быть длиннее 5 символов!</b>'; break; case 2 : echo '<b>Такого пользователя не существует!</b><br />'; break; case 3 : echo '<b>Проверочный код введен неверно!</b>'; break; case 4 : echo '<b>Чтобы писать записки, нужно набрать '.$set['posts_pr'].' постов!</b>'; break; case 5 : echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>'; break; case 6 : echo '<b>Вы не можете писать этому пользователю, т.к. находитесь в его черном списке.</b>'; break; case 7 : echo '<b>Этому пользователю писать могут только друзья.</b>'; break; case 8 : echo '<b>Полозователь запретил отправлять ему сообщения.</b>'; break; }}
POFIGISST » 2011.10.06 15:39

TLENS написал:

Тот вариант тоже правильный но там в место if надо использовать elseif дабы предотвратить бессмысленные проверки.
А вообще по всем принципам кодинга, да и по производительности такой вариант будет правильней.

Код:

1
span style="color: #0000BB"><?phpif (isset($_GET['err'])) { switch($_GET['err']) case 1 : echo '<b>Сообщение должно быть длиннее 5 символов!</b>'; break; case 2 : echo '<b>Такого пользователя не существует!</b><br />'; break; case 3 : echo '<b>Проверочный код введен неверно!</b>'; break; case 4 : echo '<b>Чтобы писать записки, нужно набрать '.$set['posts_pr'].' постов!</b>'; break; case 5 : echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>'; break; case 6 : echo '<b>Вы не можете писать этому пользователю, т.к. находитесь в его черном списке.</b>'; break; case 7 : echo '<b>Этому пользователю писать могут только друзья.</b>'; break; case 8 : echo '<b>Полозователь запретил отправлять ему сообщения.</b>'; break; }}

спасибо,воспользуюсь,а насчет elseif ты прав,чтоб пустых проверок небыло так нужно писать(( ступил((

POFIGISST » 2011.10.06 16:48

начал вставлять,была мелкая синтаксическая ошибка,её убрал,теперь выводит только титле вверху страницы((может я где-то ошибку сделал,даже скорее всего(( в какой строке эта ошибка?вот тот код которые вставлял(

Код:

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
case add:
 
if (isset($_GET['err'])) {
switch($_GET['err'])
{
case 1 :
echo '<b>Сообщение должно быть длиннее 5 символов!</b><br />';
break;
case 2 :
echo '<b>Такого пользователя не существует!</b><br />';
break;
case 3 :
echo '<b>Проверочный код введен неверно!</b>';
break;
case 4 :
echo '<b>Чтобы писать записки, нужно набрать '.$set['posts_pr'].' постов!</b>';
break;
case 5 :
echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>';
break;
case 6 :
echo '<b>Вы не можете писать этому пользователю, т.к. находитесь в его черном списке.</b>';
break;
case 7 :
echo '<b>Этому пользователю писать могут только друзья.</b>';
break;
case 8 :
echo '<b>Полозователь запретил отправлять ему сообщения.</b>';
break;
}
 
if ($ver!='wml')echo '<form action="privat?mod='.$mod.'&amp;act=act&amp;'.SID.'" method="post">';
 
$to = check($_GET['to']);
TLENS » 2011.10.06 17:11

Ты что не умеешь php валидаторами пользоватся?
http://wapinet.ru/syntax/

POFIGISST » 2011.10.06 17:16

TLENS написал:

Ты что не умеешь php валидаторами пользоватся?
http://wapinet.ru/syntax/

я им и пользовался!!! ща я те скрин сделаю!!!! смотри Дим сам скрин(((

Gemorroj » 2011.10.06 19:06

ну так мало ли, у тебя в функциях что. ты же их не валидируешь

TLENS » 2011.10.06 19:12

Нет фгурной скобы.
Я пропустил и ты с ними напортачил.

POFIGISST написал:

if (isset($_GET['err'])) {
    switch($_GET['err'])
      {
        case 1 :
    echo '<b>Сообщение должно быть длиннее 5 символов!</b><br />';
    break;
        case 2 :
    echo '<b>Такого пользователя не существует!</b><br />';
    break;
        case 3 :
    echo '<b>Проверочный код введен неверно!</b>';
    break;
        case 4 :
    echo '<b>Чтобы писать записки, нужно набрать '.$set['posts_pr'].' постов!</b>';
    break;
        case 5 :
    echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>';
    break;
        case 6 :
    echo '<b>Вы не можете писать этому пользователю, т.к. находитесь в его черном списке.</b>';
    break;
        case 7 :
    echo '<b>Этому пользователю писать могут только друзья.</b>';
    break;
        case 8 :
    echo '<b>Полозователь запретил отправлять ему сообщения.</b>';
    break;
    }
}
if ($ver!='wml')echo '<form action="privat?mod='.$mod.'&amp;act=act&amp;'.SID.'" method="post">';
 
$to = check($_GET['to']);

POFIGISST » 2011.10.06 19:23

Gemorroj написал:

ну так мало ли, у тебя в функциях что. ты же их не валидируешь

а как их можно валидировать? и вообще есть какая нить прога,чтоб проверяла на ошибки код?)
Добавлено спустя   3 минуты  18 секунд:

TLENS написал:

Нет фгурной скобы.
Я пропустил и ты с ними напортачил.

POFIGISST написал:

if (isset($_GET['err'])) {
    switch($_GET['err'])
      {
        case 1 :
    echo '<b>Сообщение должно быть длиннее 5 символов!</b><br />';
    break;
        case 2 :
    echo '<b>Такого пользователя не существует!</b><br />';
    break;
        case 3 :
    echo '<b>Проверочный код введен неверно!</b>';
    break;
        case 4 :
    echo '<b>Чтобы писать записки, нужно набрать '.$set['posts_pr'].' постов!</b>';
    break;
        case 5 :
    echo '<b>Запрещено писать пользователям с х-статусом "Не беспокоить"<img src="'.H.'img/online/zaniat.png" alt="" /></b>';
    break;
        case 6 :
    echo '<b>Вы не можете писать этому пользователю, т.к. находитесь в его черном списке.</b>';
    break;
        case 7 :
    echo '<b>Этому пользователю писать могут только друзья.</b>';
    break;
        case 8 :
    echo '<b>Полозователь запретил отправлять ему сообщения.</b>';
    break;
    }
}
if ($ver!='wml')echo '<form action="privat?mod='.$mod.'&amp;act=act&amp;'.SID.'" method="post">';
 
$to = check($_GET['to']);

а с этой скобкой вообще "Удаленный сервер или файл не найден" Гг

Gemorroj » 2011.10.06 20:32

многие IDE это умеют делать.

POFIGISST » 2011.10.06 23:04

Gemorroj написал:

многие IDE это умеют делать.

спасибо,запомню это))

POFIGISST » 2011.10.06 23:38

помогите сделать запрос на проверку существования ида в базе? нужно написать запрос на проверку переменной $user['id'], в таблице group_users в поле user_id во всех полях которые там есть,и если где нибудь переменка $user['id'] равна числу которое в поле user_id,то чтоб скрывало ссылку? как такой запрос сделать можно?

TLENS » 2011.10.06 23:43

Код:

1
span style="color: #0000BB"><?php$q = mysql_query("SELECT COUNT(*) FROM `group_users` WHERE ` user_id` = '{$user['id']}'");if (!@mysql_result($q, 0)) { echo 'нет';}
Gemorroj » 2011.10.06 23:43

='(
в чем собсно сложность?
Добавлено спустя    57 секунд:
COUNT(*) заменить на 1
нам не нужно ничего считать.
и mysql_result заменить на mysql_num_rows

POFIGISST » 2011.10.06 23:45

блин,я понимаю что для вас это не сложно,и вообще тут собрались хорошие кодеры(не считая меня,но я и не кодер) для меня синтаксис сложный если писать функции(

POFIGISST » 2011.10.07 20:26

блин,это смешно,но я запутался(( не знаю как правильно знак поставить в коде((

вот код

Код:

1
2
3
4
5
if(isset($user)){
if($user['level']!=9){echo 'А ты что здесь забыл?';}else{
$action=htmlspecialchars(trim($_GET['action']));
switch ($action){
default:

и вот в этой if($user['level']!=9){echo 'А ты что здесь забыл?'; строке хочу сделать чтоб проверка была не только на левел 9,а хочу сделать чтоб если левел равен 8 или больше чем 8,то чтоб дальше код нормально шел((

Gemorroj » 2011.10.07 20:40

Код:

1
span style="color: #0000BB"><?phpif (isset($user)) { if ($user['level'] < 8) { echo 'А ты что здесь забыл?'; } else { $action=htmlspecialchars(trim($_GET['action'])); switch ($action){ default:
POFIGISST » 2011.10.07 20:48

Gemorroj написал:

Код:

1
span style="color: #0000BB"><?phpif (isset($user)) { if ($user['level'] < 8) { echo 'А ты что здесь забыл?'; } else { $action=htmlspecialchars(trim($_GET['action'])); switch ($action){ default:

спасиб,а я делал не так((думал что через знак =< делать это((

POFIGISST » 2011.10.08 01:34

так я с письмами и не разобрался,поэтому решил их переписать,смысл идет в том,чтоб юзер мог сохранять важные ему письма в архиве,и при чистке чтоб они оставались,решил это сделать так,если юзер сохранил письмо то в базу заносится значение 1,и при чистке чтоб не удаляло письма у которых стоит значение 1,может есть какой нить более удобный и просто способ сделать сохранение писем?

TLENS » 2011.10.08 01:37

POFIGISST написал:

может есть какой нить более удобный и просто способ сделать сохранение писем?

А ты как думаешь, сможешь придумать лучше?

POFIGISST » 2011.10.08 01:38

TLENS написал:

POFIGISST написал:

может есть какой нить более удобный и просто способ сделать сохранение писем?

А ты как думаешь, сможешь придумать лучше?

придумать то может и смогу,но воплотить это,х\з,не смогу наверное(
Добавлено спустя   7 минут  14 секунд:
ну или можно наверное еще сделать ,создать отдельную таблу для сохраненных и чтоб те письма которые сохраняют,переносились в эту таблицу и потом уже из нее сделать вывод)

TLENS » 2011.10.08 01:50

Ну блин тебе что трудно почитать мануал?
Я в JS был полным топором. Выучил его основы за три дня. (Далее практика и логика) Кстати он мне более всего нравится. А сейчас читаю мануал по сишарпе очень интересный правда на понятие основ, структурирование и принципов пошло более недели но во всяком случае не пол года как это длится у тебя. Не повторяй моих ошибок (Я наплевал на мануал и учил php методом тыка целых пять лет)
Да но не ленись тестировать! попробуй что лучше тот вариант или тот. Ну не может быть такого что в человека не присутствует логика. Или ты вообще занимаешься херней которая тебе и нах не нужна

POFIGISST » 2011.10.08 01:54

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

POFIGISST » 2011.10.08 17:33

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

Код:

1
span style="color: #0000BB"><?phprequire'../config.php';$align='left';$title='Анкета';aut();head();who_add(0,'enter');switch($mod) {case smile:if (empty($act)) {echo 'Размер загружаемого смайла не должен привышать 25 кб. 100х100px. Форматы: gif, jpg, jpeg, png<br/>';if ($_GET['err'] == 1) echo '<b style="color: red">Недопустимое расширение файла!</b><br />';if ($_GET['err'] == 2) echo '<b style="color: red">Размер файла не должен превышать 25 кб.</b><br />';if ($_GET['err'] == 3) echo '<b style="color: red">Достигнут лимит загружаемых смайлов!</b><br />';if ($_GET['err'] == 4) echo '<b style="color: red">Неправильное расширение смайла!</b><br />';$count = mysql_fetch_assoc(mysql_query("SELECT `lsmile`,`lsmile2`,`lsmile3` FROM `users` WHERE `id`='$id'"));if (!empty($count['lsmile'])) {$l = 1;}if (!empty($count['lsmile2'])) {$l2 = 1;}if (!empty($count['lsmile3'])) {$l3 = 1;}echo '<u>Личных смайлов '.($l+$l2+$l3).' из 3</u><br/>';echo '<form ENCTYPE="multipart/form-data" action="upload?mod=smile&amp;act=act&amp;'.SID.'" method="post">';echo '<b>Прикрепить смайл:</b><br/>';echo '<INPUT NAME="file" TYPE="file" SIZE="20"><br/><input type="submit" class="ibutton" value="Загрузить"></form><br/>';} else {if (!isset($_FILES['file'])) $err = "<b>Вы не указали файл!</b><br/>";$pictures = array('.gif', '.jpg', '.jpeg', '.png');$ext = strtolower(strrchr($_FILES['file']['name'], '.'));$par = getimagesize($_FILES['file']);if (($par[0] > 100) or ($par[1] > 100)) {header ('Location: upload?mod=smile&err=4&'.SID);exit;}$fnames = $_FILES['file']['name']; //имяif ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess")) {header ('Location: upload?mod=smile&err=1&'.SID);exit;}if (!empty($user['lsmile']) && !empty($user['lsmile2']) && !empty($user['lsmile3'])) {header ('Location: upload?mod=smile&err=3&'.SID);exit;}if (!in_array($ext, $pictures)) {header ('Location: upload?mod=smile&err=1&'.SID);exit;}if ($_FILES['file']['size'] > (1024 * 25)) {header ('Location: upload?mod=smile&err=2&'.SID);exit;}if (empty($user['lsmile'])) {$foto = "files/lsmiles/smile_".$user['id'].$ext."";} elseif (empty($user['lsmile2'])) {$foto = "files/lsmiles/smile2_".$user['id'].$ext."";} elseif (empty($user['lsmile3'])) {$foto = "files/lsmiles/smile3_".$user['id'].$ext."";}if (empty($user['lsmile']) || empty($user['lsmile2']) || empty($user['lsmile3'])) {@copy($_FILES['file']['tmp_name'], H.$foto);@chmod(H.basename($foto), 0751);}if (empty($user['lsmile'])) {$db->sql_query("Update users set lsmile='".$foto."' where id ='".$user['id']."'");} elseif (empty($user['lsmile2'])) {$db->sql_query("Update users set lsmile2='".$foto."' where id ='".$user['id']."'");} elseif (empty($user['lsmile3'])) {$db->sql_query("Update users set lsmile3='".$foto."' where id ='".$user['id']."'");}header ('Location: profile?mod=lsmile&ok=add&'.SID);exit;}break;case 'photo':if (empty($act)){echo 'Размер загружаемого фото не должен привышать '.$set['size_photo'].' кб. Форматы: gif, jpg, jpeg, png.<br/>';if ($_GET['err']==1)echo '<b>Недопустимое расширение файла!</b><br />';if ($_GET['err']==2)echo '<b>Размер файла не должен превышать '.$set['size_photo'].' кб.</b><br />';echo '<form ENCTYPE="multipart/form-data" action="upload?mod=photo&amp;act=act&amp;'.SID.'" method="post">';echo '<b>Прикрепить фотку:</b><br/>';echo '<INPUT NAME="file" TYPE="file" SIZE="20"><br/><input type="submit" class="ibutton" value="Отправить"></form><br/>';}else{if(!isset($_FILES['file'])) $err = "<b>Вы не указали файл!</b><br/>";$pictures = array('.gif', '.jpg', '.jpeg', '.png');$ext = strtolower(strrchr($_FILES['file']['name'], '.'));$fnames=$_FILES['file']['name']; //имяif ((preg_match("/.php/i", $fnames)) or (preg_match("/.pl/i", $fnames)) or ($fnames == ".htaccess")){header ('Location: upload?mod='.$mod.'&err=1&'.SID);exit;}if(!in_array($ext, $pictures)){header ('Location: upload?mod=photo&err=1&'.SID);exit;}if($_FILES['file']['size'] > (1024 * $set['size_photo'])) {header ('Location: upload?mod=photo&err=2&'.SID);exit;}$foto = "files/photos/photo_".$user['id'].$ext."";unlink (H.$user['photo'].'');@copy($_FILES['file']['tmp_name'], H.$foto);@chmod(H.basename($foto), 0644);@$db->sql_query ("Update users set photo='".$foto."', vote_photo='0' where id ='".$user['id']."'");@$db->sql_query ("Delete from golos where user ='".$user['id']."'");header ('Location: profile?mod=photo&ok=add&'.SID);exit;}break;}echo gb.'<a href="index?mod=smile">Меню смайла</a>'.div;echo gb.'<a href="index">Личный кабинет</a>'.div;echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;foot();?>

Добавлено спустя   4 минуты  3 секунды:
вот это

Код:

1
2
3
4
5
echo 'Размер загружаемого смайла не должен привышать 25 кб. 100х100px. Форматы: gif, jpg, jpeg, png<br/>';
if ($_GET['err'] == 1) echo '<b style="color: red">Недопустимое расширение файла!</b><br />';
if ($_GET['err'] == 2) echo '<b style="color: red">Размер файла не должен превышать 25 кб.</b><br />';
if ($_GET['err'] == 3) echo '<b style="color: red">Достигнут лимит загружаемых смайлов!</b><br />';
if ($_GET['err'] == 4) echo '<b style="color: red">Неправильное расширение смайла!</b><br />';

исправлю,делали уже замечание за такой вывод ошибок(

POFIGISST » 2011.10.08 23:30

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

TLENS » 2011.10.08 23:58

Ну напиши и будет тебе такая функция.

POFIGISST » 2011.10.09 00:05

название хоть такой функции скажи,поищу ман по ней,и буду пробовать сам писать)

tipsun » 2011.10.10 23:11

Да просто пусть пользователь в браузере показ картинок выключит и все =)
- - - -
Или просто вырезать, с готовой к выводу страницы, <img /> тег.

Код:

1
span style="color: #0000BB"><?phpfunction img_cut($html=0) { return preg_replace('/<img[^>]+>/i', '[image]', $html); }?>
POFIGISST » 2011.10.11 00:19

tipsun написал:

Да просто пусть пользователь в браузере показ картинок выключит и все =)
- - - -
Или просто вырезать, с готовой к выводу страницы, <img /> тег.

Код:

1
span style="color: #0000BB"><?phpfunction img_cut($html=0) { return preg_replace('/<img[^>]+>/i', '[image]', $html); }?>

ну мне нужно чтоб при скрытие картинок показывало их название,а то в чате не понятно какой смайл ставят если их вырезать((
Добавлено спустя   2 минуты  24 секунды:
tipsun
спасибо,дальше сам уже разберусь))

tipsun » 2011.10.11 00:31

POFIGISST написал:

а есть функция которая вырезает картинки со страниц...

Как написал так и понял =)
- - - -
Для смайлов по-другому.
Там у тебя есть функция для вставки смайлов, её выключать и все.

POFIGISST » 2011.10.11 00:34

tipsun
спасиб,разберусь там=))

TLENS » 2011.10.11 08:24

POFIGISST написал:

название хоть такой функции скажи,поищу ман по ней,и буду пробовать сам писать)

В базу записывай не конвертированные Смайлы тип :) . А при выводе пользователю с базы обработай смайлы если надо, ну и понятно если не надо то не обрабатывай.
Добавлено спустя   4 минуты  1 секунду:
Ну или тоже самое как меняешь :) на <img ... .
Конвертируй эту функцию.

POFIGISST » 2011.10.17 09:36

Посмотрите пожалуйста код у кого есть время,скажите мои недочеты в нем?:(

Код:

1
span style="color: #0000BB"><?phprequire'../config.php';$align='left';$title='Удаление всех писем!';aut();head();who_add(0,'enter');echo '<div class="menu">';levels(9);//защита от ололожек...if (isset($_GET['act'])) { $act = check(intval($_GET['act']));} else { $act = '1';} switch ($act):case '1':echo '<b>Удаление всех писем!</b><br/>';if($user['level']==9) echo '<a href="delet?act=2">Удаляем все письма?</a><br/>';//если да,то переход на страницу подверждения...if($user['level']==9)echo '<a href="/enter">Нет,не удалять письма!</a><br/>';//отказ от удаления...if($user['level']!=9)echo 'Эээ...Верните копирайт сцуки....<br/>';//выводит если ололожка все таки пробрался...break;/** * Подтверждение удаления */ case '2':echo '<b>Вы уверены?</b><br/>';if($user['level']==9) echo '<a href="delet?act=3">Да!!</a><br/>';//подтверждаем...if($user['level']==9)echo '<a href="/enter">Нет!!</a><br/>';//не подтверждаем...break;case '3':/** * Сама функция удаления... */mysql_query("TRUNCATE TABLE `privat`");//запрос в бд на удаление...echo 'Письма успешно удалены!<br/>';if($user['level']==9) echo'<a href="index">В админку</a><br />';break;/** * the end... */default:header("location: delet.php");exit;endswitch;echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;foot();?>
Gemorroj » 2011.10.17 11:38

многабукаф

POFIGISST » 2011.10.17 11:42

как по другому сделать я х.з. ,сначала написал этот код на 2 страницы,на одной странице была ссыль на вторую страницу с подтверждением,потом решил так написать,с функцией case ((

tipsun » 2011.10.17 11:43

Код:

1
span style="color: #0000BB"><?php$text = preg_replace('/<img[^>]+>/i', '[image]', $text);?>

Регулярному выражению есть альтернативный синтаксис, покрасивше?

Gemorroj » 2011.10.17 11:56

tipsun тебе все img теги нужно вырезать?
я бы на твоем месте не парился. норм.

POFIGISST » 2011.10.17 23:24

как делать проверку при загрузке на размер файла,например если установлено 75х75 то чтоб если файл больше,то выдавало ошибку,как такую проверку можно сделать?:)

TLENS » 2011.10.17 23:30

Ну очень просто ты уже задавал этот вопрос и полчал на него ответ.
http://php.net/manual/ru/function.getimagesize.php

POFIGISST » 2011.10.17 23:32

TLENS написал:

Ну очень просто ты уже задавал этот вопрос и полчал на него ответ.
http://php.net/manual/ru/function.getimagesize.php

ты прав Дим,завтыкал совсем,сорри((

tipsun » 2011.10.18 10:13

Gemorroj написал:

tipsun тебе все img теги нужно вырезать?
я бы на твоем месте не парился. норм.

Ну мне надо просто чтоб ограничить до символа ">" . Я, если не ошибаюсь, видел твой пост с каким-то другим ограничением, чтоб не пропустило символ нужный. Как-то с этими что-ли: |<тег>|

POFIGISST » 2011.10.20 00:53

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

Код:

1
2
3
if (isset($_GET['del'])){
$db->sql_query("DELETE FROM `privat` WHERE `id` = '".intval($_GET['del'])."' and `to_id` = '$user[id]'");
}

но чтоб вместо удаления,заносилось число 1 в таблицу privat в поле save?((

TLENS » 2011.10.20 00:59

POFIGISST написал:

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

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
Первый результат с гугла

POFIGISST » 2011.10.20 01:01

TLENS написал:

POFIGISST написал:

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

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
Первый результат с гугла

а эта SET column1=value, column2=value2,... строка за что отвечает?

TLENS » 2011.10.20 01:02

UPDATE `privat`
SET `save` = 1
WHERE `id` = '".intval($_GET['del'])."' and `to_id` = '$user[id]'

POFIGISST » 2011.10.20 01:05

TLENS написал:

UPDATE `privat`
SET `save` = 1
WHERE `id` = '".intval($_GET['del'])."' and `to_id` = '$user[id]'

да,понял,просто запись не привычная((

TLENS » 2011.10.20 01:07

POFIGISST
А что именно не привычно?

POFIGISST » 2011.10.20 01:17

TLENS
ну я привык что запросы пишутся примерно так "$db->sql_query("DELETE FROM `privat` WHERE `id` = '".intval($_GET['del'])."' and `to_id` = '$user[id]'");" а у тя как то столбиком,и не знал для чего нужно SET не сталкивался с таким)((

tipsun » 2011.10.22 10:55

Как правильно/лучше/итд?

1)

Код:

1
span style="color: #0000BB"><?php$a = 2;if($a != 1) echo $a;?>

2)

Код:

1
span style="color: #0000BB"><?php$a = 2;if(1 != $a) echo $a;?>
POFIGISST » 2011.10.22 11:58

tipsun написал:

Как правильно/лучше/итд?

1)

Код:

1
span style="color: #0000BB"><?php$a = 2;if($a != 1) echo $a;?>

2)

Код:

1
span style="color: #0000BB"><?php$a = 2;if(1 != $a) echo $a;?>

а если переменная $a будет равна 0,то переменную а выведет))

я бы так сделал))

Код:

1
2
$a = 2;
if($a>=2) echo $a;
TLENS » 2011.10.22 12:08

tipsun
Разницы никакой

POFIGISST » 2011.10.22 17:25

Блин,нашел парс с o5wap.ru,на денвере норм работает,а на хосте вот такую ошибку выдает

Код:

1
Warning: set_time_limit() has been disabled for security reasons in /home2/d4cc1zrx/public_html/index3.php on line 4

ошибка в 4 строке,ток х.з что это за ошибка(( как её можно исправить?:)

tipsun » 2011.10.22 21:32

POFIGISST, ты кажется не понял сути моего вопроса :)
TLENS, спс.

Gemorroj » 2011.10.23 01:46

1 != $a предпочтительнее чем $a != 1, т.к. в случае если забыли ! написать php кинет ошибку. такая страховка от описок.

tipsun » 2011.10.23 08:14

Gemorroj, ок, спс.

TLENS » 2011.10.23 19:47

Gemorroj
Кстате да бывает частенько допустишь где то ошибку а а синтаксис правильный и ищи ее тогда.

Escos » 2011.10.25 14:35

есть ли возможность, изменить время последнего редактирования файла/директории?

Gemor » 2011.10.25 14:42

touch

POFIGISST » 2011.10.30 16:39

что это за  ошибка ?

Код:

1
Warning: file_get_contents(http://pron.siza.us/?) [function.file-get-contents]: failed to open stream: Operation now in progress in /home2/d4cc1zrx/public_html/set/index.php on line 21

это из за того что хост грабб не тянет? или ошибка в файле?

Gemorroj » 2011.10.30 19:23

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

POFIGISST » 2011.10.30 19:44

Gemorroj написал:

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

Паш,я тебе в личку скину,потому что грабб платный,не могу выкладывать в паблик))
Добавлено спустя   7 минут  14 секунд:
Бля,хотя это из-за хоста (( на денвер только что поставил,работает(а на хосте ошибка((

Gemorroj » 2011.10.30 20:47

у меня проблема не воспроизвелась, но там определенно есть ошибка в построении http запроса.
попробуй в index.php исправить код вначале на это:

Код:

1
2
3
4
5
6
7
8
9
10
11
$user = stream_context_create(array(
'http' => array(
'method' => 'GET',
'header' => array(
'User-Agent: Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95_8GB/15.0.015; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
'Referer: http://pron.siza.us/'
)
)
));
 
$set = file_get_contents('http://pron.siza.us/?' . $_SERVER['QUERY_STRING'], false, $user);
POFIGISST » 2011.10.30 23:31

Gemorroj написал:

у меня проблема не воспроизвелась, но там определенно есть ошибка в построении http запроса.
попробуй в index.php исправить код вначале на это:

Код:

1
2
3
4
5
6
7
8
9
10
11
$user = stream_context_create(array(
'http' => array(
'method' => 'GET',
'header' => array(
'User-Agent: Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95_8GB/15.0.015; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
'Referer: http://pron.siza.us/'
)
)
));
 
$set = file_get_contents('http://pron.siza.us/?' . $_SERVER['QUERY_STRING'], false, $user);

Благодарю Паш,код заменил,на более дорогом хосте все работает,без ошибок,а на том на котором я сейчас,ошибка такая((Автор сказал возможную причину этой ошибки "видимо ip забанен на хосте,обратись в поддержку" )) напишу в поддержку,посмотрю,что они ответят,а там уже буду далее решать,что делать))

POFIGISST » 2011.10.31 03:50

Заебись,на другой хост валю(( вот что поддержка хоста ответила

"Здравствуйте, ip адрес на котором находится сайт pron.siza.us принадлежит подсети с которой совершалась атака на наш сервер, в текущий момент в бан листе находится вся подсеть. Доступ с нашего сервера к ней невозможен."

ну я в принципе так и думал((

POFIGISST » 2011.11.01 16:18

Подскажите,есть ли прога которая массово меняет кодировку в нескольких файлах сразу? Или может как-то можно сделать по другому,у меня есть скрипт,но там во всех страницах кодирока неверная стоит,и на страницах фигню выводит(( а на каждой странице менять кодировку заипусь((

DarkRiDDeR » 2011.11.01 17:35

Должна быть

Gemorroj » 2011.11.01 17:37

http://wapinet.ru/script/show.php?d=%2F … Ficonv.zip

POFIGISST » 2011.11.01 21:02

Gemorroj
Благодарю ))

POFIGISST » 2011.11.01 23:22

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

POFIGISST » 2011.11.04 09:55

каким кодом можно сделать очистку папок? например написать код в какой нить файл,поставить на этот файл крон на 00.00 например,и чтоб при запуске этого файла,очищалась папка files,чтоб в ней удалялись все папки,какая функция это реализовывает? без бд все идет))

\\\\\\\\\\\\\\\\\\\\\\\\\\\
хотя нах крон,без крона вот так

Код:

1
lt;? function old($papka,$times){ $old_time = time()-60*$times; $dir = opendir ($papka); while ($file = readdir ($dir)) { if (( $file != ".") && ($file != "..")) $files[]="$papka/$file"; $time[]=filemtime("$papka/$file" ); } closedir ($dir); $count_files = count($files); for($i = 1; $i< $count_files; $i++){ if($time[$i] <= $old_time){ @unlink($files[$i]); } } } ?>

сделаю)) может есть вариант лучше?)

DarkRiDDeR » 2011.11.04 10:34

Тебе удалит в папке все файлы и все папки?

POFIGISST » 2011.11.04 10:38

DarkRiDDeR написал:

Тебе удалит в папке все файлы и все папки?

да,у меня идет папка files в ней подпапки ну типа kartinki и в этих подпапках файлы идут) мне нужно полностью очищать папку files )

DarkRiDDeR » 2011.11.04 15:29

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Функция "Удаления каталога с файлами"
function delete_dir($dir){
$opendir = opendir($dir);
if(!is_dir($dir) || !$opendir) return FALSE;
 
while(($file = readdir($opendir)) !== false){
if($file == "." xor $file == "..") continue;
$file = $dir . '/' . $file;
 
if(is_dir($file)) delete_dir($file);
else unlink($file);
}
closedir($dir);
 
return rmdir($dir);
}

Получше, наверно, будет

POFIGISST » 2011.11.04 16:00

DarkRiDDeR
в 4 строке ошибка какая то((

DarkRiDDeR » 2011.11.04 16:04

конец строки пропустил

Warwar50 » 2011.11.04 22:29

Привет. Подскажите код чтоб просмотреть всю инфу бравзера даже если юзер с оперы.

Gemorroj » 2011.11.04 23:43

print_r($_SERVER);

DarkRiDDeR » 2011.11.05 11:16

А есть такая функция, которая возвращает номер строки скрипта? К примеру эта функция написана на 15 строке скрипта, 15 она и вернёт

Gemorroj » 2011.11.05 12:35

__LINE__

DarkRiDDeR » 2011.11.05 13:35

Пасяб

Nu3oN » 2011.11.06 16:34

В общем вернулся к разработке своей cms системы, и опять работаю над mvc

Нужно определить путь к контроллеру, файл класса контроллера и метод который нам должен выдать скрипт!
В общем пока писал, запутался во всем этом! глянь те ка все нормально?

Код:

1
span style="color: #0000BB"><?php// константа PATH_CONTROLLERS это папка с контроллерамиclass WorkingWithUrl{ private $_arrDefault = array( 'path' => 'home/', 'class' => 'index', 'method' => 'default' ); function __construct() { if (! empty($_GET['do'])) { /* * Режем url. */ $arrURL = array_filter(explode('/', $_GET['do']), 'trim'); /* * Узнаем колличество эллементов. */ $intURL = count($arrURL); /* * Создаем временное хранилище. */ $i=0; $get = array('str'=>'', 'dir'=>'', 'class'=>'', 'method'=>'method'); /* * Обрабатываем каждый эллемент массива. */ foreach ($arrURL as $key) { /* * Узнаем была ли уже определен путь или нет, если да, то добавляем еще папку. */ $get['str'] = (empty($get['dir']) ? null : $get['dir']) . $key; /* * Определяем тип (папка это или файл)*/ if (is_dir(PATH_CONTROLLERS . $get['str']. '/')) { /* * Если это папка пишем в хранилище путь. */ $get['dir'] = $get['str'] . '/'; } else { /* * Определяем тип (файл это метод). */ if (is_file(PATH_CONTROLLERS . $get['str'] . '.php')) { /* * Если это файл класса, то пишем в хранилище название класса. */ $get['class'] = $arrURL[$i]; /* * Проеряем наличие метода в классе. */ } else { /* * Подключаем файл класса. */ include_once (PATH_CONTROLLERS . $this -> _arrDefault['path'] . $this -> _arrDefault['class'] . '.php'); /* * Проверяем наличие метода в классе. */ if (is_callable(array('Download_' . $get['class'], $key))) { /* * Если это метод то пишем в хранилище название. */ $get['method'] = $key; /* * Останавливаем выполнеие цикла (что бы не обрабатывал оставшиеся эллементы если они есть). */ continue; } else { /* * Если не найдена категория и файл класса, то очищаем хранилище. */ $get = array('str'=>'', 'dir'=>'', 'class'=>'', 'method'=>'method'); } } } ++$i; } $this -> _arrDefault['path'] = empty($get['dir']) ? $this -> _arrDefault['path'] : $get['dir']; $this -> _arrDefault['class'] = empty($get['class']) ? $this -> _arrDefault['class'] : $get['class']; $this -> _arrDefault['method'] = empty($get['method']) ? $this -> _arrDefault['method'] : $get['method']; } }}
Gemorroj » 2011.11.06 16:46

м, я тоже путаюсь тут. добавь к коду комментарии.
$get['str'] - это что?

Nu3oN » 2011.11.06 17:04

Gemorroj написал:

м, я тоже путаюсь тут. добавь к коду комментарии.
$get['str'] - это что?

это для склеивания эллементов массива в строку составляющую путь
типа: из массива array(dir1, dir2, dir3) в строку  di1/dir2/dir3

Gemorroj » 2011.11.06 17:16

ну вроде норм. хотя я не понимаю, почему меня постоянно что-то путает)

Nu3oN » 2011.11.06 18:37

Gemorroj написал:

ну вроде норм. хотя я не понимаю, почему меня постоянно что-то путает)

не знаю что там тебя пугает, но мне категорически не нравится такое колличество действий за один проход цикла...

Gemorroj » 2011.11.06 18:46

ну видимо это и путает

POFIGISST » 2011.11.07 06:04

как можно замутить время онлайна? чтоб показывало сколько времени человек провел на сайте? Например Онлайн: 3дн.4ч.56м. как такое можно замутить?

TLENS » 2011.11.07 06:35

Пиши в базу время когда последний раз был юзер и еще online_timer
И при следуещем посещении вычесли промежуток сколько небыло его, если меньше 5 мин. Тогда онлайн и до плюсовуй в online_timer эту разницу в секундах

POFIGISST » 2011.11.07 06:48

TLENS
в базу заносит когда юзер был последний раз вот так "2011-11-07 06:42:12"  это нужно все в секунды перекидывать?

Gemorroj » 2011.11.07 10:04

нет. тебе нужно использовать нормальные функции для работы со временем. http://dev.mysql.com/doc/refman/5.5/en/ … tions.html

POFIGISST » 2011.11.07 13:29

Gemorroj написал:

нет. тебе нужно использовать нормальные функции для работы со временем. http://dev.mysql.com/doc/refman/5.5/en/ … tions.html

Благодарю,за одно и английский выучу :cool:  =D

tipsun » 2011.11.07 13:32

Из любопытства пытаюсь написать http://www.kolobok.us/smiles/madhouse/mail1.gif задумку POFIGISST

Код:

1
span style="color: #0000BB"><?php//Для юзера обычно запускается.session_start();//Обычно для счетчика онЛайн бывает уже задан.//$offTimeLimit = 10; //seconds$offTimeLimit = 240; //seconds = 4 minutes$offTime = $_SERVER['REQUEST_TIME'] - $_SESSION['lastActivity'];if ( $offTimeLimit > $offTime )$_SESSION['onLineTime'] += $offTime;$_SESSION['lastActivity'] = $_SERVER['REQUEST_TIME'];//echo $_SESSION['onLineTime'];?>

Вместо того, чтоб заносить в

Код:

1
span style="color: #0000BB"><?php $_SESSION['onLineTime'] += $offTime; ?>

, получается надо в базу.
А в базе я попытался сделать поле

Код:

1
`lifeTime` DATETIME '0000-00-00 00:00:00'

и при помощи

Код:

1
`lifeTime`=DATE_ADD(`lifeTime`, INTERVAL '15' SECOND)

обновить, но сохраняет NULL (Проверил через SELECT как в примерах "там").
Значит `lifeTime` надо держать в INT/BIGINT?

Gemorroj » 2011.11.07 18:40

да.

tipsun » 2011.11.07 19:52

Gemorroj, понятно, спс.

Оптимизация немножко :D если с базой дело будет.
Для чатов думаю как раз актуально.

Код:

1
span style="color: #0000BB"><?php //Для юзера обычно запускается.session_start();//$_SESSION = array();//интервал между обновлениями времени, жизни на сайте юзера, в базе.$updateInterval = 15; //sec//Обычно для счетчика онЛайн бывает уже задан.$offTimeLimit = 240; //seconds = 4 minutes$offTime = $_SERVER['REQUEST_TIME'] - $_SESSION['lastActivity']; if ($updateInterval < $offTime) { if ($offTimeLimit > $offTime) { $_SESSION['onLineTime'] += $offTime; //или запрос в базу на обновление... } $_SESSION['lastActivity'] = $_SERVER['REQUEST_TIME']; }//echo (int) $_SESSION['onLineTime'];?>
POFIGISST » 2011.11.08 01:26

вот такая проблема у меня возникла,в топе сайтов у меня есть функция автомодерация сайтов,то есть проверяет есть ли код счетчика на сайте,и если есть,то активирует сайт,а если нету,то не активирует(( но эта хрень не работает,ошибка какая-то в ней,посмотрите пожалуйста код этой функции

Код:

1
lt;? case 'auto_moderacia': if($id) { $platform_isset = mysql_query("SELECT * FROM `".$prefix."sait` WHERE `id` = '".$id."' AND `id_user` = '".$user_data['id']."' LIMIT 1"); $platform_isset_c = mysql_num_rows($platform_isset); if($platform_isset_c > 0) { $us = mysql_fetch_array($platform_isset); if($us['status'] == 0) { $sait = file_get_contents('http://'.$us['url']); $preg = preg_quote('#<a href="http://'.$set['home'].'/go.php?id='.$id.'"><img src="http://'.$set['home'].'/image.php?id='.$id.'" alt="'.$set['top_name'].'"/></a>#iU'); if(preg_match($preg,$sait)) { $up = mysql_query("UPDATE `".$prefix."sait` SET `status` = '1' WHERE `id` = '".$id."'"); if($up) { echo '<div class="main">'; echo 'Сайт успешно активирован<br/>'; echo '</div>'; } else { echo '<div class="error">'; echo 'Сайт не активирован<br/>'; echo '</div>'; } } } else { echo '<div class="error">'; echo 'Сайт уже был ранее активирован<br/>'; echo '</div>'; } } } break; }
TLENS » 2011.11.08 02:35

Надо регулярку нормальную написать. У меня глаза слипаются.

POFIGISST » 2011.11.08 02:42

TLENS написал:

Надо регулярку нормальную написать. У меня глаза слипаются.

спасибо Дим,в аське все объяснил,я не прошу чтоб кто то за меня написал,хочу сам исправить,прошу только подсказать где ошибка((

TLENS » 2011.11.08 02:44

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

POFIGISST » 2011.11.08 02:49

TLENS написал:

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

пока отключу автомодерацию,днем еще подумаю на этой темкой,а то ща тоже уже засыпаю))

Gemorroj » 2011.11.08 11:06

а тебе там вообще регулярка не нужна. проверяй соответствие через stripos

POFIGISST » 2011.11.08 13:57

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
case 'auto_moderacia':
$findme = 'mastop.ru';
$platform_isset = mysql_query("SELECT * FROM `".$prefix."sait` WHERE `id` = '".$id."' AND `id_user` = '".$user_data['id']."' LIMIT 1");
$us = mysql_fetch_array($platform_isset);
$mystring1 = file_get_contents('http://'.$us['url']);
 
$pos1 = stripos($mystring1, $findme);
if ($pos1 === false) {
echo "Не нашел";
}
 
 
if ($pos1 !== false) {
echo "Нашел ";
}

написал вот так для проверки,пока без базы,чтоб посмотреть какое сообщение выведет, и показало только что ошибка:D
Добавлено спустя   5 минут  23 секунды:
Warning: Unexpected character in input: ''' (ASCII=39) state=1   такую ошибку вообще первый раз вижу:0

DarkRiDDeR » 2011.11.08 14:18

С кодировкой что-то наверно

POFIGISST » 2011.11.08 14:19

DarkRiDDeR написал:

С кодировкой что-то наверно

не знаю,но все равно код не верный,сейчас переделывать его буду,внимательнее вникну в него))

DarkRiDDeR » 2011.11.08 14:22

Да ты в file_get_contents адрес введи вручную, если ошибки нет, то точно с MySQL связано
Добавлено спустя   2 минуты  16 секунд:

POFIGISST написал:

if ($pos1 === false) {
echo "Не нашел";
}


if ($pos1 !== false) {
echo "Нашел ";
}

не проще ли

Код:

1
2
3
4
5
if ($pos1 === false) {
echo "Не нашел";
} else{
echo "Нашел ";
}
POFIGISST » 2011.11.08 14:27

DarkRiDDeR
ввел,все равно ошибка,код наверн не правильный,я по примеру смотрел,так и написал как в примере,но где то ошибку допустил))

DarkRiDDeR » 2011.11.08 14:31

Текс загружаемой странице возможно в другой кодировке

POFIGISST » 2011.11.08 14:33

DarkRiDDeR написал:

Текс загружаемой странице возможно в другой кодировке

так там берет код загружаемой страницу,его берет нормально,вчера проверял,и кодировка в той странице нормальная,я ищу только адрес сайта,а он на английском,думаю что не  с кодировкой проблема)

DarkRiDDeR » 2011.11.08 14:41

Неожиданный символ на входе:'''(ASCII = 39 - это перевод

POFIGISST » 2011.11.08 14:54

сделал пока вот так

Код:

1
2
3
4
5
6
7
8
9
10
11
case 'auto_moderacia':
 
$findme = 'mastop.ru';
$mystring1 = file_get_contents('http://masteram.us');
$pos1 = stripos($mystring1, $findme);
if ($pos1 === false) {
echo "Не нашел";
} else{
echo "Нашел ";
 
}

если в переменную $mystring1 засунуть адрес мастоп.ру ,то пишет что найдена строка,а я вот для проверки всунул туда мастерам.ус и вывело сообщение,что строка не найдена)

Gemorroj » 2011.11.08 14:58

смотри что в $mystring1
возможно, отдается не то, что ты ожидаешь.

POFIGISST » 2011.11.08 15:11

Gemorroj написал:

смотри что в $mystring1
возможно, отдается не то, что ты ожидаешь.

если ставлю вот так echo $mystring1; то выводит нормально ту страницу которая в переменной,а если вот так echo highlight_string($mystring1); то выводит исходный код страницы)  если вот так echo $mystring1; то оно тоже должно выводить полностью исходный код? или оно все нормально выводит?

TLENS » 2011.11.08 15:31

Highlight я тебе дал просто для тестов он переобразовует всякие кавычки ампресанты и прочее в в тип &gt; &amp; и т.д. Блин ну не леничь почитай мануал про функцию. Неужели это так трудно?

POFIGISST » 2011.11.08 15:45

вот так

Код:

1
2
3
4
5
6
7
8
9
10
11
12
case 'auto_moderacia':
$platform_isset = mysql_query("SELECT * FROM `".$prefix."sait` WHERE `id` = '".$id."' AND `id_user` = '".$user_data['id']."' LIMIT 1");
$us = mysql_fetch_array($platform_isset);
$findme = 'mastop.ru';
$mystring1=file_get_contents('http://'.$us['url']);
$pos1 = stripos($mystring1, $findme);
if ($pos1 === false) {
echo "Не нашел";
} else{
echo "Нашел ";
 
}

проверка работает,теперь осталось только сделать запрос в базу,чтоб если находило код счетчика,то модерировало)

TLENS » 2011.11.08 15:47

а там же был какой то запрос

POFIGISST » 2011.11.08 15:49

TLENS написал:

а там же был какой то запрос

все,уже все сделал,всунул запрос,и теперь работает,вот код

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
case 'auto_moderacia':
$platform_isset = mysql_query("SELECT * FROM `".$prefix."sait` WHERE `id` = '".$id."' AND `id_user` = '".$user_data['id']."' LIMIT 1");
$us = mysql_fetch_array($platform_isset);
$findme = 'mastop.ru';
$mystring1=file_get_contents('http://'.$us['url']);
$pos1 = stripos($mystring1, $findme);
if ($pos1 === false) {
echo "Не нашел";
} else{
$up = mysql_query("UPDATE `".$prefix."sait` SET `status` = '1' WHERE `id` = '".$id."'");
echo "Нашел ";
 
}

Добавлено спустя   7 минут  42 секунды:
вместо stripos,поставил stristr ,чтоб чувствителен к регистру небыл)

Gemorroj » 2011.11.08 17:09

POFIGISST написал:

вместо stripos,поставил stristr ,чтоб чувствителен к регистру небыл)

stripos и так не чувствителен к регистру. к регистру чувствителен strpos

tipsun » 2011.11.08 17:31

POFIGISST,
Описание stristr()
Возвращает подстроку строки haystack начиная с первого вхождения needle до конца строки.
Эта функция не учитывает регистр.
Если подстрока needle не найдена, stristr() возвращает FALSE.
Если needle не является строкой, он приводится к целому и трактуется как код символа.

Код:

1
span style="color: #0000BB"><?php$email = 'USER@EXAMPLE.com';$domain = stristr($email, 'e');echo $domain; // выводит ER@EXAMPLE.com?>

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

Gemorroj » 2011.11.08 17:38

где вы маны читаете??? читайте на оф сайте!

tipsun » 2011.11.08 17:42

Я на php.su иногда читаю. Английский плохо знаю. И переводчик не по "человечески" переводит.
Добавлено спустя   3 минуты  2 секунды:
Ох еба, в натуре не сравнить. На офф все возможности описаны.

POFIGISST » 2011.11.08 18:37

Бля,чет я ща сам не пойму где вычитал про регистр((
Добавлено спустя   1 минуту  30 секунд:

tipsun написал:

Я на php.su иногда читаю. Английский плохо знаю. И переводчик не по "человечески" переводит.
Добавлено спустя   3 минуты  2 секунды:
Ох еба, в натуре не сравнить. На офф все возможности описаны.

в адресе заменяй en на ru ,примерно вот так
http://www.php.net/manual/ru/function.stristr.php и будет счастье на русском)

TLENS » 2011.11.08 19:13

Немного почистил потому что это не аська.
Для Не учитывания регистра используй в регулярке модификатор i

tipsun » 2011.11.08 19:14

POFIGISST написал:

Бля,чет я ща сам не пойму где вычитал про регистр((
Добавлено спустя   1 минуту  30 секунд:

tipsun написал:

Я на php.su иногда читаю. Английский плохо знаю. И переводчик не по "человечески" переводит.
Добавлено спустя   3 минуты  2 секунды:
Ох еба, в натуре не сравнить. На офф все возможности описаны.

в адресе заменяй en на ru ,примерно вот так
http://www.php.net/manual/ru/function.stristr.php и будет счастье на русском)

Неа. Вот почему:
PHP.NET-EN: http://www.php.net/manual/en/function.stristr.php
PHP.NET-RU: http://www.php.net/manual/ru/function.stristr.php
| |
PHP.SU: www.php.su/functions/?stristr

Сравни полноту информации. =)

POFIGISST » 2011.11.08 19:35

tipsun
ну если я английский не знаю,то хоть там 50 текстов на одной странице будет,я всеравно нифига там не пойму:D

tipsun » 2011.11.08 20:30

Если указать в классе

Код:

1
span style="color: #0000BB"><?php class myClass { public static $myVar; } ?>

То это только чтоб она была доступна так self::$myVar в классе?
Она не сохраняется при перезагрузке страницы же?

TLENS » 2011.11.08 21:12

tipsun написал:

Если указать в классе

Код:

1
span style="color: #0000BB"><?php class myClass { public static $myVar; } ?>

То это только чтоб она была доступна так self::$myVar в классе?
Она не сохраняется при перезагрузке страницы же?

В ASP сохраняется, а в php нет

tipsun » 2011.11.08 21:36

TLENS, ок. Спс.

tipsun » 2011.11.08 22:09

Для чего делают так, указывают типы при создании функции?

Код:

1
span style="color: #0000BB"><?phpfunction test(integer $var1, bool $var2) { /**/ }?>

Можно ссылку, а то не могу найти.

TLENS » 2011.11.08 22:25

Это взято с низкоуровневого программирования.
Можно просто типо var i стековая или object obj для ссылочной
Но если введешь func..(integer var)
то она  не сможет принять например string или другой тип и компилятор даст ошибку.

tipsun » 2011.11.08 22:38

TLENS, ну вроде более-менее понятно. Спс. :)

TLENS » 2011.11.08 22:45

Блин я не сплю другие сутки хочу назад день на ночь вернуть.
С сакрытыми глазапи пишу там немного ошибок исправил.
На счет php http://php.su/learnphp/datatypes/

Gemorroj » 2011.11.08 22:54

указание типов в php 5.4 введут. нужно это чтобы точно знать какого типа данные у нас имеются.
в php ничто не сохраняется между перезагрузкой страницы. сессии - это по сути тоже "костыль" чтоли в плане сохранения состояния)

TLENS » 2011.11.08 22:56

Gemorroj
Паш а ты как с сишарпом разобрался?

Gemorroj » 2011.11.08 23:20

забил) нет задач в принципе для кодинга на десктопе, поэтому незачем. ввязался в несколько оупенсорсных проектов на javascript, поэтому времени еще и на изучение C# мало. да и состояние не то сейчас.

TLENS » 2011.11.08 23:24

Ясн.

Gemorroj » 2011.11.08 23:26

...
Добавлено спустя    35 секунд:
охуенно, хули)

TLENS » 2011.11.08 23:28

А что на счет состояние? я не понимаю

Gemorroj » 2011.11.08 23:32

ай, бред) у меня такое бывает. в блогах читай

TLENS » 2011.11.08 23:36

А я кстати наивный начал C# учить я то думал и другие языки так легко будут даватся.
И пошел за ассемблером и теперь понимаю зачем был придуман Си))

Gemorroj » 2011.11.08 23:38

мм, ну современный ассемблер тоже крут. Просто обучение идет с основ, а на практике потом проще. Я в основном с FASM знакомился, там куча уже готовых процедур написано. остается только использовать. экзамплы, по крайней мере, внушают.

TLENS » 2011.11.08 23:47

А у меня все понимаю но как говорится сказать не могу.
При практике уже строк на 500 - 1000 начинаю крупно терятся.
Еще толкового отладчика не найду да и вычисление это, новое все, не успевает усвоится в голове.
Добавлено спустя   1 минуту  37 секунд:
На masm32 начинаю.
Добавлено спустя   7 минут  48 секунд:
В общем позже обязательно изучу его. Хорошая штука. Меня больше интересуют микро контролеры я с 8 лет в проводах рос.

POFIGISST » 2011.11.09 00:33

скажите,а вот этот код

Код:

1
span style="color: #0000BB"><?phpsession_start();$width=75;$height=20;$im=imagecreatetruecolor($width, $height);imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255));$str=NULL;for($i=0; $i<5; $i++) { $y=rand(2, 5); $x+=rand(8, 14); $str.=rand(1, 9); imagestring($im, rand(1, 10), $x, $y, $str[$i], imagecolorallocate($im, rand(90, 150), rand(90, 150), rand(90, 150))); }$_SESSION['kod'] = $str;header('Content-type: image/png');imagepng($im);imagedestroy($im);?>

отвечает за то,как на счетчиках расположены цифры хитов и хостов?

Gemorroj » 2011.11.09 00:48

он за полную отрисовку картинки отвечает.

POFIGISST » 2011.11.09 00:52

блин,а мне над найти где  только за цифры отвечает,хочу сделать чтоб хосты и хиты шли в столбик,а не горизонтально(

DarkRiDDeR » 2011.11.09 15:41

Так напиши, не вижу в этом уж такой большой проблемы

TLENS » 2011.11.09 15:56

POFIGISST
Тему надо надо создать новую. Засрали эту тему. Надо переименовать помоги Пофигисту и прикрепить. :)
Лан Дима шучу.
ps. Надо тему создать со статьей как пользоваться гуглом.
Опять шучу.
Ты Дима задавай все свои вопросы, и просьбы мы все тебе поможем и напишем любой скрипт какой ты захочешь, раз уж такой уж Лентяй что лежа на деване даже ВИДЕО КУРСЫ посмотреть лень.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Мм да я в семье был самый ленивый настолько ленивый что все родственники меня поддергивали. Но увы не настолько!
Ты даже меня переплюнул.
Обижайся не обижайся но ты конкретный Лентяй.
Добавлено спустя   2 минуты :
Но ты не унывай все это лечится.

tipsun » 2011.11.09 16:43

POFIGISST, просто пользуйся этим правилом: прежде чем писать на форум, забей в гугл пару запросов.
Добавлено спустя   7 минут  17 секунд:

POFIGISST написал:

скажите,а вот этот код

Код:

1
span style="color: #0000BB"><?phpsession_start();$width=75;$height=20;$im=imagecreatetruecolor($width, $height);imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255));$str=NULL;for($i=0; $i<5; $i++) { $y=rand(2, 5); $x+=rand(8, 14); $str.=rand(1, 9); imagestring($im, rand(1, 10), $x, $y, $str[$i], imagecolorallocate($im, rand(90, 150), rand(90, 150), rand(90, 150))); }$_SESSION['kod'] = $str;header('Content-type: image/png');imagepng($im);imagedestroy($im);?>

отвечает за то,как на счетчиках расположены цифры хитов и хостов?

Отвечает за captcha. Мне кажется.

tipsun » 2011.11.09 17:49

POFIGISST, как видно из твоего поста за вид счетчика отвечает файл: image.php в корне скрипта. Скорее всего.

Nu3oN » 2011.11.13 23:00

Гемор, у тебя нет обработчика для set_error_handler() уже написанного?
а то лень самому все условия подберать...

Gemorroj » 2011.11.13 23:09

неа. в гменеджере что-то вроде есть, но мне не оч нравится

POFIGISST » 2011.11.15 00:54

блин,что я делаю не так? у меня идет страница вот такая

Код:

1
span style="color: #0000BB"><?phpheader('Content-type: text/html; charset=utf-8');echo '<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru"><head><title>Порнушка для всех</title><meta name="description" content="wap порно, шафка, шульц, нси, sieg heil, сиськи, грудь, угар,Частное, разврат, эротика, секс, бесплатно, халявка, сотовый, мобильный, качай, скачать, клипы, 2011 порно новинки, новинки, хиты, порно, все бесплатно" /><link rel="stylesheet" href="http://dimax.in/style.css" type="text/css" /><link rel="shortcut icon" href="favicon.ico" /></head><body><div class="head"><img src="http://dimax.in/video/logo.png"/></div>';echo'<div class="head"><img src="http://dimax.in/video/reklama.gif" alt="rek"/><br/></div>';echo'<div class="block">';echo'Сайт содержит материалы <strong>порнографического</strong> характера.<br/>';echo'Убедительная просьба - если вам еще не исполнилось 18 лет покиньте данный сайт!<br/>';echo'<a href="http://dimax.in/ind.php">Продолжить просмотр?</a><br/></div>';echo '<div class="foot">include "video/foot.php";</div></body></html>';?>

но инклюд внизу не работает вот этот include "video/foot.php"; на странице его выводит как текст вот так include "video/foot.php"; в чем может быть причина того,что не инклюдит? по разному уже пробовал,но все равно выводит просто текст(

TLENS » 2011.11.15 00:56

echo '<div class="foot">';

include "video/foot.php";
echo '</div></body></html>';

POFIGISST » 2011.11.15 01:00

TLENS
спасибо,работает,а то заипался на каждой странице счетчики прописывать(

Gemorroj » 2011.11.15 10:56

POFIGISST, подсветка ни о чем не говорит?

POFIGISST » 2011.11.15 10:59

Gemorroj написал:

POFIGISST, подсветка ни о чем не говорит?

честно сказать нет =(

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

TLENS » 2011.11.15 13:47

POFIGISST написал:

Gemorroj написал:

POFIGISST, подсветка ни о чем не говорит?

честно сказать нет =(

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

В ГМенеджере есть встроенный валидатор и он покажет тебе все буквально в один клик

TLENS » 2011.11.15 14:04

POFIGISST Чета мне кажется что ты создаешь копию моего сайта.
Брось это а то я обижусь

POFIGISST » 2011.11.24 01:10

Пишу грабб порно видео,и вот возникла проблемка,когда тыкаю на ссыль "Скачать" мне выдает 404 ошибку,адрес ссыли идет примерно такой http://мой сайт.ру/d/?fid=3488,а нужно сделать чтоб в ссыле вместо "мой сайт.ру" был адрес kiss.siza.us , как мне нужно написать код,чтоб так получалось?

TLENS » 2011.11.24 01:12

Логично было бы заменить в исходном коде ссылку

POFIGISST » 2011.11.24 01:20

TLENS
мне над чтоб все остальные ссыли шли с моего сайта,только чтоб адрес ссылки "Скачать" был полностью настоящий,то есть тот откуда я тырю файлы(

TLENS » 2011.11.24 01:20

Ну так замени

POFIGISST » 2011.11.24 01:23

TLENS написал:

Ну так замени

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

TLENS » 2011.11.24 01:24

Извини ничем помочь не могу. Я не провидец

POFIGISST » 2011.11.24 01:32

TLENS
пока не сделаю спать не пойду,самому интересно сделать:D

TLENS » 2011.11.24 01:46

Дай ссыль на установленный скрипт. впадло ставить на хост

POFIGISST » 2011.11.24 01:46

юзайте кому надо =)  я спать пойду =)
Добавлено спустя   1 минуту  2 секунды:

TLENS написал:

Дай ссыль на установленный скрипт. впадло ставить на хост

у мя он у самого на денвере,ща поставлю куда нить =D

TLENS » 2011.11.24 01:48

Я в душ. Жди
Добавлено спустя   1 минуту  18 секунд:
Можешь не ставить дай просто исходный html код

POFIGISST » 2011.11.24 01:55

TLENS
я уже поставил,ток диз еще не подогнал,вот мое г http://xporno.in/vid/ )

TLENS » 2011.11.24 02:01

у меня постоянный таймаут дай исходник

POFIGISST » 2011.11.24 02:04

TLENS написал:

у меня постоянный таймаут дай исходник

вот http://kiss.siza.us/ исходник,откуда граблю файлы)

TLENS » 2011.11.24 02:05

Корочь я не могу так там исходник там код какая. Давай уже завтра проснешся и сам.

POFIGISST » 2011.11.24 02:07

TLENS написал:

Корочь я не могу так там исходник там код какая. Давай уже завтра проснешся и сам.

оки,хорошо,под вечер уже мозг немного тупит,днем посмотрю свежим глазом)))

TLENS » 2011.11.24 02:12

$vid = str_replace('<a href="d/?fid=4836">Скачать</a>', '<a href="http://kiss.siza.us/d/?fid=4836">Скачать</a>', $vid);

POFIGISST » 2011.11.24 02:19

TLENS
так тоже не изменился адрес,забей Дим,я днем сам сделаю,за одно и потренируюсь граббы писать))

TLENS » 2011.11.24 02:20

Как это не изменился как изменился. Ставь перед echo

POFIGISST » 2011.11.24 02:28

TLENS
извиняюсь,беру свои слова обратно,адрес изменился,просто не в том файле посмотрел:(

POFIGISST » 2011.11.24 21:13

Скажите а есть такая функция на пыхе,которая накладывает копирайт на видео,ну например на первых 15 кадров видео?)

TLENS » 2011.11.24 21:14

На пыхе нет.
Добавлено спустя   1 минуту  1 секунду:
Есть команда для ffmpeg. Но она долго работает нужен проц хороший

POFIGISST » 2011.11.24 21:17

TLENS
спасибо,буду знать,поищу другое альтернативное решение задачи с копирайтом :)

TLENS » 2011.11.24 21:19

Возьми себе vds/vps они не дорого стоят видел и по 3$. За то сможешь установить себе любую программу и обращатся к ним с php скриптов.

POFIGISST » 2011.11.24 21:21

TLENS написал:

Возьми себе vds/vps они не дорого стоят видел и по 3$. За то сможешь установить себе любую программу и обращатся к ним с php скриптов.

это мысль,ток за 3$ хорошего нету ничего,ща инет поюзаю,посмотрю цены и характеристики))

TLENS » 2011.11.24 21:24

colobridge.net советую. кстати если решишся стукнишь я тебе дам промокод.
там и isp бесплатно

Newmastja » 2011.11.29 23:46

Привет. Скажите пожалоста как с сайта php показать число онлайна людей на сайте вен.ру с исполь. Javascript

TLENS » 2011.11.29 23:48

вопрос по точнее можно. Что именно тебе сказать?

POFIGISST » 2011.11.30 01:48

TLENS
он наверн хочет сделать примерно так,чтоб на венике показывало сколько людей сейчас на  сайте "spaces.ru(любой сайт на пыхе)"  я так понял его вопрос)

DarkRiDDeR » 2011.11.30 03:15

Да, да, есть специальные сервисы, надо поискать

TLENS » 2011.11.30 03:51

POFIGISST написал:

TLENS
он наверн хочет сделать примерно так,чтоб на венике показывало сколько людей сейчас на  сайте "spaces.ru(любой сайт на пыхе)"  я так понял его вопрос)

Бля я что тупой. Объясни тогда ты мне что надо ему сказать! Я жду.

POFIGISST » 2011.11.30 03:58

TLENS написал:

POFIGISST написал:

TLENS
он наверн хочет сделать примерно так,чтоб на венике показывало сколько людей сейчас на  сайте "spaces.ru(любой сайт на пыхе)"  я так понял его вопрос)

Бля я что тупой. Объясни тогда ты мне что надо ему сказать! Я жду.

скажи ему если знаешь,как такую хрень делать через Javascript )

TLENS » 2011.11.30 03:59

Мда... Я то знаю дак что ему целый скрипт писать?

POFIGISST » 2011.11.30 04:19

TLENS
я сомневаюсь,что он тут еще появится=)

tipsun » 2011.11.30 15:18

Newmastja написал:

Привет. Скажите пожалоста как с сайта php показать число онлайна людей на сайте вен.ру с исполь. Javascript

Ахтунг! Я не силен в JS и болен на голову...
Почти так же, я думаю, как:

Код:

1
<img src="http://serv.ru/ololo/script/image.php?id=100500" alt="onLine" />

Только надо сделать, чтоб php файл на сервере подсчета отправлял не картинку, а GET/POST данные и ява их принимать и отображать.

Nu3oN » 2011.11.30 21:34

Можно ли как то в MySQL при создании новой строки указать в одном из полей будующий id ?
А то два запроса подряд вообще не радует )=
А то на данный момент есть такое:

Код:

1
span style="color: #0000BB"><?php$strDir = '1/2/3/4/5/';/* * Создаем новую строку. */DB :: $dbh -> query("INSERT INTO %category% (`cat_title`) VALUES (?);", array($title));/* * Узнаем ID только что добавленой строки. */$intLastID = DB :: $dbh -> lastInsertId();/* * Указываем путь к папке. */$strDir = $strDir . $intLastID . '/';/* * Обновляем только созданую строку. */DB :: $dbh -> query("UPDATE %category% SET `cat_path` = ? WHERE `cat_id` = ? LIMIT 1;", array($strDir, $intLastID));

Хотелось бы что-то типа такого:

Код:

1
SQL -> INSERT INTO `table` (`cat_title`, `cat_path`) VALUES ('value', LAST_INSERT_ID());

З.ы LAST_INSERT_ID() и вьюхи не предлогать :-D

Gemorroj » 2011.12.01 10:55

ну можно подзапросом select сделать на последний id, но это бред.
оставляй как есть. если используется innodb, то оберни еще в транзакцию.

Nu3oN » 2011.12.01 11:59

Плохо...

TLENS » 2011.12.01 15:19

Nu3oN написал:

Плохо...

Бедный, вчера целый вечер ломал голову))

Nu3oN » 2011.12.01 19:37

TLENS написал:

Nu3oN написал:

Плохо...

Бедный, вчера целый вечер ломал голову))

Осталось только пойти повеситься  =D

POFIGISST » 2011.12.07 23:54

Помогите пожалуйста написать запрос на смену пароля,в базе пароль идет в мд5,я пишу вот такой запрос

Код:

1
2
3
4
5
6
7
8
9
case "smpass":
echo '<b>Смена пароля</b><br/>';
echo'<input name="password" type="text" value="'.$user['password'].'"/><br/>';
echo '<a href="editanketa.php?act=ssm">Сменить</a><br/>';//подтверждаем...
break;
case "ssm":
mysql_query("UPDATE `user` SET `password` WHERE id=".$user['id']."");
echo 'Вы успешно сменили пароль<br />';
break;

но какую то я ошибку делаю,и сам не пойму какую( пароль который вводят в поле должен заноситься в переменную $user['password'] , потом эта переменная должна шифровать тот пасс который юзер ввел в мд5 и результат (пароль в мд5) должен уже идти в базу в поле password тому юзеру у которого ид равен иду того кто меняет пароль(

Gemorroj » 2011.12.08 00:11

Код:

1
span style="color: #0000BB"><?phpswitch ($_GET['act']) { case 'smpass': echo '<b>Смена пароля</b><br/>'; echo '<input name="password" type="text" value=""/><br/>'; echo '<a href="editanketa.php?act=ssm">Сменить</a><br/>';//подтверждаем... break; case 'ssm': if (mysql_query("UPDATE `user` SET `password` = " . md5($_POST['password']) . " WHERE id=" . $user['id'])) { echo 'Вы успешно сменили пароль<br />'; } break;}
POFIGISST » 2011.12.08 00:21

Gemorroj
спасибо огромное Паш))

POFIGISST » 2011.12.08 01:01

Не заносит в базу новый пароль,я поставил else чтоб если не заносит в базу,то выводило сообщение о том что пароль не сменен, и вывод  md5($_POST['password']) сделал,чтоб было видно значение которое в ней содержится,в ней идет совсем левый хеш "d41d8cd98f00b204e9800998ecf8427e" я рашивровал его и вот какой текст там "<No password>" хотя я ввожу совсем другие пассы((

POFIGISST » 2011.12.08 02:08

Написал немного по другому код,добавил проверку старого пароля при смене и  подтверждение нового пароля,вродь гуд работает)

Gemorroj » 2011.12.08 08:24

POFIGISST написал:

я рашивровал его

крутой чел)

POFIGISST » 2011.12.08 23:15

Gemorroj написал:

крутой чел)

http://crackfor.me/index.php

POFIGISST » 2011.12.08 23:37

бля,опять у меня криворукость =(  ночью что-то не так замутил с проверкой старого пароля на соответствие с тем паролем который в базе,и теперь когда пишу правильный пароль,проверка не срабатывает,пишет что старый пароль не верный,посмотрите пожалуйста мой код,и подскажите в чем моя ошибка =(

вот так я наговнокодил

Код:

1
span style="color: #0000BB"><?php case 'smpass':echo '<b>Смена пароля</b><br/>';echo '<form action="editanketa.php?act=ssm" method="post"><input name="old_password" type="password" value=""/><br/><input name="new_password" type="password" value=""/><br/><input name="confirm_new_password" type="password" value=""/><br/><input type="submit" value="Сменить пароль"/></form>';break;case 'ssm':if(mysql_query("SELECT * FROM `users` WHERE id ='" . $user['id']."', `password` = " . md5($_POST['old_password']) )){if(!empty($_POST['new_password']) && $_POST['new_password']==$_POST['confirm_new_password']){if(mysql_query("UPDATE `users` SET `password` = " . md5(mysql_real_escape_string($_POST['password'])) . " WHERE id =" . $user['id'])){echo 'Вы успешно сменили пароль<br />';}else{echo 'Пароль сменить не удалось<br />'.mysql_error().'<br/>';}}elseecho 'Пароль сменить не удалось<br />Не заполнен новый пароль или неправильное его подтверждение<br/>';}elseecho 'Пароль сменить не удалось<br />Старый пароль указан неправильно!<br/>';break;
POFIGISST » 2011.12.09 01:36

разобрался уже со сменой,вотЬ мой говнокодЬ

Код:

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
case 'smpass':
echo '<b>Смена пароля</b><br/>';
echo '
<form action="editanketa.php?act=ssm" method="post">
Старый пароль:<br/>
<input name="old_password" type="password" value=""/><br/>
Новый пароль:<br/>
<input name="new_password" type="password" value=""/><br/>
Подтвердите новый пароль:<br/>
<input name="confirm_new_password" type="password" value=""/><br/>
<input type="submit" value="Сменить пароль"/>
</form>
';
 
break;
 
case 'ssm':
if(mysql_query("SELECT * FROM `users` WHERE `id` ='" . $user['id']."' AND `password` = '" . md5($_POST['old_password'])."' " ))
{
if(!empty($_POST['new_password']) && $_POST['new_password']==$_POST['confirm_new_password'])
{
if(mysql_query("UPDATE `users` SET `password` = '" . protect(md5($_POST['new_password'])) . "' WHERE `id` ='" . $user['id']."' "))
{
echo 'Вы успешно сменили пароль<br />';
}
else
{
echo 'Пароль сменить не удалось2<br />'.mysql_error().'<br/>';
}
 
}
else
echo 'Пароль сменить не удалось3<br />Не заполнен новый пароль или неправильное его подтверждение<br/>'.mysql_error().'<br/>';
}
else
echo 'Пароль сменить не удалось4<br />Старый пароль указан неправильно!<br/>'.mysql_error().'<br/>';
 
break;

напишите какие есть замечания по коду))

DarkRiDDeR » 2011.12.09 09:58

лучше сначало проверить это
if(!empty($_POST['new_password']) && $_POST['new_password']==$_POST['confirm_new_password']))
И проверить лучше на существование все данные формы if(isset($_POST['new_password'], $_POST['confirm_new_password'], $_POST['new_password']) && $_POST['new_password']==$_POST['confirm_new_password'])).

Я бы ещё на всякий случай обрабатывал md5($_POST['old_password']) с помощью mysql_real_escape_string, хотя это скорее даже лишнее, но я бы сделал так

Gemorroj » 2011.12.09 10:50

POFIGISST написал:

Gemorroj написал:

крутой чел)

http://crackfor.me/index.php

ну так тупо перебор по заданным хэшам - не интересно)

TLENS » 2011.12.09 14:26

Gemorroj
У меня когда то была идея закупить серьезное оборудование чтобы перебрать в базы. Для обыгрывания казино.
Я по высчетам дошел до квинтилиона, далее понял что достаточно бредить.
Если и закуплю данное оборудование надо минимум пару лет для создания базы хешов. Да и в казино нет столько денег что бы окупить затраты на оборудование.

TLENS » 2011.12.09 15:09

Только что реально посчситал.
Вот дурная идея надо хешев корочь я даже не знаю как назвать в общем 70в32 ст.

DarkRiDDeR » 2011.12.09 17:24

Ну собирать хэши - дурнаю идея, а вот раскодировать. md5 - это по сути своеобразное кодирование данных. А что имело определённую сущность, можно привести к первообразному.

Gemorroj » 2011.12.09 17:25

DarkRiDDeR веперед) вот только приведение у тебя вся жизнь уйдет)

DarkRiDDeR » 2011.12.09 17:28

Я и не собирался вперёд. Я говорю, что можно, но это не значит, что возможно :D

POFIGISST » 2011.12.10 22:40

Gemorroj написал:

ну так тупо перебор по заданным хэшам - не интересно)

а как тогда делать? самому расшифровывать? если не ошибаюсь,то точного алгоритма мд5 нету(
Добавлено спустя   6 минут  10 секунд:
вот так сделал на быструю руку,а то было уже 4 часа утра когда доделывал ( как убивать  Cookies я х.з. поэтому сделал вот так

Код:

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
case 'smpass':
echo '<b>Смена пароля</b><br/>';
echo '
<form action="editanketa.php?act=ssm" method="post">
Старый пароль:<br/>
<input name="old_password" type="password" value=""/><br/>
Новый пароль:<br/>
<input name="new_password" type="password" value=""/><br/>
Подтвердите новый пароль:<br/>
<input name="confirm_new_password" type="password" value=""/><br/>
<input type="submit" value="Сменить пароль"/>
</form>
';
 
break;
 
case 'ssm':
if(mysql_query("SELECT * FROM `users` WHERE `id` ='" . $user['id']."' AND `password` = '" . md5($_POST['old_password'])."' " ))
{
if(!empty($_POST['new_password']) && $_POST['new_password']==$_POST['confirm_new_password'])
{
if(mysql_query("UPDATE `users` SET `password` = '" . protect(md5($_POST['new_password'])) . "' WHERE `id` ='" . $user['id']."' "))
{
echo 'Вы успешно сменили пароль<br />';
header("Location: ./sign.php?act=exit ");
exit();
 
}
else
{
echo 'Пароль сменить не удалось2<br />'.mysql_error().'<br/>';
}
 
}
else
echo 'Пароль сменить не удалось3<br />Не заполнен новый пароль или неправильное его подтверждение<br/>'.mysql_error().'<br/>';
}
else
echo 'Пароль сменить не удалось4<br />Старый пароль указан неправильно!<br/>'.mysql_error().'<br/>';
 
break;

при смене пароля cookies не удалялись,поэтому я сделал редирект на страницу выхода,там они убиваются,это каешн ужасный г код((

tipsun » 2011.12.11 19:09

POFIGISST написал:

как убивать  Cookies я х.з.

Ну в мануале почитай. :)
- - - -
Поздно, я за тебя прочитал :D

Код:

1
span style="color: #0000BB"><?phpsetcookie('cookieName', '', $_SERVER['REQUEST_TIME'] - 3600);//Задаешь имя, тут ничего, время за счет которого кука будет считаться истекшей; - браузер это дело сразу удаляет.?>
POFIGISST » 2011.12.11 21:31

tipsun написал:

POFIGISST написал:

как убивать  Cookies я х.з.

Ну в мануале почитай. :)
- - - -
Поздно, я за тебя прочитал :D

Код:

1
span style="color: #0000BB"><?phpsetcookie('cookieName', '', $_SERVER['REQUEST_TIME'] - 3600);//Задаешь имя, тут ничего, время за счет которого кука будет считаться истекшей; - браузер это дело сразу удаляет.?>

если так сделать,то нужно будет каждый час заново авторизововаться((

tipsun » 2011.12.11 21:35

POFIGISST написал:

если так сделать,то нужно будет каждый час заново авторизововаться((

Почему? Не, это удаляет куку, а не устанавливает её. :)

POFIGISST » 2011.12.12 00:40

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

вот он весь

Код:

1
lt;?function make_screen_nokia($file_them,$file_image){include_once H.'sys/inc/zip.php';$xml=false;$scr_file=false;$zip=new PclZip($file_them);$content = $zip->extract(PCLZIP_OPT_BY_NAME,'theme_descriptor.xml',PCLZIP_OPT_EXTRACT_AS_STRING);$xml=@$content[0]['content'];if (!$xml)return 'Невозможно открыть дескриптор темы';//echo output_text($xml);if (preg_match('#main_display_graphics="(.*?)"#si', $xml, $res))$scr_file=$res[1];elseif (preg_match('#main_default_bg="(.*?)"#si', $xml, $res))$scr_file=$res[1];if (!$scr_file)return 'Скриншот не обнаружен';$string_img = $zip->extract(PCLZIP_OPT_BY_NAME, $scr_file,PCLZIP_OPT_EXTRACT_AS_STRING);if (!$scr=@imagecreatefromstring(@$string_img[0]['content']))return 'Ошибка файла изображения';unset($string_img);if (@imagejpeg($scr, $file_image, 100)){imagedestroy($scr);return 'Скриншот успешно извлечен';}else return 'Ошибка сохранения скриншота';}?>
Gemorroj » 2011.12.12 00:50

есть такая штука - отладка называется.
берешь и ставишь по коду запись в лог ключевых переменных.
тут как минимум видно $content, $xml, $res, $string_img
и на основании того, что в них находится находишь где происходит сбой.

POFIGISST » 2011.12.12 00:54

Gemorroj написал:

есть такая штука - отладка называется.
берешь и ставишь по коду запись в лог ключевых переменных.
тут как минимум видно $content, $xml, $res, $string_img
и на основании того, что в них находится находишь где происходит сбой.

благодарю за совет,завтра вечером буду искать где сбой ;)

Nu3oN » 2011.12.15 21:33

можно ли перевести ini_get('upload_max_filesize') в байты?
Добавлено спустя   1 минуту  19 секунд:
необходимо для примерно такого условия

Код:

1
span style="color: #0000BB"><?phpif ($_FILES['add']['screen'][2]['size'] > ini_get('upload_max_filesize')) { // ошибка ёба!!!}
DarkRiDDeR » 2011.12.16 10:40

ini_get('upload_max_filesize') возвращает чаще в мегабайтах("2M"), следовательно надо определит, что если это мегабайты, то выковыриваем только цифры, потом их умножаем на 1024 и ещё - на 1024. Вот тебе и байты. Если другие значения, то и делаем малость по другому.

Gemorroj » 2011.12.16 11:52

Ну да, по последней букве смотреть надо.

Nu3oN » 2011.12.16 19:37

Я сделал уже иначе :-)
з.ы я и так знаю что он выдает, я надеялся что существует стандартная функция для такого случая :)

DarkRiDDeR » 2011.12.17 03:13

И как сделал?

Gemorroj » 2011.12.18 22:00

так как?)

Nu3oN » 2011.12.19 21:33

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

POFIGISST » 2011.12.23 08:59

Посоветуйте как сделать,у меня идет рейтинг в виде рисунка полоски,ну и чем больше рейтинг тем больше полоска закрашена,но она закрашивается только когда число рейтинга в базе положительное,а если отрицательное то полоска просто пустая,и вот задача,хочу сделать чтоб если рейтинг отрицательный,то полоска закрашивалась синим цветом,а если положительный то красным(как сейчас) ,в одном файле сам не знаю как это реализовать,чтоб определяло каким цветом её закрашивать,думаю сделать так,создать еще один такой файл который отвечает за рейтинг,только в нем поставить вместо красного цвета синий,а потом в анкете делать проверку на то,какое число в базе,если положительное,то запускать файл 1 с красным цветом,а если отрицательное число,то запускать файл 2,где синяя полоска,это конечно Г код,но по другому не знаю как сделать такую вещь(

Nu3oN » 2011.12.23 11:08

Экстрасенсов не наблюдал тут :)
давай код в студию!
З.ы помню тоже мучался с этой идеей, только я делал при отрицательном рейтинге, зарисовку в обратную сторону с другим цветом

POFIGISST » 2011.12.23 20:00

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

Код:

1
span style="color: #0000BB"><?php$rat = (int)$_GET['rat'];$limit = (int)$_GET['limit'];$rats = $rat;if ($rat >= 100) { $rats = 99; }if ($rat > 100) { $rat = 100; }if ($limit == "") { $limit = 50; }if ($limit > 100) { $limit = 100; } header("Content-type: image/gif"); $im = imageCreateFromGIF("grafic.gif"); //---------------пустой участок,после закрашеного идет-------------------------// $color = imagecolorallocate($im, 234, 237, 237); $color2 = imagecolorallocate($im, 227, 222, 222); $color3 = imagecolorallocate($im, 204, 200, 200); $color4 = imagecolorallocate($im, 185, 181, 181); $color5 = imagecolorallocate($im, 197, 195, 195); imagefilledrectangle ($im, 2, 1, 99, 2, $color); imagefilledrectangle ($im, 1, 3, 100, 4, $color2); imagefilledrectangle ($im, 1, 5, 100, 6, $color3); imagefilledrectangle ($im, 1, 7, 100, 8, $color4); imagefilledrectangle ($im, 2, 9, 99, 10, $color5); //----------------Закрашиваемая часть(синий,без градиента)----------------------------// $color = imagecolorallocate($im, 000, 000, 255); $color2 = imagecolorallocate($im, 000, 000, 255); $color3 = imagecolorallocate($im, 000, 000, 255); $color4 = imagecolorallocate($im, 000, 000, 255); $color5 = imagecolorallocate($im, 000, 000, 255); $color6 = imagecolorallocate($im, 0, 0, 0); if($rat > 0) { imagefilledrectangle ($im, 2, 1, $rats, 2, $color); imagefilledrectangle ($im, 1, 3, $rat, 4, $color2); imagefilledrectangle ($im, 1, 5, $rat, 6, $color3); imagefilledrectangle ($im, 1, 7, $rat, 8, $color4); imagefilledrectangle ($im, 2, 9, $rats, 10, $color5); } ImageString($im, 1, 78, 2, "$rat%", $color6); ImageGIF($im);?>

и прикрепляю к посту полоску рейтинга такая как у мя)
Добавлено спустя   6 минут  5 секунд:
Nu3oN
А у мя идет рейтинг начиная с самого начала картинки полоски рейтинга,получается что в обратную сторону при отрицательном значении не может идти,и вот решил сделать чтоб было разными цветами при положительном и отрицательным значением)

tipsun » 2011.12.23 20:17

За логичность не знаю, но так работает. Замени прежний кусок на этот.

Не, вот весь. =)

Код:

1
span style="color: #0000BB"><?php$rat = (int)$_GET['rat'];$limit = (int)$_GET['limit'];$rats = $rat;if ($rat >= 100) $rats = 99;if ($rat > 100) $rat = 100;if ($limit == "") $limit = 50;if ($limit > 100) $limit = 100;header('Content-type: image/gif');$im = imageCreateFromGIF('grafic.gif');//---------------пустой участок,после закрашеного идет-------------------------// if($rat < 0) { $color = imagecolorallocate($im, 255, 0, 0); $color2 = imagecolorallocate($im, 255, 0, 0); $color3 = imagecolorallocate($im, 255, 0, 0); $color4 = imagecolorallocate($im, 255, 0, 0); $color5 = imagecolorallocate($im, 255, 0, 0); imagefilledrectangle ($im, 2, 1, -$rats, 2, $color); imagefilledrectangle ($im, 1, 3, -$rat, 4, $color2); imagefilledrectangle ($im, 1, 5, -$rat, 6, $color3); imagefilledrectangle ($im, 1, 7, -$rat, 8, $color4); imagefilledrectangle ($im, 2, 9, -$rats, 10, $color5); }//----------------Закрашиваемая часть(синий,без градиента)----------------------------// if($rat > 0) { $color = imagecolorallocate($im, 0, 255, 0); $color2 = imagecolorallocate($im, 0, 255, 0); $color3 = imagecolorallocate($im, 0, 255, 0); $color4 = imagecolorallocate($im, 0, 255, 0); $color5 = imagecolorallocate($im, 0, 255, 0); imagefilledrectangle ($im, 2, 1, $rats, 2, $color); imagefilledrectangle ($im, 1, 3, $rat, 4, $color2); imagefilledrectangle ($im, 1, 5, $rat, 6, $color3); imagefilledrectangle ($im, 1, 7, $rat, 8, $color4); imagefilledrectangle ($im, 2, 9, $rats, 10, $color5); }$textColor = imagecolorallocate($im, 0, 0, 0);imageString($im, 1, 78, 2, "$rat%", $textColor);imageGIF($im);?>

Наоборот идет отрицательный рейтинг. [<==]

Код:

1
span style="color: #0000BB"><?php$rat = (int)$_GET['rat'];$limit = (int)$_GET['limit'];$rats = $rat;if ($rat >= 100) $rats = 99;if ($rat > 100) $rat = 100;if ($limit == "") $limit = 50;if ($limit > 100) $limit = 100;header('Content-type: image/gif');$im = imageCreateFromGIF('grafic.gif');//---------------пустой участок,после закрашеного идет-------------------------// if($rat < 0) { $color = imagecolorallocate($im, 255, 0, 0); $color2 = imagecolorallocate($im, 255, 0, 0); $color3 = imagecolorallocate($im, 255, 0, 0); $color4 = imagecolorallocate($im, 255, 0, 0); $color5 = imagecolorallocate($im, 255, 0, 0); imagefilledrectangle ($im, 102+$rats, 1, 99, 2, $color); imagefilledrectangle ($im, 101+$rat, 3, 100, 4, $color2); imagefilledrectangle ($im, 101+$rat, 5, 100, 6, $color3); imagefilledrectangle ($im, 101+$rat, 7, 100, 8, $color4); imagefilledrectangle ($im, 102+$rats, 9, 99, 10, $color5); }//----------------Закрашиваемая часть(синий,без градиента)----------------------------// if($rat > 0) { $color = imagecolorallocate($im, 0, 255, 0); $color2 = imagecolorallocate($im, 0, 255, 0); $color3 = imagecolorallocate($im, 0, 255, 0); $color4 = imagecolorallocate($im, 0, 255, 0); $color5 = imagecolorallocate($im, 0, 255, 0); imagefilledrectangle ($im, 2, 1, $rats, 2, $color); imagefilledrectangle ($im, 1, 3, $rat, 4, $color2); imagefilledrectangle ($im, 1, 5, $rat, 6, $color3); imagefilledrectangle ($im, 1, 7, $rat, 8, $color4); imagefilledrectangle ($im, 2, 9, $rats, 10, $color5); }$textColor = imagecolorallocate($im, 0, 0, 0);imageString($im, 1, 78, 2, "$rat%", $textColor);imageGIF($im);?>
POFIGISST » 2011.12.23 21:44

tipsun
Работает  :O  спасибо большое  ;)

tipsun » 2011.12.23 23:47

POFIGISST,

Код:

1
span style="color: #0000BB"><?phpdefine('RATING', (int)$_SERVER['QUERY_STRING']);//<img src="image.php?5"... Так будет выглядеть address :)?>
POFIGISST » 2011.12.24 00:00

tipsun
у мя в анкете вот так идет

echo "Рейтинг: <br/><img src='grafic.php?rat=$ank[rating]' alt=''/> <br />";

не знаю как правильнее,но работает)

tipsun » 2011.12.24 20:57

Рейтинг картинка составляется из расчета 0-100%, которые должен сам кодер расчитать и проценты уже в картинку направить.
- - - -
Картинка показывает:
- при 10% "+" голосов относительно "-": [/////////\]
- при 50% "+" голосов относительно "-": [/////\\\\\]
- при 90% "+" голосов относительно "-": [/\\\\\\\\\]

Это вроде как: (+/-)*100. Или если общий расчет, то хмм... не знаю пока.
- - - -
Указывать проценты можно так:

Код:

1
<img src="rating.php?70%" alt="Rating" />

Код:

1
span style="color: #0000BB"><?phpdefine('WIDTH', 50);define('HEIGHT', 5);define('IMAGE', imageCreateTrueColor(WIDTH, HEIGHT));define('M_RATING_COLOR', imageColoralLocate(IMAGE, 220, 0, 0));define('P_RATING_COLOR', imageColoralLocate(IMAGE, 0, 220, 0));$percent = abs((int)$_SERVER['QUERY_STRING']);if (0 != $percent)imageFill(IMAGE, WIDTH-1, HEIGHT-1, P_RATING_COLOR);if (100 > $percent)imageFilledRectangle(IMAGE, WIDTH-1-$percent*(WIDTH/100), HEIGHT-1, 0, 0, M_RATING_COLOR);header('Content-Type: image/jpeg');imagejpeg(IMAGE);?>
POFIGISST » 2011.12.24 21:00

tipsun
кул идея,мне такая даже в голову не приходила=(

tipsun » 2011.12.24 21:11

POFIGISST написал:

tipsun
кул идея,мне такая даже в голову не приходила=(

Это и не моя идея. Я помню на ютубе так же, вроде.

tipsun » 2011.12.24 21:57

Размер картинки можно свободно менять. Индикация не нарушится =)

POFIGISST » 2011.12.24 23:09

tipsun написал:

Размер картинки можно свободно менять. Индикация не нарушится =)

Точно,ты прав насчет ютюба,там сеня смотрел +100500 и заметил такой рейтинг(

tipsun » 2011.12.24 23:12

Да ниче. Теперь будет такой же у любого :)

POFIGISST » 2011.12.24 23:29

tipsun
Ой,а я и не видел код,когда смотрел пост,там еще кода не было=)

tipsun » 2011.12.25 11:22

over9000 раз уже отредактировал код.
Лишний раз заливать не стоит... Заодно и % ограничил. =)

POFIGISST » 2011.12.26 01:37

Была поставлена такая задача, показ ссылки только для жителей из России и Украины,реализовал её вот так

Код:

1
2
3
4
5
6
7
8
9
$ip_adr = $_SERVER['HTTP_X_FORWARDED_FOR'];
$ip_adr = trim(strtok($ip_adr, ','));
$xml = file_get_contents('http://ipgeobase.ru:7020/geo?ip='.$ip_adr);
$xml_object = simplexml_load_string($xml);
$country = $xml_object->ip->country;
if($country == "RU" or $country == "UA")
{
echo '<a href="">Адрес нужной ссылки</a>';
}

подскажите,может быть как нибудь по другому можно сделать? или у меня какие либо ошибки в коде?:)

Gemorroj » 2011.12.26 12:56

почему $ip_adr = $_SERVER['HTTP_X_FORWARDED_FOR']; ? nginx?

tipsun » 2011.12.26 20:52

tipsun написал:

Рейтинг картинка составляется из расчета 0-100%, которые должен сам кодер расчитать и проценты уже в картинку направить.
- - - -
Картинка показывает:
- при 10% "+" голосов относительно "-": [/////////\]
- при 50% "+" голосов относительно "-": [/////\\\\\]
- при 90% "+" голосов относительно "-": [/\\\\\\\\\]

Это вроде как: (+/-)*100. Или если общий расчет, то хмм... не знаю пока.
- - - -
Указывать проценты можно так:

Код:

1
<img src="rating.php?70%" alt="Rating" />

Код:

1
span style="color: #0000BB"><?phpdefine('WIDTH', 50);define('HEIGHT', 5);define('IMAGE', imageCreateTrueColor(WIDTH, HEIGHT));define('M_RATING_COLOR', imageColoralLocate(IMAGE, 220, 0, 0));define('P_RATING_COLOR', imageColoralLocate(IMAGE, 0, 220, 0));$percent = abs((int)$_SERVER['QUERY_STRING']);if (0 != $percent)imageFill(IMAGE, WIDTH-1, HEIGHT-1, P_RATING_COLOR);if (100 > $percent)imageFilledRectangle(IMAGE, WIDTH-1-$percent*(WIDTH/100), HEIGHT-1, 0, 0, M_RATING_COLOR);header('Content-Type: image/jpeg');imagejpeg(IMAGE);?>

Все это чушь!
html+css спокойно так же сделать можно.
Кстате, на ютубе так же и сделано.

tipsun » 2011.12.29 21:13

session_write_close();
Там какой-то баг с сессией. Можете поподробней рассказать, пример показать?
Я на другом ресурсе читал это, а закладку не сохранил :(

Gemorroj » 2011.12.29 21:48

где ТАМ?

tipsun » 2011.12.29 21:58

Ссылка на коммент.
- - - -
Черт, вроде корректная была.
- - - -
Anonymous 25-Mar-2010 07:44
You can have interesting fun debugging anything with sleep( ) initif you have a session stillactive. For example, a page that makes an ajax request, where the ajax request polls a server-side event (and may not return immediately) . If the ajax function doesn't do session_write_close(), then your outer page will appear to hang, and opening other pages in new tabs will also stall.

Gemorroj » 2011.12.30 10:51

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

POFIGISST » 2012.01.02 09:00

Скажите,что это "Fatal error: Call to undefined function аrrау() in Q:\home\test5.ru\www\test.php on line 2" за ошибка такая?
по идее там у меня должно выводить значение из массива,вот такой код

$meat = аrrау("chicken", "steak", "turkey");
echo $meat[1];

в чем тут ошибка?

хотя можно еще другими вариантами массив создавать,например
///////////////////////////////////
$meat  = array(
        "1" => "11",
                "2" => "22",
                "3" => "33",
                "4" => "44",
        "5" => "55",
        "6" => "66",
        "7" => "77"
        );

echo $meat[1];
/////////////////////////////////////////////

или же вот так

$meat[] = "chicken";

$meat[] = "steak";

Smeat[] = "turkey";

echo $meat[1];

но хочется чтоб кода меньше было)

Gemorroj » 2012.01.02 13:31

POFIGISST, у тебя в слове array - русские буквы a и у.

POFIGISST » 2012.01.02 14:21

Gemorroj Спасибо Паш,моя не внимательность (( копировал слово из учебника по пыху((

POFIGISST » 2012.01.03 09:22

Блин,в книге написано,что вот таким кодом
$a = 8;
$b = 0;
print  $a == $b;

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

$a = 8;
$b = 0;
if ($a == $b) print "1";
else print "0";
но хочется чтоб кода было поменьше) так вот вопрос,должно в первом коде выводить 0 или нет если там значения не равны?)

Gemorroj » 2012.01.03 11:35

ну да, false не преобразуется в 0. опечатка, наверное.
можно так print (int)($a == $b); или так print $a == $b ? 1 : 0;

POFIGISST » 2012.01.03 12:18

Gemorroj Спс=) учебник качал с php.su , наверное опечатка=)

Nu3oN » 2012.01.04 01:01

Как лучше в классе навигации передавать в шаблон навигацию? (всмысле список страниц типа: 1,2,3,4...10)
Обычно строкой уже выдавал, но неудобно выходит с разметкой! если надо поменять что-то, то надо менять в классе!
Есть идея отдавать в виде массива, но тогда придется в шаблоне делать цикл!

tipsun » 2012.01.04 09:42

Nu3oN, у меня в классе в виде массива отдается ранжировка. Кстати ты свой класс навигации выложить можешь, для ознакомительных целей? На ранжировку (1, 2, 3, 4, ..., 10) посмотреть хочу, как она у тебя генерируется.

Gemorroj » 2012.01.04 11:27

Nu3oN, можно хэлперы добавить, которые будут генерить html код по объекту или массиву. т.е. в фреймворке заранее написать несколько наиболее частых видов навигации. ну эт так, мысли по теме..)

Nu3oN » 2012.01.04 14:21

tipsun написал:

Nu3oN, у меня в классе в виде массива отдается ранжировка. Кстати ты свой класс навигации выложить можешь, для ознакомительных целей? На ранжировку (1, 2, 3, 4, ..., 10) посмотреть хочу, как она у тебя генерируется.

я его уже как то тут выкладывал! чуть попозже скину =)
Я вообще идею у кого-то воровал, уже не помню!

warwap » 2012.01.06 00:02

привет. вопрос;
как вивести темы закрипленые вверху? вот структура  $q = mysql_query("SELECT * FROM `forum_podtems` WHERE `fid` = '".$f."' ORDER BY `times` DESC LIMIT $start, 10;");  `pr` = 1 тема закреплена

Nu3oN » 2012.01.06 00:11

В общем такая беда, необходимо из класса вызвать определенный метод!
Я делаю это так:

Код:

1
span style="color: #0000BB"><?php/* * Создаем объект класса контроллера. */$objController = new $_RTR -> get('name') -> controller;/* * Вызываем необходимый нам метод из $objController. */call_user_func_array( array( $objController, $_RTR -> get('name') -> method ), array() );?>

Но жопой чувствую что можно это сделать более красиво!

Gemorroj » 2012.01.06 01:02

warwap написал:

привет. вопрос;
как вивести темы закрипленые вверху? вот структура  $q = mysql_query("SELECT * FROM `forum_podtems` WHERE `fid` = '".$f."' ORDER BY `times` DESC LIMIT $start, 10;");  `pr` = 1 тема закреплена

Код:

1
2
3
4
5
6
7
$q = mysql_query("
SELECT *
FROM `forum_podtems`
WHERE `fid` = $f
ORDER BY `pr` DESC, `times`DESC
LIMIT $start, 10;
");
warwap » 2012.01.06 01:11

Gemorroj, болъшое спасибо

Gemorroj » 2012.01.06 01:13

Nu3oN написал:

Но жопой чувствую что можно это сделать более красиво!

Код:

1
2
$objController = new $_RTR -> get('name') -> controller;
$objController -> {$_RTR -> get('name') -> method}();

но вообще, мне кажется в классе RTR (не знаю что это) хорошо бы сделать метод для более простого вызова метода контроллера.
т.е что-то такое

Код:

1
$_RTR->get('name')->run();
Nu3oN » 2012.01.07 02:13

честно сказать я сам х.з что там творится xD
я там такой херни налепил, что черт ногу сломает)))))

POFIGISST » 2012.01.07 16:09

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

Код:

1
2
3
4
5
if($inf[otkl]=='0') {
if($inf[photo]!=NULL) echo '<a href="'.H.'photo'.$inf[id].'"><img src="'.H.'photo_img?'.$inf[id].'" alt="Фото" title="Комментарии к фото"/></a><br />'.links.'» <a href="'.H.'photo'.$inf[id].'">Комментарии к фото</a>'.div.'';
else echo '<img src="'.H.'img/no-photo.gif" alt="no_photo"/><br /><br />';
}
else echo '';

по умолчанию в базе идет 0 , то есть вывод фоток, первый раз делал такую вложенность в конструкции if else , код работает,но наверное есть более оптимальный вариант как сделать такую конструкцию((

tipsun » 2012.01.07 17:01

POFIGISST, вроде так вот тоже можно.

Код:

1
span style="color: #0000BB"><?phpif (! $inf['otkl']) { if($inf['photo']) echo '<a href="' . H . 'photo' . $inf['id'] . '">'. '<img src="' . H . 'photo_img?' . $inf['id'] . '" alt="Фото" title="Комментарии к фото"/>'. '</a><br/>' . links . '» <a href="' . H . 'photo' . $inf['id'] . '">Комментарии к фото</a>' . div; else echo '<img src="' . H . 'img/no-photo.gif" alt="no_photo"/><br/><br/>';}
Gemorroj » 2012.01.07 21:39

первое что бросается в глаза - otkl. Транслитом назвать переменные никогда нельзя)

POFIGISST » 2012.01.08 11:03

Gemorroj
а почему нельзя транслитом называть?=)
Добавлено спустя   1 минуту  53 секунды:
попытался под авы переписать,но чет запутался немног в if else ((вот такой код

Код:

1
span style="color: #0000BB"><?php$sit = $_SERVER['HTTP_HOST'];if($inf['no_ava']=='0') {if($izm['sil']!='')echo '<img src="'.$izm['sil'].'" width="120" height="120> alt="ava"/><br/>';if($izm['sil']=='')echo '<img src="http://'.$sit.'/'.$inf['myavatar'].'" width="120" height="120> alt="ava"/><br/>';else echo '';}}?>

ошибку не показывает,но и работать тоже не хочет(

tipsun » 2012.01.08 11:33

Вроде { лишняя попалась.
А вообще лучше пиши какая ошибка была, так понятней будет.

POFIGISST написал:


Код:

1
span style="color: #0000BB"><?php$sit = $_SERVER['HTTP_HOST'];if(! $inf['no_ava']) { if($izm['sil']) echo '<img src="'.$izm['sil'].'" width="120" height="120> alt="ava"/><br/>'; if(! $izm['sil']) echo '<img src="http://'.$sit.'/'.$inf['myavatar'].'" width="120" height="120> alt="ava"/><br/>';}//}?>
Gemorroj » 2012.01.08 11:33

POFIGISST, потому что, например, Расмус Лердорф не поймет ='(

POFIGISST » 2012.01.08 11:42

tipsun
syntax error, unexpected $end такая ошибка если убрать { , получается что закрытия нету(
Добавлено спустя   1 минуту :
Gemorroj
сомневаюсь,что кто-то увидит когда нибудь мой код,тем более Лердорф Расмус =(

tipsun » 2012.01.08 12:01

Ой не "{", а эта лишняя "}"
Ты правильно скопировал код?

POFIGISST » 2012.01.08 12:01

Код:

1
span style="color: #0000BB"><?php$sit = $_SERVER['HTTP_HOST'];if($inf['no_ava']!='0') {if($izm['sil']!=''){echo '<img src="'.$izm['sil'].'" width="120" height="120> alt="ava"/><br/>';}else{echo '<img src="http://'.$sit.'/'.$inf['myavatar'].'" width="120" height="120> alt="ava"/><br/>';}}else echo '';}?>

вот так гуд)

tipsun » 2012.01.08 12:03

POFIGISST, Ну вот, можешь когда хочешь :)
- - - -
Расмус Лердорф
По словам разработчика языка, первая версия PHP была написана буквально за день в промежутках между деловыми встречами.
Ох нифига умище!

POFIGISST » 2012.01.08 12:38

tipsun написал:

POFIGISST, Ну вот, можешь когда хочешь :)
- - - -
Расмус Лердорф
По словам разработчика языка, первая версия PHP была написана буквально за день в промежутках между деловыми встречами.
Ох нифига умище!

ну над же как-то учиться  ;)

Расмус Лердорф

tipsun » 2012.01.08 12:50

Да-да, я как раз с вики прочитал.

Gemorroj » 2012.01.08 15:30

POFIGISST, пейсатели всяких бодрчатов и прочих ваплогов так же думали ;)

Nu3oN » 2012.01.10 20:35

Раньше особо не работал с изображениями, в общем это нормально?

Код:

1
span style="color: #0000BB"><?php/* * Отправляем заголовки. */header('Content-type: image/gif');header('Content-Disposition: attachment; filename=' . PREFIX_DOWN_FILES . time() . '.gif');header('Content-Transfer-Encoding: binary');/* * Получение информации о изображении. */$getSize = getimagesize($strFile);/* * Открываем изображение для дальнейшей работы. */switch (strrchr($getSize['mime'], '/')): case '/gif': $getImage = imagecreatefromgif($strFile); break; case '/jpeg': case '/jpg': $getImage = imagecreatefromjpeg($strFile); break; case '/png': $getImage = imagecreatefrompng($strFile); break; endswitch;/* * Узнаем соотношения. */$getRatioOne = $strWidth / $getSize[0];$getRatioTwo = $strHeight / $getSize[1];$getRatio = ($getRatioOne > $getRatioTwo) ? $getRatioTwo : $getRatioOne;if ($boolProportion) { /* * Если пропорции сохранять не надо. */ $newWidth = $strWidth; $newHeight = $strHeight;} else { /* * Если надо сохранить пропорции. */ $newWidth = intval($getSize[0] * $getRatio); $newHeight = intval($getSize[1] * $getRatio);}/* * Создаем новое изображение. */$newImage = imagecreatetruecolor($newWidth, $newHeight);/* * Изменяем размер изображения. */imagecopyresampled($newImage, $getImage, 0, 0, 0, 0, $newWidth, $newHeight, $getSize[0], $getSize[1]);/* * Выводим полученое изображение. */imagegif($newImage, null, 75);/* * Очищаем буфер. */imagedestroy($getImage); imagedestroy($newImage);?>
Gemorroj » 2012.01.10 21:10

тип изображения определяй с помощью getimagesize, а не по расширению.

Nu3oN » 2012.01.10 21:26

Исправил! помню как то я аккуратно резал изображение подгоняя под ширину и длинну!
не могу вспомнить! удобно бы было заместо

Код:

1
span style="color: #0000BB"><?php$newWidth = $strWidth;$newHeight = $strHeight;?>

А то такая ерунда растягивает изображение!

Gemorroj » 2012.01.10 21:46

http://wapinet.ru/script/show.php?d=%2F … p;f=im.php
то, что там по расширению определяется - не верно, но посмотри оттуда ресайз с сохранением пропорций.

Nu3oN » 2012.01.10 23:11

Gemorroj написал:

http://wapinet.ru/script/show.php?d=%2F … p;f=im.php
то, что там по расширению определяется - не верно, но посмотри оттуда ресайз с сохранением пропорций.

Что-то и идея и реализация не очень!
Вот намудрил, вроде исправно работает:

Код:

1
span style="color: #0000BB"><?php/* * Отправляем заголовки. */header('Content-type: image/gif');header('Content-Disposition: attachment; filename=' . PREFIX_DOWN_FILES . time() . '.gif');header('Content-Transfer-Encoding: binary');/* * Получение информации о изображении. */$getSize = getimagesize($strFile);/* * Открываем изображение для дальнейшей работы. */switch (strrchr($getSize['mime'], '/')): case '/gif': $getImage = imagecreatefromgif($strFile); break; case '/jpeg': case '/jpg': $getImage = imagecreatefromjpeg($strFile); break; case '/png': $getImage = imagecreatefrompng($strFile); break; endswitch;/* * Узнаем соотношения. */$getRatioOne = $strWidth / $getSize[0];$getRatioTwo = $strHeight / $getSize[1];$getRatio = max($getRatioOne, $getRatioTwo);if ($boolProportion) { /* * Если пропорции сохранять не надо. */ $getSize[1] = $strHeight / $getRatio; $getShift = ($getSize[0] - $strWidth / $getRatio) / 2; $getSize[0] = $strWidth / $getRatio; /* * Создаем новое изображение. */ $newImage = imagecreatetruecolor($strWidth, $strHeight); /* * Изменяем размер изображения. */ imagecopyresampled($newImage, $getImage, 0, 0, $getShift, 0, $strWidth, $strHeight, $getSize[0], $getSize[1]); } else { /* * Если надо сохранить пропорции. */ $newWidth = intval($getSize[0] * $getRatio); $newHeight = intval($getSize[1] * $getRatio); /* * Создаем новое изображение. */ $newImage = imagecreatetruecolor($newWidth, $newHeight); /* * Изменяем размер изображения. */ imagecopyresampled($newImage, $getImage, 0, 0, 0, 0, $newWidth, $newHeight, $getSize[0], $getSize[1]);}/* * Выводим полученое изображение. */imagegif($newImage, null, 75);/* * Очищаем буфер. */imagedestroy($getImage); imagedestroy($newImage);?>
Gemorroj » 2012.01.10 23:42

http://www.php.net/manual/ru/function.g … php#102418 лучше не по миме определять.
работает - ок)
и еще, почему гиф? png - тру)

Nu3oN » 2012.01.10 23:50

Ну это скрипт зц для мобильников! думаю по весу gif будет проще для трафика пользователей =)

Gemorroj » 2012.01.11 01:10

Nu3oN, по моим прикидкам, как раз таки png меньше весит чаще.

Nu3oN » 2012.01.11 01:13

Сейчас проверю, но на сколько мне известно, пнг за счет своего хорошего качества всегда весит больше
Добавлено спустя   1 минуту  33 секунды:
Это я опираюсь на мою практику работы в графических редакторах! Как себя ведет пых в таких ситуациях х.з

Nu3oN » 2012.01.11 01:23

Хм... По неизвестной мне причине png файл создаваться не хочет о_О
Добавлено спустя   2 минуты  12 секунд:
А все! туплю! В общем я был прав, gif -37кб, png-89кб, а вот выигрывает вообще jpg, у него 10кб
::thumb982::  ::thumb983:: ::thumb984::
Разницы в качестве не видно (если не увеличивать), так зачем пользователю лишний слив трафика?)))

Gemorroj » 2012.01.11 01:57

ну это смотря какая картинка тоже.

Warwap » 2012.01.13 01:50

Привет, подскажи пожалоста кад для mp3 id3.

Чтоб при импортировке файла на хост (пример:  wapinet.ru/music.mp3)  файл сохранялся с тегом альбома site.ru

Nu3oN » 2012.01.13 02:33

А какое отношение id3 имеет к названию импортируемого файла?
Добавлено спустя   2 минуты  22 секунды:
А! Понял! Тебе надо в тегах (метаданных) записать имя песни? если да, то вот:

Код:

1
span style="color: #0000BB"><?php require_once ('Mp3_Id.php'); $id3 = new MP3_Id(); $result = $id3 -> read('путь к mp3 файлу'); $id3 -> setTag('name', 'название песни'); $id3 -> write();?>

А вот класс MP3_Id http://wapinet.ru/forum/download.php?aid=986

Warwap » 2012.01.13 04:29

Ошибка
Fatal error: Class 'PEAR' not found in /home/warwap/public_html/obmen/MP3_Id.php on line 194

Gemorroj » 2012.01.13 11:57

поставь PEAR. И еще этот класс работает только с Idv1, а не с Idv2

Nu3oN » 2012.01.13 17:12

Gemorroj ну тогда http://pear.php.net/package/MP3_IDv2

Gemorroj » 2012.01.13 18:00

http://getid3.sourceforge.net/

Nu3oN » 2012.01.13 18:33

Gemorroj написал:

http://getid3.sourceforge.net/

Что-то я не догоню как там инфу вытянуть

Gemorroj » 2012.01.13 18:41

я тоже, но по описанию либа всемогущая))
там экзамплы просто пиздец. как будто сам эти теги разгребаешь, безо всякой помощи.

Nu3oN » 2012.01.20 00:19

Не могу вникнуть! как вытащить скриншет из тем для мобилок?
я понял что надо его открыть, а вот откуда его брать? :/
Там много изображений, но как понять какое нужно мне?
Я думал wallpaper.jpg но не во всех темах оно есть!

Nu3oN » 2012.01.20 00:32

Кажется разобрался с одним из форматов тем!
логика такова: открываем nth файл, открываем theme_descriptor.xml узнаем что у нас в <wallpaper  ...> если изображение, то как обычно выводим изображение!
если swf то ничего не выводим =)
Добавлено спустя   3 минуты  20 секунд:
с thm та же логика! открываем thm файл, открываем Theme.xml узнаем что у нас в <Background_image> и узнаем имя файла фона
utz таже логика что и у thm, только смотрим что у нас в <preview>

а что делать с sis?

POFIGISST » 2012.01.20 01:30

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

Gemorroj » 2012.01.20 12:37

Nu3oN, там вроде еще есть варианты с nth,utz,thm. а с sis, да, проблема. открыть этот формат у меня так и не вышло. готовых реализаций работы с sis я не видел, а реализовывать свое, основываясь на доках нокии побоялся)
POFIGISST, заголовки Accept-Encoding или TE.

POFIGISST » 2012.01.21 00:41

Gemorroj
спс Паш=)

TLENS » 2012.01.22 02:38

Не срабатывает сборщик мусора в сессиях.
в php.ini все настроено для чистки:
шанс запуска 1 к 10 и время 24 минуты.
session.gc_probability = 1
session.gc_divisor = 10
session.gc_maxlifetime = 1440
И права все выставленные правильно, владелец www-data
Но все же забивает сотни тысяч файлов и сайты выходят из строя
Прблема решена. Забыл об apachectl restart

POFIGISST » 2012.01.22 16:03

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

tipsun » 2012.01.22 16:07

POFIGISST

Код:

1
span style="color: #0000BB"><?php$main = 1; // на главной//на остальных ниче не надо.//а файле foot.phpif (! $main) echo '<a href="/">Главная</a>';
POFIGISST » 2012.01.22 21:26

tipsun
Спасибо,работает,даже обидно,что сам не додумался=(

POFIGISST » 2012.01.25 00:06

Реклама от бегуна мне покоя не дает уже неделю дет, накатал простой грабб поиска музыки с o5wap.ru все вырезал (счетчики,рекламные ссылки,копирайт и т.д.) а рекламу от бегуна не могу ни как вырезать,помогите с вырезкой этой рекламы,или её вырезать нельзя? вот мое г творение  http://xporno.in/ppoissk/   ( там сразу под кнопкой "Найти" реклама,и  ссылка там на пол страницы если посмотреть исходный код,подскажите как её вырезать((

Gemorroj » 2012.01.25 00:32

Код:

1
2
3
$file = file_get_contents('http://xporno.in/ppoissk/');
$file = preg_replace('/<div id="begun_block.+[^<\/div>]/', '', $file);
echo $file;
POFIGISST » 2012.01.25 01:00

Gemorroj
Ты как волшебник Паш,всегда все знаешь,спасибо огромное=)

POFIGISST » 2012.01.25 23:13

Gemorroj написал:

почему $ip_adr = $_SERVER['HTTP_X_FORWARDED_FOR']; ? nginx?

Эт чтоб юзеры которые сидят с оперы  из России и Украины тоже видели ссыль,идет реальный ип юзера и ип прокси =)

warwap » 2012.01.26 00:24

привет. вопрос как сделать чтоб название файла менялось? вот код
<?php
$font='Turtles.ttf';
$line=''.$_SERVER['HTTP_HOST'].'';
$head='image/jpeg';
if (isset($_GET['file']) and preg_match('/^[A-z0-9_\.\/\-]+$/',$_GET['file'])) {
$url='http://wapos.ru/im/base/'.$_GET['file'];
$get=get_headers($url,1);
if ($get[0]!='HTTP/1.1 200 OK') {header ('location:index.php'); exit;}
if ($get['Content-Type']==$head)
{$new_image=@file_get_contents($url);
$new_image=imagecreatefromstring($new_image);
$f=imagecolorallocate($new_image,200,200,200);
imagettftext($new_image,15,0,14,14,$f,$font,$line);
header('Content-Type: image/jpeg');
imagejpeg($new_image);
imagedestroy($new_image);}else{header ('location:'.$url);}
}else{header ('location:index.php');}
?>

Gemorroj » 2012.01.26 00:31

O_o

warwap » 2012.01.26 00:35

?

tipsun » 2012.02.05 13:15

Если, допустим, с файла index.php отправить на свой же сайт заголовки (с данными/GET|POST), то файл, который принимает эти заголовки, будет выполнять работу, при отсутствии браузера?

Nu3oN » 2012.02.05 14:04

Откуда берется еще один тик?

Код:

1
span style="color: #0000BB"><?php$a = 0;function getLimitParse($b) { global $a; print $a++ . ' -> next <br />';}print 'start <br />';register_tick_function ('getLimitParse'); declare (ticks=1){ 1;}print 'end';?>

Результат выполнения

start
0 -> next
1 -> next
end

Gemorroj » 2012.02.06 12:23

Код:

1
span style="color: #0000BB"><?phpfunction getLimitParse() { static $a = 0; print $a++ . ' -> next' . "\n";}register_tick_function ('getLimitParse');print 'start' . "\n";declare(ticks=1) { '1 tick'; '2 tick';}print 'end';

я не работал с тиками, но так погоняв код, склоняюсь к мысли, что один тик (нулевой в данном случае) происходит всегда. мб само объявление declare считается тоже.

POFIGISST » 2012.02.12 21:18

а если такой $posts=rand(1,200); ранд задаеться,это же число будет колебаться от 1 до 200 ?))

Gemorroj » 2012.02.12 21:29

лучше mt_rand

POFIGISST » 2012.02.13 20:49

это тогда вот так будет $posts=mt_rand(1,200) , увеличивает скорость генерации чисел по сравнению с   rand =) Спс =)

tipsun » 2012.02.13 23:53

session_regenerate_id() - регенерирует id
А при этом сохраняется срок/домен/итд самой куки?
Если указать true - то она удаляет старый файл или создает новый и сохраняет инфу старого файла?

tipsun » 2012.02.14 00:09

tipsun написал:

session_regenerate_id() - регенерирует id
А при этом сохраняется срок/домен/итд самой куки?
Если указать true - то она удаляет старый файл или создает новый и сохраняет инфу старого файла?

Она удаляет старый файл И сохраняет инфу старого файла/копирует.
Но не копирует инфу со старой куки: срок/домен/итд... Если явно не указано тобой/мной через session_set_cookie_params()

tipsun » 2012.02.16 17:06

Как представить секунды в виде даты?
Так можно? Или легче есть?

Код:

1
span style="color: #0000BB"><?php//Для юзера обычно запускается.session_start();//Обычно для счетчика онЛайн бывает уже задан.$offTimeLimit = 240; //seconds = 4 minutes//$_SESSION = array();///*$_SESSION['lastActivity'] -= $_SERVER['REQUEST_TIME'];if ($offTimeLimit > -$_SESSION['lastActivity']) { $_SESSION['onLineTime'] -= $_SESSION['lastActivity'];} $_SESSION['lastActivity'] = $_SERVER['REQUEST_TIME'];//*/function secToDate($value){ $array = getDate($value); $array['mday'] -= 1; $array['mon'] -= 1; $array['year'] -= 1970; return sprintf('%01d/%01d/%01d %02d:%02d:%02d', $array['mday'], $array['mon'], $array['year'], $array['hours'], $array['minutes'], $array['seconds']);}echo '<pre>';echo secToDate($_SESSION['onLineTime']);echo '</pre>';
POFIGISST » 2012.02.17 18:58

Такой вопрос по бд возник,если делать функцию как в вк 'мне нравится' то как там ид того кому понравилось в базу заносится? Неможет же в бд для каждого кому понравилось создаватся новое поле) а если ид всех заносить в одно поле,то скрипт не разделит то число что в базе на иды тех кому понравилось,так как же в базу ИДы заносятся?

tipsun » 2012.02.17 19:29

Учесть повторы.
"Объект любви" должен быть.

Код:

1
| table_id | object_address | browser | ip | referer |

Наверно такая таблица нужна.

POFIGISST » 2012.02.18 04:31

Ну учесть повторы можно через ид,если юзер кликает,то его ид идет,ну и потом делать проверки из базы,если в ней есть уже ид юзера,ну тоесть он уже кликал,то повторно незасчитывать клик)я прост х.з как в базу ИДы тех кто клинул заносить чтоб потом можно было посмотреть кто кликал,ведь юзеров может быть и 1000,вот как эту 1000 ИДов заносить в базу,а потом выводить их по отдельности я х.з.(

tipsun » 2012.02.18 10:23

Я думал для всех, даже для гостей будет система работать.
Тогда наверно так:

Код:

1
| table_id | object_address/id | user_id |
POFIGISST » 2012.02.18 14:09

tipsun спасиб,дома буду еще код блогов посмотрю,там такая функция есть,посмотрю как там это сделано:-)

ByVlad » 2012.02.18 15:26

как вы все знаете в mysqli нету метода result.
как его можно прикрутить так, что бы он работал не как функция $mysqli -> result($mysqli -> query())
а как $mysqli -> query("SOME QUERY") -> result();
буду благодарен за помощь.

Gemorroj » 2012.02.18 23:13

ByVlad, использовать mysqli не как нативный класс, а наследовать его своим классом и воротить там все что угодно.
т.е.
MyMySqli extends mysqli
{

}

POFIGISST » 2012.02.21 08:15

какой функцией заменяют в граббах реальный адрес на адрес домена где стоит грабб,чтоб скрыть реальный адрес?=)

Gemorroj » 2012.02.21 11:44

трах тибидох

POFIGISST » 2012.02.21 12:04

пи*датая функция:D

tipsun » 2012.02.21 22:10

Gemorroj
:D
POFIGISST
» str_replace()
» preg_replace()
» substr_replace()

POFIGISST » 2012.02.22 11:43

Блее,почему может кнопка не работать? код вродь весь правильно написал,а кнопка не кликабельна(( и х.з почему((

вот такой код идет у мя

Код:

1
span style="color: #0000BB"><?phpinclude 'inc/head.php'; include 'inc/config.php';?><form action="/inc/insert.php" method="post" name="form"></form><p> Введите название фильма: <br/><input name="nazv" type="text" size="50" maxlength="200"></p><p> Введите описание фильма:<br/> <input name="opis" type="text" size="50" maxlength="255"></p><p> Введите код фильма:<br/> <input name="kod" type="text" size="50"></p><p> Введите дату добавления:<br/> <input name="data" type="text" size="50"></p><input class="submit" type="submit" value="Добавить">

и кнопка "Добавить" не работает нихера(( какая тут ошибка у меня?

проверил обработчик,с ним все норм,добавляет инфу в базу))

tipsun » 2012.02.22 13:27

POFIGISST, </form> - закрыл не там, где надо.

Код:

1
span style="color: #0000BB"><?php//HTML<form action="/inc/insert.php" method="post" name="form"> <p> Введите название фильма: <br/> <input name="nazv" type="text" size="50" maxlength="200" /></p> <p> Введите описание фильма:<br/> <input name="opis" type="text" size="50" maxlength="255" /></p> <p> Введите код фильма:<br/> <input name="kod" type="text" size="50" /></p> <p> Введите дату добавления:<br/> <input name="data" type="text" size="50" /></p> <input class="submit" type="submit" value="Добавить" /></form>
POFIGISST » 2012.02.22 15:31

tipsun
спасибо,чет я ступил(( теперь нормик работает)))

Siddhesh » 2012.02.27 00:37

Hey friends, i want know how to make 'download counter" for AutoIndex Script(its means how many times files has been download). Please use english because i don't know russian language .i m using google translator using reading this forum

Gemorroj » 2012.02.27 11:34

http://wapinet.ru/script/show.php?d=%2F … %2Fout.zip

POFIGISST » 2012.02.27 16:34

пишу запрос в базу,который будет в файле запускаться по крону, но он не работает(( вот сам запрос mysql_query("update `users` where day = '".date("d")."' and month = '".date("m")."' set `posts`=`posts`+'200'"); то есть над обновить поле posts в таблице users где инфа в поле  day совпадает с сегодняшним днем и так же где инфа из поля month совпадает с текущим месяцем и если условия совпадают то в поле posts добавить 200 ( но дет я накосячил,и запрос нихера не работает(

Gemorroj » 2012.02.27 18:59

сначала set, а потом where

POFIGISST » 2012.02.27 19:18

Gemorroj
Спс =) тогда вот так запрос идет mysql_query("update `users` set `posts`=`posts`+'200' where day = '".date("d")."' and month = '".date("m")."'"); теперь работает все =)

Nu3oN » 2012.03.03 18:46

Как облегчить учесть такого запроса?

Код:

1
span style="color: #0000BB"><?php DB :: $dbh -> query("UPDATE ".RotorPrivat :: TABLE_LIST." l, ".RotorPrivat :: TABLE_PRIVAT." p, ".RotorPrivat :: TABLE_PRIVAT." o, `users` u SET l.`list_new` = '0', p.`privat_read` = '1', o.`privat_read` = '1', u.`users_newprivat` = u.`users_newprivat` - ".$getCorresp['list_new']." WHERE l.`list_id` = ? AND u.`users_login` = ? AND p.`privat_user` = ? AND p.`privat_author` = ? AND o.`privat_user` = ? AND o.`privat_author` = ?;", array($getCorresp['list_id'], self :: $_userLogin, self :: $_userLogin, $user, $user, self :: $_userLogin) );?>

Когда записей больше 10 000 этот запрос очень тяжко переживает этот процесс...

Gemorroj » 2012.03.03 20:15

какие индексы на таблицах стоят?
я не вижу связи таблицы TABLE_LIST и TABLE_PRIVAT

Nu3oN » 2012.03.03 20:27

Индексы стоят везде где выборка происходит!
P/s проблема решена! просто разделил все на отдельные запросы и все стало работать на порядок быстрее

Gemorroj » 2012.03.03 21:06

у тебя не связаны эти 2 таблицы. почти уверен что проблема в этом.

POFIGISST » 2012.03.09 02:58

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

Код:

1
span style="color: #0000BB"><?php$dir='sxv/files';$dh = opendir($dir);while(($file=readdir($dh))!==false){if($file!='.' && $file!='..'){unlink($dir.'/'.$file);echo 'файл "'.$file.'" удален нах<br/>';}}closedir($dh);?>
Gemorroj » 2012.03.09 13:52

делай логирование ошибок. т.е.

Код:

1
span style="color: #0000BB"><?php$dir = 'sxv/files';$dh = opendir($dir);if (!$dh) { exit('Невозможно открыть директорию "' . $dir . '"');}while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { if (unlink($dir . '/' . $file)) { echo 'файл "' . $file . '" удален' . PHP_EOL; } else { echo 'ошибка при удалении файла "' . $file . '"' . PHP_EOL; } }}closedir($dh);

+ там нужна проверка на то, что это файл или директория, как минимум.

tipsun » 2012.03.11 20:42

Еще лучше сделать возможно?
И вообще стоит http_build_query() использовать?
Вроде как тот запрос, что содержится в url никуда не исчезает
+ должно действовать по принципу: <a href="/">/</a>

Код:

1
span style="color: #0000BB"><?phpfunction redirect ($url='', $params=''){ $redirect = $_SERVER['HTTP_HOST']; if ($url and '/' == $url{0}) { $redirect .= DIRECTORY_SEPARATOR . subStr($url, 1); } else { $redirect .= dirName($_SERVER['PHP_SELF']) . DIRECTORY_SEPARATOR . $url; } if (is_array($params) and array() <> $params) { $redirect .= (strPos($url, '?') ? '&' : '?') . http_build_query($params, null, '&'); } //Windows "\" and "/+" $redirect = preg_replace('#[\\\\/]+#', '/', $redirect); header('Location: http://' . rawUrlDecode($redirect)); exit();}//Для опытов >:Dredirect('/world//\/some', array('user' => array('name' => 'Bob Smith', 'age' => 47, 'sex' => 'M', 'dob' => '5/12/1956'), 'pastimes' => array('golf', 'opera', 'poker', 'rap'), 'children' => array('bobby' => array('age' => 12, 'sex' => 'M'), 'sally' => array('age' => 8, 'sex' => 'F')), 'CEO') );
Gemorroj » 2012.03.11 21:25

http_build_query заменяет в ключах точки и пробелы на подчеркивания - это проблемка.

tipsun » 2012.03.12 22:03

Полный адрес в Location, так полный.
А можно ли чтоб он содержал "../"?
http://site.ru/1/2/3/4/../../dr.php

TLENS » 2012.03.13 02:19

Ну попробуй

wapwer » 2012.03.13 19:44

привет, я сделал новости на сайт но почемуто буква "Ш" шифруется в "�?" почему так? как исправить?

Gemorroj » 2012.03.13 20:38

делать все в кодировке utf-8

wapwer » 2012.03.13 20:57

что сдесь не так?
if ($_REQUEST['ok']) {
if ($_POST['title'] and $_POST['text']) {
$title = check($_POST['title']);
$text = check($_POST['text']);
$closed = abs(intval($_POST['closed']));
mysql_query("INSERT INTO `news` SET `title` = '$title', `text` = '$text', `time` = '".time()."', `closed` = '$closed', `mas` = '$id'");
echo "<div

class=\"title\"><center>Добавить новость</center></div>";
echo 'Новость успешно добавлена!<br/>';
echo '<a href="?mod=news&act=manage">К новостям</a><br />';
} else {
error('Вы не заполнили важные поля.');
nav('?mod=news&act=add');
}
} else {
echo "<div

class=\"title\"><center>Добавить новость</center></div>";
echo '<form action="?mod=news&act=add&amp;ok=1" method="post">
Название(max100):<br /><input name="title" type="text" maxlength="100" /><br />
Текст:<br /><textarea cols="35" rows="7" name="text" cols="" rows="5"></textarea><br />
<input name="closed" type="checkbox" value="1" /> закрыть комментирование<br />
<input name="submit" type="submit" value="Добавить" />
</form>';
echo '<a href="?mod=news&act=bbcode">Теги (bb-code)</a><br />';
echo '<a href="?mod=news&act=manage">К новостям</a><br />';
}
break;

Gemorroj » 2012.03.13 23:02

тут все не так, но проблема не тут.
посмотри в какой у тебя кодировке бд и после соединения с бд указывай кодировку utf8

tipsun » 2012.03.14 01:23

Вот. Исправился.
Теперь норм?

Код:

1
span style="color: #0000BB"><?phpfunction redirect ($value=''){ $url = ''; $ds = '/'; if (0 === $value or $value) { if ($ds == $value{0}) { $url = subStr($value, 1); } else { $url = dirName($_SERVER['PHP_SELF']) . $ds . $value; } $old = preg_split('#\/+#', $url); $new = array(); $key = 0; foreach ($old as $value) { if ('..' == $value) { $key -= (0 < $key) ? 1 : 0; unSet($new[$key]); continue; } if ('' <> $value) { $new[$key] = $value; $key += 1; } } if (array() <> $new) { $url = rawUrlDecode(implode($ds, $new)); } else { $url = ''; } } //header('Location: http://' . $_SERVER['HTTP_HOST'] . $ds . $url, true, 301); //exit(); exit('Location: http://' . $_SERVER['HTTP_HOST'] . $ds . $url);}
Gemorroj » 2012.03.14 13:06

хз) проверь на практике)

tipsun » 2012.03.14 15:02

Тестировал, ошибок не заметил.
Оптимизация подсказывает, так лучше будет.

Код:

1
span style="color: #0000BB"><?php// foreach if ('..' == $value) { if (0 < $key) { $key -= 1; unSet($new[$key]); //or //unSet($new[--$key]); } continue; } if ('' <> $value) { $new[$key] = $value; $key += 1; //or //$new[$key++] = $value; }

+
+
Еще можно перед разбивкой попробовать проверить strPos($url, '../')
+

Код:

1
span style="color: #0000BB"><?phpfunction redirect ($value=''){ $url = ''; $ds = '/'; if (0 === $value or $value) { if ($ds == $value{0}) { $url = subStr($value, 1); } else { $url = dirName($_SERVER['PHP_SELF']) . $ds . $value; } $url = trim($url, $ds); if (false !== strPos($url . $ds, '../')) { $old = preg_split('#\/+#', $url); $new = array(); $key = 0; foreach ($old as $value) { if ('..' == $value) { if (0 < $key) { $key -= 1; unSet($new[$key]); //or //unSet($new[--$key]); } continue; } if ('' <> $value) { $new[$key] = $value; $key += 1; //or //$new[$key++] = $value; } } if (array() <> $new) { $url = implode($ds, $new); } else { $url = ''; } } $url = ($url) ? rawUrlDecode($url) : ''; } //header('Location: http://' . $_SERVER['HTTP_HOST'] . $ds . $url, true, 301); //exit(); exit('Location: http://' . $_SERVER['HTTP_HOST'] . $ds . $url);}
tipsun » 2012.03.15 15:05

Это все конечно хорошо. Но по идее можно было делать так:
При указании (/url) с корня вообще не проверять на "../", "/..", а просто сносить.
При указании (url/) относительного пути рассматривать с начала строки столько "upDir" сколько есть на самом деле.
Тем более в PHP_SELF в нормальном виде. Первую не считать... Остальные "../", "/.." сносить.
- - - -
Или вообще фигней не страдать, у Akdmeh'а спросил, он ответил ничего страшного в том, что "../" будут в полном адресе перенаправления.
Да и при шаблонах можно вызвать другой шаблон, чтоб пользователь сам "push the button".

ВАДИМ » 2012.03.16 13:39

Столкнулся с такой проблеммой.

В магазине реализовал создание категорий и подкатегорий с неограниченым уровнем вложенности.

конечная категория содержит товар,который находится в другой таблице.

Собственно сам вопрос.

Подскажите или напишите алгоритм или код как можно например с первой категории узнать количество товаров в подкатегориях.

Gemorroj » 2012.03.16 13:53

Я бы советовал разбить на 2 действия.
1 - вытаскиваешь все id детей нужной категории. (даже просто в php цикле несколько запросов)
2 - вытаскиваешь товары у которых категория IN (результат 1 запроса). ну в твоем случае просто COUNT(1)
Объединять в 1 запрос будет накладнее.
вот еще ссылка по теме http://habrahabr.ru/post/47280/

ВАДИМ » 2012.03.16 14:37

Дело в том что это тестовый вариант,поэтому если не трудното желательно готовое решение.
Я так понял тут нужен цикл,а вот как реализовать все это не могу понять.
Циклом я смог добится чтоб шел подсчет но проблемма в том что цикл заходит только в первые категории и подкатегории,то есть если в категории тест есть подкатегории тест1 тест2 тест3 тест4 то цакл входит в тест потом в тест1 и все,а остальные не проходит и не считает там товар.

Gemorroj » 2012.03.16 14:52

ВАДИМ, покажи свой код. либо скажи какой драйвер для работы с бд используется? mysql, mysqli, pdo?

ВАДИМ » 2012.03.16 17:17

Драйвер mysql
Вот код вывода категорий и подкатегорий

Код:

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
if ($id)
{
$tip = mysql_query("SELECT * FROM `chop` WHERE `id`= '" . $id .
"' LIMIT 1");
$type = mysql_fetch_assoc($tip);
$tips = $type['type'];
switch ($tips)
{
 
case 'r':
echo '<div class="phdr">';
echo '<b>Магазин | ' . $type['name'] . '</b></div>';
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$id . "'"), 0);
if ($count)
{
$req = mysql_query("SELECT * FROM `chop` WHERE `refid`='$id'");
 
while ($res = mysql_fetch_array($req))
{
 
//подкаталоги
$t = mysql_fetch_assoc(mysql_query("SELECT * FROM `chop` WHERE `id`= '" .
$res['id'] . "' LIMIT 1"));
$ts = $t['type'];
if ($ts == 'k')
{
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$t['id'] . "'"), 0);
}
else
{
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$res['id'] . "'"), 0);
}
 
echo '<a class="menu" href="index.php?id=' . $res['id'] .
'"><img src="/images/dir.png" alt="*"/> ' . checkout($res['name'],
1, 1) . ' [' . $count . '/' . $cuntsss . ']</a>';
 
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
}
 
++$i;
}
}
else
{
echo '<div class="list">Каталог пуст</div>';
}
 
if ($rights >= 7)
{
echo '<div class="gr">Создаем каталог</div>';
echo '<form action="submit.php?id=' . $id .
'" method="post"><div class="list">';
echo '<b>Название:</b><br/><input type="text" name="name" maxlength="40" value="" /><br />';
echo '<b>Описание:<small>max 150</small></b><br/><input type="text" name="opis" /><br/>';
echo '<input type="checkbox" name="type" value="k" /> Для файлов<br/>';
echo '<input type="submit" name="chop_kat" value="Создать"/></div></form>';
}
echo '<a class="menu" href="?id=' . $type['refid'] . '">Назад</a>';
break;
 
case 'k':
echo '<div class="phdr">';
echo '<b>Магазин | ' . $type['name'] . '</b></div>';
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$id . "'"), 0);
if ($count)
{
$req = mysql_query("SELECT * FROM `tovar` WHERE `refid`='$id'");
 
while ($res = mysql_fetch_array($req))
{
 
//тут выводы товаров
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$id . "'"), 0);
echo '<a class="menu" href="tovar.php?id=' . $res['id'] . '">' .
checkout($res['name'], 1, 1) . '</a> ';
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
}
 
++$i;
}
 
}
else
{
echo '<div class="gr">Товар еще не добавлен</div>';
}
if ($user_id && !$ban['1'] && !$ban['11'])
{
echo '<div class="list"><form action="add.php?&amp;id=' . $id .
'" method="post"><input type="submit" value="Добавить товар" /></form></div>';
}
echo '<div class="list"><a href="?id=' . $type['refid'] .
'"><font color="red">Назад</font></a></div>';
break;
 
default:
 
echo '<div class="list"><b>Ошибка!</b><br />Товар удален или же не существует!</p></div>';
break;
}
 
}
else
{
// Список разделов магазина
 
echo '<div class="gr">';
echo '<b>Магазин</b></div>';
 
$req = mysql_query("SELECT * FROM `chop` WHERE `type`='r' and `refid`='0' ORDER BY `real`");
 
while ($res = mysql_fetch_array($req))
{
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$res['id'] . "'"), 0);
echo '<a class="menu" href="index.php?id=' . $res['id'] .
'"><img src="/images/dir.png" alt="*"/> ' . $res['name'] . ' [' .
$count . '/' . $c . ']</a>';
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
 
}
 
++$i;
}
 
if ($rights >= 7)
{
echo '<div class="gr">Создание раздела магазина</div>';
echo '<form action="submit.php" method="post"><div class="list">';
echo '<b>Имя раздела:</b><br/><input type="text" name="name" maxlength="40" value="" /><br />';
echo '<b>Описание:<small>max 150</small></b><br/><input type="text" name="opis" /><br/>';
echo '<input type="submit" name="chop_raz" value="Создать"/></div></form>';
}
}
Gemorroj » 2012.03.16 18:03

многабукав)

Код:

1
span style="color: #0000BB"><?php$id = 1; //ID родительской категорииfunction getCategories (array $ids){ $out = array(); $q = mysql_query('SELECT id FROM categories WHERE parent_id IN(' . implode(',', array_map('intval', $ids)) . ')'); while ($row = mysql_fetch_assoc($q)) { $out[] = $row['id']; } return $out;}$out = array();while ($id = getCategories((array)$id)) { $out = array_merge($out, $id);}$offers = array();$q = mysql_query('SELECT * FROM offers WHERE category IN (' . implode(',', $out) . ')');while ($row = mysql_fetch_assoc($q)) { $offers[] = $row;}

я не проверял, но вроде должно работать.

ВАДИМ » 2012.03.16 20:10

Спасибо,но код не работает почему то.

Gemorroj » 2012.03.16 21:13

что именно не работает?)

ВАДИМ » 2012.03.16 21:27

Ничего не выводит,решил проверить что в массивах вывел их функцией prinr_r там пусто

Gemorroj » 2012.03.16 22:00

эм,напиши вверху скрипта:
error_reporting(-1);
ini_set('display_errors', '1');
и напиши сюда какие ошибки пишет.

ВАДИМ » 2012.03.16 23:58

Ошибки вот

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 23

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 179
Array
(
)


Код в 23 строке,это код из функции

Код:

1
while ($row = mysql_fetch_assoc($q))

Функция записанна так

Код:

1
2
3
4
5
6
7
8
9
10
11
function getCategories(array $id)
{
$out = array();
$q = mysql_query('SELECT (*) FROM `chop` WHERE `refid` IN(' .
implode(',', array_map('intval', $id)) . ')');
while ($row = mysql_fetch_assoc($q))
{
$out[] = $row['id'];
}
return $out;
}

Код в 179 строке

Код:

1
while ($row = mysql_fetch_assoc($q))

Записанно так
   

Код:

1
2
3
4
5
6
7
8
$offers = array();
$q = mysql_query('SELECT (*) FROM `tovar` WHERE `refid` IN (' .
implode(',', $out) . ')');
$i = 0;
while ($row = mysql_fetch_assoc($q))
{
$offers[] = $row;
}
Gemorroj » 2012.03.17 00:08

ВАДИМ написал:

SELECT (*)

SELECT *

Вообще, в первом селекте лучше только id бери, а не все. Т.к. избыточная информация повышает нагрузку на канал между mysql и php. Это, конечно, мелочи, но как о хорошей практике это надо знать и желательно применять.

ВАДИМ » 2012.03.17 00:24

В общем методом проб и ошибок сократил до одной ошибки

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 180


Сделал такой трюк дабы узнать что за ошибка

Код:

1
print mysql_error();

И мне вывело что

Unknown column 'Array' in 'where clause'Array
(
)

Собственно сам код в 180 строке

Код:

1
while ($row = mysql_fetch_assoc($qaa))

А вот блок используемого кода

Код:

1
2
3
4
5
6
$qaa = mysql_query('SELECT * FROM `tovar` WHERE `refid` in ( '.$out.')');
$i = 0;
while ($row = mysql_fetch_assoc($qaa))
{
$offers[] = $row;
}
Gemorroj » 2012.03.17 00:27

implode(',', $out)

ВАДИМ » 2012.03.17 00:37

Таким образом
Notice: Array to string conversion in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 178

Notice: Array to string conversion in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 178

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 180

Unknown column 'Array' in 'where clause'Array
(
)


Ошибка в строке 178,вот сама строка

Код:

1
$qaa = mysql_query('SELECT * FROM `tovar` WHERE `refid` in (' . implode(',', $out) . ')');

Ошибка в 180,вот строка

Код:

1
while ($row = mysql_fetch_assoc($qaa))

Ну и сам блок естественно

Код:

1
2
3
4
5
6
$qaa = mysql_query('SELECT * FROM `tovar` WHERE `refid` in (' . implode(',', $out) . ')');
$i = 0;
while ($row = mysql_fetch_assoc($qaa))
{
$offers[] = $row;
}
Gemorroj » 2012.03.17 00:40

print_r($out); ?

ВАДИМ » 2012.03.17 00:42

Вот
Array
(
    [0] => Array
        (
            [0] => 15
            [1] => 16
            [2] => 17
            [3] => 37
        )

    [1] => Array
        (
            [0] => 22
            [1] => 23
            [2] => 24
            [3] => 25
            [4] => 26
            [5] => 27
            [6] => 28
            [7] => 29
            [8] => 30
            [9] => 31
            [10] => 32
            [11] => 33
            [12] => 38
            [13] => 39
            [14] => 40
            [15] => 41
        )

)


Можешь посмотреть вживую http://wapseller.ru/schop/index.php

Gemorroj » 2012.03.17 00:44

точняк!)
там где $out собираешь замени $out[] = $row; на:
$out = array_merge($out, $row);

ВАДИМ » 2012.03.17 00:53

О,ошибки пропали,все норма.
Теперь глупый вопрос,КАК вывести количество товаров в категорииях и покатегориях?

Gemorroj » 2012.03.17 00:54

эм, echo не?)

ВАДИМ » 2012.03.17 01:01

Так,в каталогах вывел функцией count()
Написал так

Код:

1
count($offers)

А вот в подкаталогах такая не прошла,выбило ошибку
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 80

Вот сам код

Код:

1
while ($row = mysql_fetch_assoc($qw))

Ну и собственно сам блок кода

Код:

1
2
3
4
5
6
$qw = mysql_query('SELECT * FROM `tovar` WHERE `refid` in (' . implode(',', $out) . ')');
$i = 0;
while ($row = mysql_fetch_assoc($qw))
{
$offers[] = $row;
}
Gemorroj » 2012.03.17 01:04

товаров нет?
проверь mysql_num_rows
и еще, если тебе не нужны товары, а нужно только их количество, выборку лучше переписать.

ВАДИМ » 2012.03.17 01:06

Не,сами товары у меня выводятся в другом месте,мне нужен их подсчет в каталогах и подкаталогах.

Gemorroj » 2012.03.17 01:09

$qaa = mysql_query('SELECT COUNT(1) FROM `tovar` WHERE `refid` in (' . implode(',', $out) . ')');
$count = mysql_result($qaa);

ВАДИМ » 2012.03.17 01:09

Кстати,а где ты mysql_num_rows нашел? тут нету в коде ее.

ВАДИМ » 2012.03.17 01:12

При таком варианте выбивает
Warning: mysql_result() expects at least 2 parameters, 1 given in /var/www/freeze/data/www/wapseller.ru/schop/index.php on line 80

Gemorroj » 2012.03.17 01:17

а, второй 0 передай

ВАДИМ » 2012.03.17 01:21

В общем врубил показ ошибки мускула и вот что выдало
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1

Gemorroj » 2012.03.17 01:23

блин, давай весь код

ВАДИМ » 2012.03.17 01:24

Gemorroj написал:

а, второй 0 передай

Блок кода

Код:

1
2
3
4
5
6
7
$qw = mysql_query('SELECT * FROM `tovar` WHERE `refid` in (' . implode(',', $out) . ')');
$i = 0;
while ($row = mysql_fetch_assoc($qw))
{
$offers[] = $row;
}
print mysql_error();

Добавлено спустя   1 минуту  6 секунд:

Gemorroj написал:

блин, давай весь код

Верю что достал но я сам уже весь череп расколол

Код:

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
error_reporting(-1);
ini_set('display_errors', '1');
function getCategories(array $id)
{
$out = array();
$q = mysql_query('SELECT id FROM `chop` WHERE `refid` IN(' .
implode(',', array_map('intval', $id)) . ')');
while ($row = mysql_fetch_assoc($q))
{
$out[] = $row['id'];
}
return $out;
}
 
if ($id)
{
$tip = mysql_query("SELECT * FROM `chop` WHERE `id`= '" . $id .
"' LIMIT 1");
$type = mysql_fetch_assoc($tip);
$tips = $type['type'];
switch ($tips)
{
 
case 'r':
echo '<div class="phdr">';
echo '<b>Магазин | ' . $type['name'] . '</b></div>';
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$id . "'"), 0);
if ($count)
{
$req = mysql_query("SELECT * FROM `chop` WHERE `refid`='$id'");
$i=0;
while ($res = mysql_fetch_array($req))
{
 
//подкаталоги
$t = mysql_fetch_assoc(mysql_query("SELECT * FROM `chop` WHERE `id`= '" .
$res['id'] . "' LIMIT 1"));
$ts = $t['type'];
if ($ts == 'k')
{
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$t['id'] . "'"), 0);
}
else
{
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$res['id'] . "'"), 0);
}
$id = $res['id'];
$out = array();
while ($id = getCategories((array )$id))
{
$out = array_merge($out, $id);
}
 
$offers = array();
$qw = mysql_query('SELECT * FROM `tovar` WHERE `refid` in (' . implode(',', $out) . ')');
$i = 0;
while ($row = mysql_fetch_assoc($qw))
{
$offers[] = $row;
}
print mysql_error();
echo '<a class="menu" href="index.php?id=' . $res['id'] .
'"><img src="/images/dir.png" alt="*"/> ' . checkout($res['name'],
1, 1) . ' [' . $count . '/'.count($offers).']</a>';
 
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
}
 
++$i;
}
}
else
{
echo '<div class="list">Каталог пуст</div>';
}
 
if ($rights >= 7)
{
echo '<div class="gr">Создаем каталог</div>';
echo '<form action="submit.php?id=' . $id .
'" method="post"><div class="list">';
echo '<b>Название:</b><br/><input type="text" name="name" maxlength="40" value="" /><br />';
echo '<b>Описание:<small>max 150</small></b><br/><input type="text" name="opis" /><br/>';
echo '<input type="checkbox" name="type" value="k" /> Для файлов<br/>';
echo '<input type="submit" name="chop_kat" value="Создать"/></div></form>';
}
echo '<a class="menu" href="?id=' . $type['refid'] . '">Назад</a>';
break;
 
case 'k':
echo '<div class="phdr">';
echo '<b>Магазин | ' . $type['name'] . '</b></div>';
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$id . "'"), 0);
if ($count)
{
$req = mysql_query("SELECT * FROM `tovar` WHERE `refid`='$id'");
$i=0;
while ($res = mysql_fetch_array($req))
{
 
//тут выводы товаров
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `tovar` WHERE `refid`='" .
$id . "'"), 0);
echo '<a class="menu" href="tovar.php?id=' . $res['id'] . '">' .
checkout($res['name'], 1, 1) . '</a> ';
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
}
 
++$i;
}
 
}
else
{
echo '<div class="gr">Товар еще не добавлен</div>';
}
if ($user_id && !$ban['1'] && !$ban['11'])
{
echo '<div class="list"><form action="add.php?&amp;id=' . $id .
'" method="post"><input type="submit" value="Добавить товар" /></form></div>';
}
echo '<div class="list"><a href="?id=' . $type['refid'] .
'"><font color="red">Назад</font></a></div>';
break;
 
default:
 
echo '<div class="list"><b>Ошибка!</b><br />Товар удален или же не существует!</p></div>';
break;
}
 
}
else
{
// Список разделов магазина
 
echo '<div class="gr">';
echo '<b>Магазин</b></div>';
 
$req = mysql_query("SELECT * FROM `chop` WHERE `type`='r' and `refid`='0' ORDER BY `real`");
$i=0;
while ($res = mysql_fetch_array($req))
{
 
$id = $res['id'];
$out = array();
while ($id = getCategories((array )$id))
{
$out = array_merge($out, $id);
}
 
$offers = array();
$qaa = mysql_query('SELECT * FROM `tovar` WHERE `refid` in (' . implode(',', $out) . ')');
$i = 0;
while ($row = mysql_fetch_assoc($qaa))
{
$offers[] = $row;
}
 
$count = mysql_result(mysql_query("SELECT COUNT(*) FROM `chop` WHERE `refid`='" .
$res['id'] . "'"), 0);
echo '<a class="menu" href="index.php?id=' . $res['id'] .
'"><img src="/images/dir.png" alt="*"/> ' . $res['name'] . ' [' .
$count . '/'.count($offers).']</a>';
if ($rights >= 7)
echo '<a class="delete" href="submit.php?id=' . $res['id'] .
'">X</a>';
if (!empty($res['opis']))
{
$text = $res['opis'];
$text = mb_substr($text, 0, 100);
$text = checkout($text, 1, 1);
 
}
 
++$i;
}
 
if ($rights >= 7)
{
echo '<div class="gr">Создание раздела магазина</div>';
echo '<form action="submit.php" method="post"><div class="list">';
echo '<b>Имя раздела:</b><br/><input type="text" name="name" maxlength="40" value="" /><br />';
echo '<b>Описание:<small>max 150</small></b><br/><input type="text" name="opis" /><br/>';
echo '<input type="submit" name="chop_raz" value="Создать"/></div></form>';
}
}
Gemorroj » 2012.03.17 01:34

не, я в таком коде боюсь глаза сломать)
там много каких-то непонятных мне селектов.
ошибка mysql скорее всего из-за того что $out пустой.

ВАДИМ » 2012.03.17 01:36

Gemorroj написал:

не, я в таком коде боюсь глаза сломать)
там много каких-то непонятных мне селектов.
ошибка mysql скорее всего из-за того что $out пустой.

Щас принтом попробую вывести массив

ВАДИМ » 2012.03.17 02:00

Gemorroj написал:

не, я в таком коде боюсь глаза сломать)
там много каких-то непонятных мне селектов.
ошибка mysql скорее всего из-за того что $out пустой.

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

Gemorroj » 2012.03.17 09:00

хех) ну если можешь, помоги.

werwap » 2012.03.24 21:30

привет,
подскажите пожалоста как в граббе добавить подставной ip и useragent
а то мой ip хоста забанили?

Gemorroj » 2012.03.24 21:51

через прокси

werwap » 2012.03.24 21:58

напиши пожалоста как? пример

Gemorroj » 2012.03.24 22:07

Код:

1
span style="color: #0000BB"><?php// создание нового ресурса cURL$ch = curl_init();// установка URL и других необходимых параметровcurl_setopt($ch, CURLOPT_URL, "http://www.example.com/");curl_setopt($ch, CURLOPT_HEADER, false);curl_setopt($ch, CURLOPT_PROXY, '192.168.1.1'); // тут устанавливаем проксю// загрузка страницы и выдача её браузеруcurl_exec($ch);// завершение сеанса и освобождение ресурсовcurl_close($ch);

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

werwap » 2012.03.24 22:15

спасибо, я с грабами не очень (не умею)

werwap » 2012.03.25 19:44

привет, немогу поставить копирайт на картинку, в чем проблема? вот

Код:

1
span style="color: #0000BB"><?php$sait='site.ru';$id=$_GET['id'];if(isset($id)){header("Content-type: image/gif");$url='http://s5.7ba.ru/video/img/'.$id;$path=pathinfo($url); header('Content-Disposition: attachment; filename="'.$path.'"');$img=imagecreatefromgif($url);$red=imagecolorallocate($img,255,2,50);imagestring($img,2,2,90,$sait,$red);echo imagegif($img); }?>
Gemorroj » 2012.03.25 20:19

pathinfo в твоем случае возвращает массив, на 7ba, на сколько я вижу, не gif, а jpeg. imagegif отправляет результат в выходной поток или пишет в файл, так что echo там не к месту.

werwap » 2012.03.25 20:42

что там сменить нужна?

werwap » 2012.03.25 20:45

нет, вот s5.7ba.ru/video/img/4964.gif

Gemorroj » 2012.03.25 20:58

Код:

1
span style="color: #0000BB"><?php<?php$sait = 'site.ru';if (isset($_GET['id'])) { header('Content-type: image/gif'); header('Cache-Control: public, must-revalidate, max-age=8640000'); header('Pragma: public'); $img = imagecreatefromgif('http://s5.7ba.ru/video/img/' . $_GET['id']); $red = imagecolorallocate($img, 255, 2, 50); imagestring($img, 2, 2, 90, $sait, $red); imagegif($img);}?>
ByVlad » 2012.03.29 11:38

Гемор подскажи как подсвечивать текст при поиске =)

ByVlad » 2012.03.29 11:53

И как можно сделать срез массива, если массив в JSON?
array_slice() не помогает

Gemorroj » 2012.03.29 12:56

ByVlad написал:

И как можно сделать срез массива, если массив в JSON?
array_slice() не помогает

ну декодируй его через json_decode и делай что хочешь.
Добавлено спустя   2 минуты  13 секунд:

ByVlad написал:

как подсвечивать текст при поиске

Код:

1
span style="color: #0000BB"><?php$search = 'text';$find = 'some text 1';echo str_replace($search, '<strong>' . $search . '</strong>', $find);
ByVlad » 2012.03.29 13:08

Gemorroj написал:

ByVlad написал:

И как можно сделать срез массива, если массив в JSON?
array_slice() не помогает

ну декодируй его через json_decode и делай что хочешь.
Добавлено спустя   2 минуты  13 секунд:

ByVlad написал:

как подсвечивать текст при поиске

Код:

1
span style="color: #0000BB"><?php$search = 'text';$find = 'some text 1';echo str_replace($search, '<strong>' . $search . '</strong>', $find);

ну так декодировал) а по-поводу подсветки, а если например два слова в запросе, а в результатах есть только одно?

Gemorroj » 2012.03.29 13:25

ByVlad написал:

ну так декодировал

ну так значит это уже никакого отношения к JSON не имеет.

ByVlad написал:

два слова в запросе

Код:

1
span style="color: #0000BB"><?php$search = 'text wap strong';$find = 'some text 1 wap 2';$replace = array();$tag = 'strong';foreach (explode(' ', $search) as $v) { if ($v == $tag) { // если искомое слово == тэгу, которым выделяем найденное, добавляем искомое слово в начало массива $replace = array_reverse($replace, true); $replace[$v] = '<' . $tag . '>' . $v . '</' . $tag . '>'; $replace = array_reverse($replace, true); } else { $replace[$v] = '<' . $tag . '>' . $v . '</' . $tag . '>'; }}echo str_replace(array_keys($replace), array_values($replace), $find);
tipsun » 2012.04.06 16:06

Я вот думал как учитывать активных/онлайн пользователей+гостей.
Чтоб потом легко было вытащить или объединить, если где надо.

Код:

1
span style="color: #0000BB"><?php/*-- Создал отдельную таблицу.CREATE TABLE IF NOT EXISTS `activity` ( `active_id` bigint(20) unsigned NOT NULL DEFAULT '0', `active_ip` varchar(15) CHARACTER SET utf8 NOT NULL, `active_browser` varchar(300) CHARACTER SET utf8 NOT NULL, `active_point` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`active_ip`,`active_browser`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;*/define('WAITING_ACTIVITY', 240);// PDO$db->prepare("REPLACE `activity` " ."SET `active_id` = '" . ((int) @$_SESSION['user_id']) . "', " ."`active_ip` = ?, " ."`active_browser` = ?, " ."`active_point` = NOW() + INTERVAL '" . WAITING_ACTIVITY . "' SECOND;" )->execute(array($_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT']));

Код:

1
span style="color: #0000BB"><?phpdefine('ACCESS', 1);require_once 'engine.php';require_once 'class.PageMan.php';$sql = 'SELECT COUNT(*) FROM `activity` WHERE `activity`.`active_point` > NOW();';$count = $db->query($sql)->fetchColumn();if ($count) { $PM = new PageMan; $PM->setCount($count); $PM->setPage($_REQUEST['page']); $limit = $PM->getTable(); $sql = 'SELECT * ' . 'FROM `activity` ' . 'LEFT JOIN `users` ON (`activity`.`active_id` = `users`.`user_id`) ' . 'WHERE `activity`.`active_point` > NOW()' . 'ORDER BY `active_point` DESC ' . 'LIMIT ' . $limit[0] . ', ' . $limit[1] . ';'; $result = $db->query($sql)->fetchAll();}else { exit('No activity');}?><?php foreach ($result as $value): ?><?php echo ($value['user_name']) ? htmlSpecialChars($value['user_name']) : 'Guest'; ?><br/><?php echo $value['active_ip']; ?><br/><?php echo htmlSpecialChars($value['active_browser']); ?><hr/><?php endforeach;?>
Gemorroj » 2012.04.06 16:16

а почему браузер и юзерагент через плейсхолдеры передаешь, а id нет?
и я не понял совсем про джоин

tipsun » 2012.04.06 16:17

Я думал зачем лишний раз гонять, в принципе, чистые данные.
Добавлено спустя   3 минуты  52 секунды:
Про джоин.
Например есть сообщение с ид пользователя, чтобы на каждый пост не лезть в базу, наверно лучше джоином сразу зацепить все необходимое.
Вот с гостями уже фиг знает. Там у всех будет ведь id = 0

Так получается вроде:

Таблица с сообщениями (Ид автора)
+
Таблица с пользователями (ИД автора = Ид пользователя)
+
Таблица с активными/онлайн (ИД автора = Ид активного пользователя)

В итоге по недалекой идее:

Имя автора (или просто гость) (он/офф)
Сообщение
- - - -
Или это все просто глупость?

Gemorroj » 2012.04.06 17:41

ну еще не глупость. но само по себе 1 запрос не всегда лучше, чем 2 более мелких. например, на крупных проектах таблицы могут разноситься по разным серверам и JOIN вообще использовать становится невозможным.

tipsun » 2012.04.06 18:09

Хмм. Понятно. Спс.

tipsun » 2012.04.06 23:50

Ну я злодей, хотел показывать активность гостей написавших сообщение, а потом подумал и :D Ахаха

Код:

1
span style="color: #0000BB"><?php$result = $db->query('SELECT `active_id` FROM `activity` WHERE `active_id` > 0 AND `active_point` > NOW();');$activity = $array = array();while ($array = $result->fetch()) { if ($array['active_id']) { $activity[$array['active_id']] = $array; }/* else { $key = md5($array['active_ip'] . $array['active_browser']); $activity[$key] = $array; }*/}$result = $db->query('SELECT * FROM `users`;');$users = $array = array();while ($array = $result->fetch()) { $users[$array['user_id']] = $array;}foreach ($users as $user) { echo $user['user_id']; echo ' '; echo isSet($activity[$user['user_id']]) ? 'On' : 'Off'; echo '<br/>';}
Akdmeh » 2012.04.07 18:10

Привет, Геморрой.
Стоит задача написать свой небольшой шаблонизатор на нейтивном php.
Вот и стоит задача импортировать с помощью функции extract в область видимости метода класса view переменные с массива.
Какие минусы этого метода, стоит ли его использовать или нет?
Компилировать шаблоны или использовать другие решения не очень-то хочется, а писать $this->array['var'] - слишком длинно.

Gemorroj » 2012.04.07 18:32

во первых, я бы настоятельно рекомендовал не велосипедить, а найти шаблонизатор по вкусу. от банальных smarty и twig до blitz и xslt.
что до extract, то в принципе, можно все сделать достаточно безопасно, если делать аккуратно, учитывая все моменты описанные в документации.

Akdmeh » 2012.04.07 18:52

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

Akdmeh » 2012.04.07 19:24

Кстати, вспомнил об одной уязвимости.
Есть файл, внутри него код:
<?php
$addr="my_file.txt\0";
echo $addr;
if(file_exists($addr.".php")) echo 'OK!';
include $addr.".php";

Результат будет отличным - мы проинклюдим файл my_file.txt, а остальная строка проигнорится!!!
То есть, как это может сработать.
Мы хотели получить от пользователя имя файла, к примеру, lol, а затем проверить, если существует файл lol.php - инклюдим его.
Но с помощью символа конца строки \0 остаток строки игнорируется, что позволит пройти проверку и подключить другой файл с другим расширением!

Вопрос - а какие еще функции подверждены этой уязвимости?

Akdmeh » 2012.04.07 19:55

Кстати, есть объект $test, он является экземпляром класса son, а son является сыном (через extends) абстрактного класса parent.

Если сделать $test instanceof parent - запрос будет работать?

Gemorroj » 2012.04.07 21:27

Akdmeh написал:

"my_file.txt\0"

на какой версии php проверял?
проверил сейчас на php 5.3.8 - не работает.
по-моему, это что-то из времен бородатого php 4.

Код:

1
span style="color: #0000BB"><?phpabstract class _parent {}class son extends _parent {}$test = new son;var_dump($test instanceof _parent); //bool(true)
Akdmeh » 2012.04.07 22:56

На какой версии:
на php 5.3.1, винда.
Попытаюсь обновить, посмотреть.
Пришли код, как проверил, посмотрю.

Gemorroj » 2012.04.08 00:03

Код:

1
span style="color: #0000BB"><?php$file = '../robots.txt';var_dump(include $file);var_dump(include $file . "\0txt");// если бага присутствует, то файл должен проинклудится
Akdmeh » 2012.04.08 00:21

Вот в чем прикол - проинклюдилось ведь.
На днях попытаюсь обновить php до последней версии с линейки 5.3, но это довольно странно...

Gemorroj » 2012.04.08 09:24

да ничего странного, 5.3.1 вышел 19 ноября 2009г. много всего уже поправили.

Akdmeh » 2012.04.12 01:15

Ого, вот это я прогнал.
Надо обновиться до последней версии с 5.3
Кстати, стабильная ли сейчас 5.4?
Хотя особо использовать не планирую, но мало ли, просто интересно.
Добавлено спустя   5 минут  20 секунд:
Вот что еще удивило:
http://windows.php.net/download/
вот здесь версии для windows.
В опциях есть только VC9 Thread Safe или non thread safe.
Что выбрать и какая разница?
Кроме того, слева на странице написано:
If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP
Do NOT use VC9 version with apache.org binaries

Я не понял, все же выбрать VC6? Ведь тем нет VC6 для php 5.3. То что выбирать? Немного меня это запутало.

Gemorroj » 2012.04.12 14:56

ну да, 5.4 стабильная. 5.4.1 в релиз кандидатах.
>> Немного меня это запутало. http://forum.ru-board.com/topic.cgi?for … opic=15377
апач лучше брать отсюда http://www.apachelounge.com/download/

Akdmeh » 2012.04.12 19:10

Как я понял, в приватных методах и свойствах принято переменную называть, начиная с нижнего подчеркивания, то есть $_var? Или метод _userFunc?

Gemorroj » 2012.04.12 19:51

В разных стандартах по разному. В PEAR, например, нет. А в Zend да.
Для проверки соответствия стандартов кодирования используется CodeSniffer.
Я лично предпочитаю Zend, да и используется он чаще.

maksimoff » 2012.04.16 13:40

Помогите переделать импорт файлов для wap-host (copy не канает!)

Код:

1
span style="color: #0000BB"><?php/** * @package JohnCMS * @link http://johncms.com * @copyright Copyright (C) 2008-2011 JohnCMS Community * @license LICENSE.txt (see attached file) * @version VERSION.txt (see attached file) * @author http://johncms.com/about */defined('_IN_JOHNCMS') or die('Error: restricted access');require('../incfiles/head.php');if ($rights == 4 || $rights >= 6) { $req = mysql_query("SELECT * FROM `down_files` WHERE `type` = 1 AND `id` = '$id' LIMIT 1"); $res = mysql_fetch_assoc($req); if (!mysql_num_rows($req) || !is_dir($res['dir'] . '/' . $res['name'])) { echo functions::display_error('Каталог не существует<br /><a href="index.php">К категориям</a>'); require('../incfiles/end.php'); exit; } $al_ext = $res['field'] ? explode(', ', $res['text']) : $defaultExt; if (isset($_POST['submit'])) { $load_cat = $res['dir'] . '/' . $res['name']; $error = array (); $link = isset($_POST['fail']) ? str_replace('./', '_', trim($_POST['fail'])) : null; if ($link) { if (mb_substr($link, 0, 7) !== 'http://') $error[] = 'Неправильная ссылка'; else $link = str_replace('http://', '', $link); } if ($link && !$error) { $fname = basename($link); $new_file = isset($_POST['new_file']) ? trim($_POST['new_file']) : null; $name = isset($_POST['text']) ? trim($_POST['text']) : null; $name_link = isset($_POST['name_link']) ? functions::check(mb_substr($_POST['name_link'], 0, 200)) : null; $text = isset($_POST['opis']) ? mysql_real_escape_string(trim($_POST['opis'])) : null; $ext = explode(".", $fname); if (!empty($new_file)) { $fname = strtolower($new_file . '.' . $ext[1]); $ext = explode(".", $fname); } if (empty($name)) $name = $fname; if (empty($name_link)) $error[] = 'Не заполнено поле.'; if (count($ext) != 2) $error[] = 'Неправильное имя файла! К отправке разрешены только файлы имеющие имя и одно расширение (<b>name.ext</b>)'; if (!in_array($ext[1], $al_ext)) $error[] = 'Запрещенный тип файла! К отправке разрешены только файлы, имеющие следующее расширение: ' . implode(', ', $al_ext); if (strlen($fname) > 30) $error[] = 'Длина названия файла и названия для сохранеия не должна превышать 30 символов'; if (preg_match("/[^\da-z_\-.]+/", $fname)) $error[] = 'В названии файла присутствуют недопустимые символы. Разрешены только латинские символы, цифры и некоторые знаки ( .()+_- ). Запрещены пробелы.'; } elseif (!$link) { $error[] = 'Вы не ввели ссылку.'; } if ($error) { $error[] = '<a href="index.php?act=import&id=' . $id . '">Повторить</a>'; echo functions::display_error($error); } else {if (file_exists("$load_cat/$fname")) $fname = $realtime . $fname; if (copy('http://' . $link, "$load_cat/$fname")) { echo '<div class="phdr"><b>Импорт файла</b></div>'; echo '<div class="gmenu">Файл выгружен</div>'; $fname = mysql_real_escape_string($fname); $name = mysql_real_escape_string(mb_substr($name, 0, 200)); mysql_query("INSERT INTO `down_files` SET `refid`='$id', `dir`='$load_cat', `time`='$realtime',`name`='$fname', `text` = '$name_link',`rus_name`='$name', `type` = '2',`user_id`='$user_id', `about` = '$text'"); $file_id = mysql_insert_id(); require('../incfiles/lib/class.upload.php'); $handle = new upload($_FILES['screen']); if ($handle->uploaded) { if (mkdir($screens_path . '/' . $file_id, 0777) == true) @chmod($screens_path . '/' . $file_id, 0777); $handle->file_new_name_body = $file_id; $handle->allowed = array ( 'image/jpeg', 'image/gif', 'image/png' ); $handle->file_max_size = 1024 * $set['flsz']; $handle->file_overwrite = true; if ($set_down['screen_resize']) { $handle->image_resize = true; $handle->image_x = 240; $handle->image_ratio_y = true; } $handle->process($screens_path . '/' . $file_id . '/'); if ($handle->processed) { echo '<div class="rmenu">Скриншот прикреплен</div>'; } else echo '<div class="rmenu">Скриншот не прикреплен: ' . $handle->error . '</div>'; } echo '<div class="menu"><a href="index.php?act=view&id=' . $file_id . '">К файлу</a></div>'; $dirid = $id; $sql = ''; while ($dirid != '0' && $dirid != "") { $res_down = mysql_fetch_assoc(mysql_query("SELECT `refid` FROM `down_files` WHERE `type` = 1 AND `id` = '$dirid' LIMIT 1")); if ($i) $sql .= ' OR '; $sql .= '`id` = \'' . $dirid . '\''; $dirid = $res_down['refid']; ++$i; } mysql_query("UPDATE `down_files` SET `total` = (`total`+1) WHERE $sql"); mysql_query("OPTIMIZE TABLE `down_files`"); echo '<div class="phdr"><a href="index.php?act=import&id=' . $id . '">Выгрузить еще</a> | '; echo '<a href="index.php?id=' . $id . '">Вернуться в категорию</a></div>'; } else echo '<div class="rmenu">Ошибка импорта.<br /><a href="index.php?act=import&id=' . $id . '">Повторить</a></div>'; } } else { echo '<div class="phdr"><b>Импорт файла: ' . functions::checkout($res['rus_name']) . '</b></div>'; echo '<div class="list1"><form action="index.php?act=import&id=' . $id . '" method="post" enctype="multipart/form-data"> Ссылка<span class="red">*</span>:<br /><input type="post" name="fail" value="http://"/><br /> Сохранить как (max. 30, без расширения):<br /><input type="text" name="new_file"/><br /> Скриншот:<br /><input type="file" name="screen"/><br /> Название файла (мах. 200):<br /><input type="text" name="text"/><br /> Ссылка для скачки файла (мах. 200)<span class="red">*</span>:<br /><input type="text" name="name_link" value="Скачать файл"/><br /> Описание (max. 500)<br /><textarea name="opis"></textarea>'; echo '<br /><input type="submit" name="submit" value="Импортировать"/></form>'; echo '</div><div class="phdr"><small>Max. вес: ' . $set['flsz'] . ' кб, расширения: ' . implode(', ', $al_ext) . ($set_down['screen_resize'] ? '<br />Скриншот будет автоматически преобразован в картинку, шириной не превышающую 240px (пропорции сохранятся)' : '') . '</small></div>'; echo '<p><a href="index.php?id=' . $id . '">Назад</a></p>'; }} else { header('Location: ' . $set['homeurl'] . '/?err');}?>
Gemorroj » 2012.04.16 15:01

что за полотно? где код, который не работает?

tipsun » 2012.04.17 21:41

Хочу, чтоб было просто, логично, практично и "быстро" идеально :)
Есть другие предложения?

Код:

1
span style="color: #0000BB"><?php/*---- Table structure for table `activity`--CREATE TABLE IF NOT EXISTS `activity` ( `active_id` bigint(20) unsigned DEFAULT NULL, `active_ip` varchar(15) NOT NULL, `active_browser` varchar(300) NOT NULL, `active_point` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`active_ip`,`active_browser`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;*/// $db = PDO Driver//+ ACTIVITY//$db->prepare("REPLACE `activity` " ."SET `active_id` = '" . ((int) @$_SESSION['user_id']) . "', " ."`active_ip` = ?, " ."`active_browser` = ?, " ."`active_point` = NOW() + INTERVAL '" . ACTIVITY_EXPIRE . "' SECOND;" )->execute(array($_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT']));//- ACTIVITY//

.
.
Может лучше удалять неактивных,
Чтоб при выборке не задавать условие `active_point` > NOW()

tipsun » 2012.04.17 21:59

Один хрен с этим INTERVAL что в DELETE, что в REPLACE.
Зато при выборке можно без лишних `active_point` > NOW()
Зато каждый раз выполняется запрос DELETE
Мдэ :D
- - - -
Что делать?

Gemorroj » 2012.04.17 22:14

чего ты к какой-то херне приколебался?) нормально все)

tipsun » 2012.04.17 22:15

Я не знаю. Бзик видимо :D
Спс, что посмотрел. :)

tipsun » 2012.04.18 19:27

Как правильно сделать?
Принимаешь данные с формы. Допустим что-то не соотв. треб. Как быть, если допустим не хочется запускать ничего лишний раз, db_connect.php как пример?

Код:

1
span style="color: #0000BB"><?phpif (isSet($_POST['auth']))$case = 1;else if (isSet($_POST['save']))$case = 2;else { $tpl->assign('error', 'auth'); $tpl->display('faceControl.form.tpl'); exit();}require_once 'engine.php'; // dbc, session, online
Gemorroj » 2012.04.18 19:46

есть такое понятие - lazy loading. т.е. грубо говоря подгрузка нужных классов по первому требованию, а не сразу.
делается через автолоадеры.

tipsun » 2012.04.18 20:12

Ок. СПС.

retsat » 2012.04.19 22:40

как сделать вивод даты на форуме вот так: Сегодня в 13:15, вчера в 13:15

retsat » 2012.04.19 22:41

привет

retsat » 2012.04.20 00:39

так не работает
if($datest > (time() - 0))
{
$date = "Сегодня";
}
else
{
if($datest > (time() - 86400))
{
$date = "Bчера";
}
}

Masternet » 2012.04.20 04:19

привет, подскажите как сделать в грабе вапоса чтоб при скачке песни в название файла вставлялся копирайт? 
как сдесь http://xmast.ru/mp3/?user=1&mid=10887

Gemorroj » 2012.04.20 10:16

retsat, что в переменной $datest?
Masternet, по ссылке не ходил, подозреваю, что через http заголовок content-disposition

retsat » 2012.04.20 10:53

в $datest записано время добавления поста time()

Masternet » 2012.04.20 11:00

напиши пожалойста пример как ето сделать?

Gemorroj » 2012.04.20 12:35

retsat

Код:

1
span style="color: #0000BB"><?php/** * Время * * @param int $t timestamp * @return string */function tm($t){ if (date('Y.m.d', $t) == date('Y.m.d', $_SERVER['REQUEST_TIME'])) { return 'Сегодня ' . date('H:i', $t); } else if (date('Y.m.d', $t) == date('Y.m.d', $_SERVER['REQUEST_TIME'] - 86400)) { return 'Вчера ' . date('H:i', $t); } else { return date('Y.m.d H:i', $t); }}

Добавлено спустя   1 минуту  50 секунд:
Masternet

Код:

1
span style="color: #0000BB"><?phpheader('Content-Disposition: attachment; filename=newNameFile.ext');readfile('http://example.com/file.ext');
POFIGISST » 2012.04.20 16:26

Блин,возникла проблема,делаю личные подарки,то есть чтоб перед тем как дарить,можно было отмечать поле "Лично" и никто не видит подарок,кроме получателя,форму добавил,в бд новое поле добавил,но вот с запросом проблема,не выполняется он( вот как я делаю

форма

Код:

1
echo '<input type="checkbox" name="publ" value="1"/> Личный<br/>';

переменная prriv

Код:

1
$prriv = ($_POST['publ']);

запрос в бд

Код:

1
mysql_query("INSERT INTO `present_give` SET `id_user` = '".$user['id']."', `id_give` = '$ank[id]', `time` ='".time()."', `id_p` ='$p[id]', `coment` ='$komm', `priv_pod` ='$prriv'");

но с таким кодом нифига не работает(( в чем моя ошибка?

Gemorroj » 2012.04.20 17:44

$prriv = ($_POST['publ']); замени на $prriv = isset($_POST['publ']) ? 1 : 0;
'$ank[id]' замени на '".$ank['id']."'
'$p[id]' замени на '".$p['id']."'
покажи структуру бд.

POFIGISST » 2012.04.20 19:45

Gemorroj , спасибо Паш,теперь норм передается единица в бд,по умолчанию я поставил там 0 , тип поставил интежер,поставил там ограничение 2 , на кол-во чисел, хотя я думаю, что это лишнее,так как туда всеравно нифига не смогут передать=)

Gemorroj » 2012.04.20 20:15

тебе там тип enum в бд нужно сделать

retsat » 2012.04.21 01:04

Gemorroj, Большое спасибо

POFIGISST » 2012.04.21 01:37

Gemorroj написал:

тебе там тип enum в бд нужно сделать

а как его делать? вот структура бд)

Masternet » 2012.04.21 02:11

Gemorroj. спасибо но ищо проблема есть, при скачке мр3 такая проблема:
Имя: wapos113299.htm
Тип: Chrome HTML Document
Источник: site.ru

Masternet » 2012.04.21 03:04

Gemorroj, сделал так:

$file = $_GET['file'];


header('Content-Type: audio/mpeg');




header('Content-Disposition: attachment; filename='.$file.'');
readfile('http://mp3.ru/'.$file.'');


а как определить вес файла? (при скачке вот что: ?Кб)

Gemorroj » 2012.04.21 10:25

на все int unsigned еще поставь.
время лучше хранить в типах БД (т.е. timestamp или datatime)
priv_pod сделать enum
подозреваю, что и индексы не расставлены...
как делать..? тыкаешь изменить и выбираешь тип данных enum
Добавлено спустя   2 минуты  12 секунд:
Masternet, отдавать заголовок content-Length
.'' - и от такого бреда нужно отвыкать

POFIGISST » 2012.04.21 20:51

Gemorroj
ток с работы пришел, поставил enum('0', '1') , там где время поставил timestamp, а int unsigned ты имеешь в виду в бд поставить? в бд я такого не нашел,или ты имеешь в виду для форм поставить?

Masternet » 2012.04.21 22:01

Gemorroj, почему нужно отвыкать? 
ну там нужна както вес определить, незнаю как, вот
header('Content-Length: '.(вес файла));

Gemorroj » 2012.04.21 23:37

POFIGISST, ну получше поищи. В остальном все так.
Masternet, потому что это абсолютно лишняя конкатенация.
Чтобы определить вес файла, нужно либо так же спарсить заголовок Content-Length с удаленного сервера (get_headers), либо перекачать файл к себе и получить размер через filesize.

POFIGISST » 2012.04.22 00:01

Gemorroj, int unsigned - это в типах он должен быть Паш?

Gemorroj » 2012.04.22 00:22

тип - int. unsigned в phpmyadmin в свойствах типа где-то.

POFIGISST » 2012.04.22 00:47

Gemorroj
нашел,unsigned в атрибутах ставится))

Masternet » 2012.04.22 18:34

Gemorroj, ясно. подскажи пожалоста функцию определения формата удаленного файла ?

Gemorroj » 2012.04.22 19:19

Masternet, нет такой функции. Определять тип можно по mime (заголовок Content-Type) или по расширению, т.к. зачастую админы/разработчики мудаки и не указывают правильный mime тип. В опере с этим долго возились, кстати.

Masternet » 2012.04.24 20:31

Gemorroj, ясно, ищо вопрос: а можна в мр3 менять теги и сразу передавать файл пользователю, (ну чтоб файл не сохранать на хосте)

POFIGISST » 2012.04.24 20:48

Masternet, можно,но я х.з как,Паша знает как это делать,а лучше при скачивании тащи файл к себе на хост,и сделай файл удаления и крон на него выставь:)

Gemorroj » 2012.04.24 21:11

Masternet, можно, но тогда, тебе все ~5-10мб файла нужно будет держать в оперативной памяти. Лучше так не делать, а просто после редактирования файл удалять, если он не нужен.
Вообще тут нужно воспользоваться какой-нибудь готовой библиотекой, типа PEAR_IDv2.

POFIGISST » 2012.04.25 10:58

Как можно сделать удаление строки из бд через определенный срок не используя крон? Например в поле в бд идет дара 29.03.2012 и нужно что через 30 дней от этой даты строка удалялась из бд,как такое можно замутить?

Gemorroj » 2012.04.25 11:33

почему не крон?

POFIGISST » 2012.04.25 12:23

Gemorroj, прост мод хочу дописать и закинуть в паблик,а на г хостах крона нет,вот и хочу сделать без крона,у мя то проблем с кроном нет,думаю о людях которые на г хостах,та еще и некоторые крон выставлять не умеют(

Gemorroj » 2012.04.25 13:40

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

POFIGISST » 2012.04.25 13:51

Gemorroj, нее,тогда пошел паблик и г хосты в жопу,сделаю на кроне,пусть юзают те у крон есть:D

POFIGISST » 2012.04.26 23:17

Пишу такой запрос в бд

$count_g1 = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `garem` WHERE `thief_id` = '".$ank['id']."'"),0);

но он не работает(( вернее выводит 0 ,где  у мя тут ошибка?

Gemorroj » 2012.04.26 23:19

ну смотри что в переменной $ank['id']

POFIGISST » 2012.04.26 23:24

Gemorroj написал:

ну смотри что в переменной $ank['id']

в переменной выводится ид юзера чья страница( только что проверил эту переменную,выводит норм ид(
Добавлено спустя   4 минуты  53 секунды:
нужно узнать какое кол-во записей есть в табле garem с  с ид который в переменке $ank['id'] (

Gemorroj » 2012.04.26 23:34

echo "SELECT COUNT(`id`) FROM `garem` WHERE `thief_id` = '".$ank['id']."'";
и структуру бд давай

POFIGISST » 2012.04.26 23:46

user_id - ид юзера кого я ворую,thief_id - мой ид,cost - цена кражи =)

Gemorroj » 2012.04.27 09:55

что echo "SELECT COUNT(`id`) FROM `garem` WHERE `thief_id` = '".$ank['id']."'"; показывает?

POFIGISST » 2012.04.27 21:15

Gemorroj , SELECT COUNT
(`id`) FROM `garem` WHERE
`thief_id` = '".$ank['id']."'  запрос выводит,через паро часов за комп сяду,попробую чуть по другому сделать)

Gemorroj » 2012.04.28 09:56

бляяять, мне покажи этот запрос!

POFIGISST » 2012.04.28 19:29

Gemorroj написал:

бляяять, мне покажи этот запрос!

SELECT COUNT(`id`) FROM `garem` WHERE`thief_id` = '".$ank['id']."'  вот что выводит)

Gemorroj » 2012.04.28 21:51

ну значит вместо id у тебя в переменной $ank['id'] какая-то хрень.

POFIGISST » 2012.04.29 22:14

Gemorroj написал:

ну значит вместо id у тебя в переменной $ank['id'] какая-то хрень.

уже разобрался с этим вопросом,там не то что я ожидал должно было выводить,там не сколько раз украден,а сколько человек ты украл должно выводить(
Добавлено спустя   4 минуты  21 секунду:
блин,такой вопрос, есть код,сказали что в нем уязвимости, проверил страницу на сайте http://find-xss.net/scanner/ ,там показало что уязвимостей нет,посмотрите пожалуйста код,дырко он или нет? вот сам код

Код:

1
span style="color: #0000BB"><?phpinclude_once '../sys/inc/start.php';include_once '../sys/inc/compress.php';include_once '../sys/inc/sess.php';include_once '../sys/inc/home.php';include_once '../sys/inc/settings.php';include_once '../sys/inc/db_connect.php';include_once '../sys/inc/ipua.php';include_once '../sys/inc/fnc.php';include_once '../sys/inc/user.php';if (!isset($user)) { $set['title'] = 'Ошибочка вышла гг'; include_once '../sys/inc/thead.php'; title(); err(); echo "<center>Система определила Вас как Гостя сайта, для полноценного пользования и просмотра сайта **** Вам необходимо пройти <a href='/aut.php'>Авторизацию</a> или <br/><a href='/reg.php'>Регистрацию</a><img src='/style/smiles/ops.gif' alt='' class='icon'/></center>"; include_once '../sys/inc/tfoot.php'; exit();}if (isset($user)) mysql_query("DELETE FROM `chat_who` WHERE `id_user` = '$user[id]'");mysql_query("DELETE FROM `chat_who` WHERE `time` < '" . ($time - 120) . "'");if (isset($user) && isset($_GET['id']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `besedka_rooms` WHERE `id` = '" . intval($_GET['id']) . "'"), 0) == 1 && isset($_GET['msg']) && mysql_result(mysql_query ("SELECT COUNT(*) FROM `user` WHERE `id` = '" . intval($_GET['msg']) . "'"), 0) == 1) { $room = mysql_fetch_assoc(mysql_query("SELECT * FROM `besedka_rooms` WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1")); $ank = mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `id` = '" . intval($_GET['msg']) . "' LIMIT 1")); if (isset($user)) mysql_query("INSERT INTO `chat_who` (`id_user`, `time`, `room`) values('$user[id]', '$time', '$room[id]')"); if ($set['time_chat'] != 0) header("Refresh: $set[time_chat]; url=/besedka/room/$room[id]/" . rand(1000, 9999) . '/'); // автообновление $set['title'] = 'Беседка - Ответ (' . mysql_result(mysql_query("SELECT COUNT(*) FROM `chat_who` WHERE `room` = '$room[id]'"), 0) . ')'; // заголовок страницы include_once 'inc/thead.php'; title(); if ($_GET['priv'] == 1) $checkbox = ' checked="checked"'; echo "<div class='tmn'>\n"; echo "<a href='/info.php?id=$ank[id]'>Посмотреть страничку</a> | <a href='/prof.php?id=$ank[id]'>анкету</a><br />\n"; echo "</div>\n"; echo "<form method=\"post\" action=\"/besedka/room/$room[id]/" . rand(1000, 9999) . "/\">\n"; echo "Сообщение:<br />\n<textarea name=\"msg\">$ank[nick], </textarea><br />\n"; echo "<label><input type=\"checkbox\"$checkbox name=\"privat\" value=\"$ank[id]\" /> Приватно</label><br />\n"; if ($user['group_access'] > 1) { echo "<label><input type=\"checkbox\" name=\"bold\" value=\"$ank[id]\" /> Жирный</label><br />\n"; echo "<label><input type=\"checkbox\" name=\"under\" value=\"$ank[id]\" /> Подчёркнутый</label><br />\n"; } if ($user['set_translit'] == 1) echo "<label><input type=\"checkbox\" name=\"translit\" value=\"1\" /> Транслит</label><br />\n"; echo 'Цвет текста <select name="color"><option value="">Стандарт</option><option value="#000000">Чёрный</option><option value="#808080">Серый</option><option value="#808000">Оливковый</option><option value="#008000">Зеленый</option><option value="#800080">Фиолетовый</option><option value="#0000FF">Синий</option><option value="#00FFFF">Голубой</option><option value="#FF00FF">Розовый</option><option value="#00FF00">Салатовый</option><option value="#FFFF00">Желтый</option><option value="#ff0000">Красный</option><option value="#e90080">Малиновый</option><option value="#008800">Хаки</option><option value="#f7bc5b">Телесный</option><option value="#446d8c">Мурена</option><option value="#b7770d">Коричневый</option></select><br/>'; echo "<input value=\"Отправить\" type=\"submit\" />\n"; echo "</form>\n"; echo "<div class=\"foot\">\n"; echo "&laquo;<a href=\"/besedka/room/6/5555/\">Назад</a><br />\n"; echo "</div>\n"; include_once '../sys/inc/tfoot.php';}if (isset($_GET['call'])) { echo "<div class=\"err\">"; echo "Вы действительно хотите вызвать модера? За вызов модера просто так Вы можете получить бан!<br />\n"; echo "<a href=\"?call2\">Да</a> \n"; echo "<a href=\"?\">Нет</a><br />\n"; echo "</div>";}if (isset($_GET['call2'])) { include 'call.php'; msg('Вы успешно вызвали модера');}if (isset($_GET['id']) && mysql_result(mysql_query("SELECT COUNT(*) FROM `besedka_rooms` WHERE `id` = '" . intval($_GET['id']) . "'"), 0) == 1) { $room = mysql_fetch_assoc(mysql_query("SELECT * FROM `besedka_rooms` WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1")); if (isset($user)) mysql_query("INSERT INTO `chat_who` (`id_user`, `time`, `room`) values('$user[id]', '$time', '$room[id]')"); $set['title'] = 'Беседка NaKnopke.Ru (' . mysql_result(mysql_query("SELECT COUNT(*) FROM `chat_who` WHERE `room` = '$room[id]'"), 0) . ')'; // заголовок страницы include_once 'inc/thead.php'; title(); include 'inc/room.php'; include_once 'roomcount.php'; include_once '../sys/inc/tfoot.php';}$set['title'] = 'Беседка'; // заголовок страницыinclude_once 'inc/thead.php';title();include 'inc/admin_act.php';err();echo "<table class='post'>\n";$q = mysql_query("SELECT * FROM `besedka_rooms` ORDER BY `pos` ASC");if (mysql_num_rows($q) == 0) { echo "Нет комнат\n";}while ($room = mysql_fetch_array($q)) { if ($num == 1) { echo "<div class='rekl_main'>"; $num = 0; } else { echo "<div class='menu_razd'>"; $num = 1; } echo "<div class='tmn'>"; echo "</div>";}include_once '../sys/inc/tfoot.php';?>

код сделал более читаемым=)

Gemorroj » 2012.04.30 11:31

не понятно откуда берется $ank, $user и $room.
echo "Сообщение:<br />\n<textarea name=\"msg\">$ank[nick], </textarea><br />\n"; // где htmlspecialchars?

tipsun » 2012.04.30 16:46

Gemorroj написал:

есть такое понятие - lazy loading. т.е. грубо говоря подгрузка нужных классов по первому требованию, а не сразу.
делается через автолоадеры.

Типа этого:

Код:

1
span style="color: #0000BB"><?php// функция автоматической загрузки классовfunction dcmsAutoload($className) { $path = $className . '.php'; //if (file_exists($path)) { require_once ($path); //}}// регистрируем функцию для автоматической загрузки классовspl_autoload_register('dcmsAutoload');$class = new ClassName1;$class = new ClassName2;$class = new ClassName3;
POFIGISST » 2012.04.30 16:56

echo "Сообщение:<br /><textarea name='msg'>".htmlspecialchars($ank[nick])."</textarea><br />"; вот так тогда?

tipsun » 2012.04.30 17:03

Код:

1
span style="color: #0000BB"><?phpecho 'Сообщение:<br /><textarea name="msg">' . htmlspecialchars($ank['nick']) . '</textarea><br />';
Gemorroj » 2012.04.30 17:44

tipsun, да, только лучше обернуть функцию в класс

tipsun » 2012.04.30 21:57

Эмм, так?

Код:

1
span style="color: #0000BB"><?php//+ LAZYLOAD//class LazyLoad{ const PRE = 'class.', EXT = '.php'; public static function get ($className) { require_once self::PRE . $className . self::EXT; }} spl_autoload_register('LazyLoad::get');//- LAZYLOAD//
POFIGISST » 2012.04.30 22:06

htmlspecialchars обрабатывает переменную $ank[nick] ,то есть ник,а сам текст сообщения не нужно обрабатывать?

Gemorroj » 2012.04.30 22:08

ну, лучше не статикой.

Код:

1
span style="color: #0000BB"><?php class LazyLoad{ const PRE = 'class.', EXT = '.php'; public function load ($className) { require_once self::PRE . $className . self::EXT; }}spl_autoload_register(array('LazyLoad', 'load'));
tipsun » 2012.04.30 22:09

Gemorroj, ух круто. :) Спс.

Gemorroj » 2012.04.30 22:10

POFIGISST, ну нужно, наверное. Только я его в коде твоем не вижу что-то.

tipsun » 2012.04.30 22:14

Требует статику :)

Показать/Скрыть
Fatal error: Uncaught exception 'LogicException' with message 'Passed array specifies a non static method but no object' in L:\home\tt.php\www\engine.php:96 Stack trace: #0 L:\home\tt.php\www\engine.php(96): spl_autoload_register() #1 L:\home\tt.php\www\index.php(5): require_once('L:\home\tt.php\...') #2 {main} thrown in L:\home\tt.php\www\engine.php on line 96

POFIGISST » 2012.04.30 22:15

Gemorroj, я сам нихера найти не смог где переменная текста идет,сеня полажу по инклюдам)

tipsun » 2012.04.30 22:30

Код:

1
span style="color: #0000BB"><?php//+ LAZYLOAD//class LazyLoad{ const DIR = 'classes/', PRE = 'class.', EXT = '.php'; public static function load ($className) { require_once self::DIR . self::PRE . $className . self::EXT; }}spl_autoload_register(array('LazyLoad', 'load'));//- LAZYLOAD//
Akdmeh » 2012.05.04 19:47

Кстати, тема немного оффтопная.
Смотрел ли ты код phpbb-wap 7 и что ты о нем думаешь?
Имеет ли право на жизнь этот скрипт в наше время?;)

Gemorroj » 2012.05.04 21:23

давно очень смотрел. не 7, а 4 вроде. любой скрипт имеет право на жизнь, если он востребован. код этого форума много хуже, например.

Akdmeh » 2012.05.06 11:49

Даже так? Интересно:)))
Почему-то думал, что с этим форумом лучше дела обстоят.

POFIGISST » 2012.05.06 15:28

А почему тогда этот скрипт поставил? Выделение из кучи г форумов?

Akdmeh » 2012.05.06 18:33

Если я не ошибаюсь, когда он этот форум ставил, тогда и близко засилья phpbb-wap не было, а только начиналось.

POFIGISST » 2012.05.06 19:19

Мне этот форум больше нравиться чем phpbb,ничего лишнего,просто форум) хотя Паша мог бы и свой скрипт написать и лучше чем phpbb, ну всмысле по коду)

tipsun » 2012.05.06 23:39

А мне он перестал нравиться, как только я взглянул на него изнутри :|
Но дизайн бомба! LEXIN молот.

POFIGISST » 2012.05.07 15:16

как можно сделать чтоб поисковики не видели счетчик мобтопа ? сделал вот так

Код:

1
echo '<center><script type="text/javascript" src="http://mobtop.ru/c/29532.js"></script><noscript><span class="linkrep" title="/some-page"><a href="http://mobtop.ru/in/29532"></span><img src="http://mobtop.ru/29532.gif" alt="MobTop.Ru - Рейтинг и статистика мобильных сайтов"/></a></noscript></span>';

но боты всеравно видят ссыль на мобтоп(

tipsun » 2012.05.07 16:48

Хотел посмотреть какие загрузчики бывают.
Вот наткнулся на такой и другой.
Вопрос: кодеру придется этот класс запустить, чтоб класс зарегистрировал себя как автозагрузчик?
- - - -
Вроде 1 класс по 1й ссыле регится сам.
А для другого уже нет, так?

Gemorroj » 2012.05.07 18:33

1 какой-то нагроможденный. особо не вижу смысла в логировании, когда есть функция get_required_files.
2 мне симпатичнее, но вот эта строка preg_replace('#_#', '\\', $className); вымораживает.
для примера, мой рабочий велосипед.

Код:

1
span style="color: #0000BB"><?php/** * Класс реализации autoload * * @author Anton Polumiskov * @copyright 2011 * */class Autoloader{ protected static $_instance = null; protected function __clone() { } /** * Конструктор */ protected function __construct() { self::restore(); } /** * Объект автолоадера * * @return Autoloader */ public static function getInstance() { if (self::$_instance === null) { self::$_instance = new self; } return self::$_instance; } /** * Возвращаем автолоадер * * @return boolean */ public function restore() { //if (self::$_instance !== null) { return spl_autoload_register(array($this, '_register')); //} } /** * Снимаем с регистрации * * @return boolean */ public function unregister() { if (self::$_instance !== null) { return spl_autoload_unregister(array($this, '_register')); } return true; } /** * Подклчение классов * * @param string $name */ protected function _register($name) { require __DIR__ . '/' . str_replace('_', '/', $name) . '.class.php'; }}?>

вызывается примерно так

Код:

1
span style="color: #0000BB"><?phprequire_once __DIR__ . '/API/Autoloader.class.php';Autoloader::getInstance();?>
tipsun » 2012.05.07 18:35

Ок. СПС.

POFIGISST » 2012.05.25 15:52

Помогите создать форму для ввода чисел,и чтоб то число которое вводят в форму заносилось в переменную,хочу сделать у ся на сайте переход по страницам чтоб вводишь номер страницы и переходишь на нее, ссылка для перехода идет так "http://адрес.ру/?sort=time&page=номер страницы" и вот где номер страницы я хочу всунуть переменную которую вводят в форму) вчера пробовал,но чет нихера не получилось(

делал так

Код:

1
2
3
echo "<br/><input type=\"text\" name=\"num\" maxlength=\"50\" value=\"\"/><br/>";
 
$num = $_POST["num"] ;

Ну и потом переменную $num вставлял в адрес где идет номер страницы,но не работает(

Gemorroj » 2012.05.25 17:43

данные передаются из формы, а не просто из инпутов

POFIGISST » 2012.05.25 18:22

Это тогда вот так будет

Код:

1
2
3
echo '<form method="post" enctype="text/plain">';
echo "<input type=\"text\" name=\"num\" maxlength=\"50\" value=\"\"/><br/></form>";
$num = $_POST["num"] ;

?

Gemorroj » 2012.05.25 18:58

text/plain там при чем??

POFIGISST » 2012.05.25 19:03

Ты прав, enctype="text/plain та не нужно,ведь там ток числа будут срабатывать,а какой тип тогда там ставить? или вообще никакого не нужно?

Gemorroj » 2012.05.25 19:51

http://htmlbook.ru/html/form/enctype
application/x-www-form-urlencoded

Akdmeh » 2012.05.31 13:12

Привет!
Вопрос по подготовленным выражениям в mysqli.
Есть ли разница, если я все параметры буду передавать как s, а не i?
К тому же, можно ли вызывать bind_param несколько раз (заранее неизвестно количество входных параметров)?

Gemorroj » 2012.05.31 13:30

на чет mysqli не уверен, но в PDO как минимум в обрамлении кавычками разница при указании параметра как int или string.
bind_param - попробуй, с ходу не скажу, т.к. mysqli не использую.

Akdmeh » 2012.05.31 17:29

Пока решил, что не стоит в это лезть=)
Кстати, плохо ли то, что я передаю объект с соединением mysqli во все модели, или объекты передаются по ссылке? (вот никак не могу вспомнить)

Gemorroj » 2012.05.31 18:31

модель работы с бд хорошо ложится на логику синглтона.
т.е. получение объекта работы с бд может выглядеть как $db = DB::getInstance();

Akdmeh » 2012.05.31 21:27

Я знаю.
Но мне совсем не сложно передавать sql в модель, это позволит, к примеру, подключится к разным базам данных.
Этот функционал у меня есть, но я его решил не использовать

Gemorroj » 2012.05.31 22:47

для подключения к разным бд, мне кажется, лучше сделать что-то типа DB::getBlog(); DB::getForum();

Akdmeh » 2012.06.01 13:28

Ладно, я понял, это все очень интересно.
_________________
Есть вот какой вопрос.
Представь, что есть таблица Users, в которой хранятся только самые важные данные - логин, пароль, хэш, емейл, к примеру.
Но есть и другие настройки пользователя, тысячи их: настройки количества постов на страницу, анкетные данные и прочее, прочее, прочее.
Казалось бы, бери да добавляй дополнительные столбчики в таблицу Users да не знай проблем.
Но:
Их могут добавлять разные модули, что само по себе проблема (вдруг в модулей совпадут названия колонок, ведь все модули не проследишь, и не смотря на соглашение о наименовании столбцов, могут найтись криворукие), а в самом ActiveRecord классе количество столбцов не динамично, а строго вписывается в файл (чтобы каждый раз не запрашивать в базы данных существующие столбцы). Я понимаю, что сам себя загнал в слегка неудобную архитектуру, при которой дописывание столбцов требует изменение файла с моделью, что при динамичных модулях становится невозможным. В принципе, решить эту проблему можно, просто переписав метод, который возвращает список столбцов для конкретной модели, заставляя список колонок брать именно с базы данных, тратя на это еще один запрос.

Как вариант я подумал, что можно создать таблицу settings с подобной структурой: id_user, module, parameter_name, parameter_value.
Это позволит любому модулю хранить свои настройки, не изменяя самой структуры главной таблицы users.
С минусов, какие мне показались - возможная потеря производительности (ведь надо запросить не одну строчку, а несколько записей с достаточно огромной таблицы).

Как ты считаешь - заниматься ли дописыванием столбцов в таблице Users, или все же лучше создать отдельную таблицу с конфигурацией пользователей, а в Users хранить самые базовые данные, которые касаются только авторизации?
Буду благодарен за твою точку зрения на этот вопрос.

Gemorroj » 2012.06.01 14:22

в процессе чтения зацепилось внимание за фразу "заставляя список колонок брать именно с базы данных, тратя на это еще один запрос". но ведь эти метаданные можно и нужно кэшировать. а кэш чистить скриптом по требованию.
на счет альтернативного варианта - да, вполне вариант и производительность повышается все тем же кэшированием.
что лучше однозначно сказать мне сложно. 2 вариант, например, используется в sea. довольно удобно и расширение проходит абсолютно безболезненно. 1 вариант, по памяти вспоминаю, в других не публичных проектах. При относительно небольшом и редко меняющемся кол-ве столбцов проблем не создает, в принципе.

Akdmeh » 2012.06.01 14:58

//Гм, о том, чтобы писать это в кеш - я даже и не подумал. Кеш имеешь в виду файловый, а по возможности - на средства типа eAccelerator или memcache?
Просто именно поэтому я и решил писать метаданные прямо в файл. Ведь модель вообще редко меняется, а для тех, которые изменяются - можно как раз и использовать кеш. Неплохая идея ведь!:)
Я конечно думал о кешировании, это бесспорно. Но хорошее кеширование - это memcache (не так ли?), а Армеру придется переежать на VDS. Поэтому пока что буду без него, думаю, проект справится на первых порах, а может и вообще отлично будет справлятся. Участки, которые можно кешировать - я отмечаю.

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


//Кратко о своей модели - просто список полей возвращает определенная функция. Ей ничто не мешает запрашивать метаданные с базы или просто с кеша, но в большинстве случаев я просто возвращаю массив со списком столбцов.

Вот за это я и люблю свои велосипеды - это заставляет тебя думать над проблемами, искать их решение, а работа программиста - это как раз на 95% - решение интересных задач.
Писал бы я на готовом фреймворке - я бы об этом никогда не задумывался:)

Еще раз спасибо!

Gemorroj » 2012.06.01 15:11

Akdmeh, ну memcache или просто файловый кэш - это уже вопрос того, сколько прослоек ты напишешь..)

Akdmeh написал:

Писал бы я на готовом фреймворке - я бы об этом никогда не задумывался

почему же не задумывался? я вот сейчас symfony ковыряю, очень даже задумываешься по ходу над техническими решениями примененными в фреймворке.

Akdmeh » 2012.06.01 19:33

Ну ясно:)

POFIGISST » 2012.06.03 18:49

как можно блокнуть челу доступ к сайту,если ип динамический? у мя есть ip и userAgent этого чела,мне нужно ему полностью закрыть доступ к сайту)

Akdmeh » 2012.06.04 15:04

Можно в куки прописать ему, но он может догадаться, кроме того с другого браузера не будет работать бан.
Поэтому нету никаких средств это сделать кроме как банить конкретного авторизированного пользователя.

Nu3oN » 2012.06.06 17:55

Объяните мне, как так? скрипт:

Код:

1
span style="color: #0000BB"><?php$a = 90;$a += ++$a;echo $a;

Дает результат: 182
В то время как по этой же системе не другими "методами"

Код:

1
span style="color: #0000BB"><?php$a = 90 + 90;echo ++$a;///////$a = 90;$a += $a;++$a;echo $a;///////$a = 90;$a += $a + 1;echo $a;

Выдает нам уже: 181

Gemorroj » 2012.06.06 18:06

ну так собсно в этом отличие ++$i и $i++
Добавлено спустя   1 минуту  15 секунд:
А результаты разные, так как там последовательность выполнения операций другая. сначала инкремент, а потом сложение.

Nu3oN » 2012.06.06 18:14

Про постфиксы и префиксы я знал, а то-что =+ является префиксным инкрементом только сейчас...

Gemorroj » 2012.06.06 18:22

Nu3oN написал:

=+ является префиксным инкрементом

??
это просто установка знака, скорее всего.

Nu3oN » 2012.06.06 18:39

т.е наоборот

POFIGISST » 2012.06.07 02:12

Знакомый попросил накатать ему код для баннера,чтоб он был виден только для компов,ну я ему накатал такой велосипед

Код:

1
span style="color: #0000BB"><?php$gg = "Адрес баннера";if (stristr($_SERVER['HTTP_USER_AGENT'], 'Firefox')) echo $gg;elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Chrome')) echo $gg;elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Safari')) echo $gg;elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'Opera')) echo $gg;elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 8.0')) echo $gg;elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 7.0')) echo $gg;elseif (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.0')) echo $gg;?>

как это можно сделать компактнее и более удобнее ?

TLENS » 2012.06.07 02:15

Nu3oN
Кстати оператор "+=" это обычная функция на С++ можно её перегружать.
Представим что $a это объект типа int32. присваеваем с помощью метода присвоения 90
$a = 90;
а оператор "+=" это обычный метод
собственно тело метода
function method($val) {
    this->value = this->value + $val;
    return this->value;
}
Собственно если сделать:
$a->method(++$a);
приватное свойство value из-за инкремента сровняется 91 так же в методе в переменной $val будет хранится 91 что после будет приплюсовано свойству value
в результате на выходе будет 91+91
Тоже самое и с другими операторами(методами)

TLENS » 2012.06.07 02:39

POFIGISST
Используй mobile_device_detect или что то аналогичное. А то что ты написал выше это говно так как длинная конструкция с перебором каждый раз всех символов. Лучше один раз перебери и результат через свич прогони

POFIGISST » 2012.06.07 02:46

TLENS написал:

POFIGISST
Используй mobile_device_detect или что то аналогичное. А то что ты написал выше это говно так как длинная конструкция с перебором каждый раз всех символов. Лучше один раз перебери и результат через свич прогони

Чет только что поискал инфу о mobile_device_detect особо ничего на русском не нашел,ща еще буду гуглить))

Nu3oN » 2012.06.07 08:29

POFIGISST написал:

Чет только что поискал инфу о mobile_device_detect особо ничего на русском не нашел,ща еще буду гуглить))

Вот сразу же нашел http://code.google.com/p/php-mobile-detect/

TLENS » 2012.06.07 14:00

Просмотрел только что исходник. То там тоже не такой уж и быстрый код но все же правильный.

Gemorroj » 2012.06.07 14:19

TLENS, на скорость кода смотри в последнюю очередь.

TLENS » 2012.06.07 14:39

Gemorroj
Может и так а то чет помешался на ней.

TLENS » 2012.06.07 16:02

А это еще что такое?)
http://code.google.com/p/php-mobile-det … emo.php#95

POFIGISST » 2012.06.07 20:05

сделал вот так

Код:

1
2
echo '<form action="/strip/case.php?act=m_strip" method="post">
<input type="submit" value="Парни"/></div></form>';

работает,но выглядит не айс(


хочу вот так сделать

Код:

1
2
3
4
echo '<form action="/strip/case.php?act=" method="post">
<select name="go"><option value="m_strip">Парни</option>
<option value="g_strip">Девушки</option></select>
<input type="submit" value="Погнали"/></div></form>';

но так в адрес не передает имя кейса(

Nu3oN » 2012.06.08 00:22

POFIGISST,

Код:

1
span style="color: #0000BB"><?php$strAction = (! empty($_POST['go']) and $_POST['go'] == 'g_strip') ? 'g_strip' : 'm_strip';switch($strAction): case 'g_strip': echo 'girl'; break; case 'm_strip': default: echo 'men'; break;endswitch;
POFIGISST » 2012.06.08 00:34

Nu3oN них какой код:0 спс,большое!

TLENS » 2012.06.09 01:06

Nu3oN написал:

POFIGISST,

Код:

1
span style="color: #0000BB"><?php$strAction = (! empty($_POST['go']) and $_POST['go'] == 'g_strip') ? 'g_strip' : 'm_strip';switch($strAction): case 'g_strip': echo 'girl'; break; case 'm_strip': default: echo 'men'; break;endswitch;

Люблю китайцев они всегда все упрощают но иногда больше чем надо.
А у нас наоборот надо все усложнять.
Зачем перебор тернарным оператором если дальше это же обрабатывается свитчем?

Код:

1
span style="color: #0000BB"><?phpif (empty($_POST['go'])) switch($_POST['go']) { case 'g_strip': echo 'girl'; break; case 'm_strip': echo 'men'; break; default: echo 'Воно'; break; }else ; // Форма не была переданой

Даже можно обойтись и без if (empty($_POST['go'])) если не нужен обработчик на не переданную форму. При этом будут выскакивать предупреждения на них должна стоять заглушка error_reporting
Завтыкал
if (empty($_POST['go']))
Надо заменить на

if (isset($_POST['go']))

TLENS » 2012.06.09 08:49

POFIGISST написал:

сделал вот так

Код:

1
2
echo '<form action="/strip/case.php?act=m_strip" method="post">
<input type="submit" value="Парни"/></div></form>';

работает,но выглядит не айс(


хочу вот так сделать

Код:

1
2
3
4
echo '<form action="/strip/case.php?act=" method="post">
<select name="go"><option value="m_strip">Парни</option>
<option value="g_strip">Девушки</option></select>
<input type="submit" value="Погнали"/></div></form>';

но так в адрес не передает имя кейса(

А с чего оно должно передаваться в адрес если метот пост?

POFIGISST » 2012.06.09 18:32

TLENS
А чтоб в адрес передавалось нужен метод GET ?

TLENS » 2012.06.10 12:48

POFIGISST Советую тебе разобраться что где

POFIGISST » 2012.06.10 18:54

как сделать ранд не целых чисел? попробовал так $qq = mt_rand (12.7 , 15.9); но не срабатывает,выводит целые числа,а мне нужно чтоб выводило не целые(

TLENS » 2012.06.10 18:56

POFIGISST
А пробовал просто rand?

Код:

1
lt;?function myrand($start, $finish, $num = 10) { return rand (round ($start * $num), round ($finish * $num)) / $num;}$start = 11.3;$finish = 25.7;echo myrand ($start, $finish);
POFIGISST » 2012.06.10 19:00

TLENS
спасибо,работает функция)))

Gemorroj » 2012.06.10 20:46

рекомендуется, кстати, использовать mt_rand, т.к. он использует более совершенный алгоритм генерирования случайного числа.
Добавлено спустя   2 минуты  21 секунду:
Прежде, необходимо разобраться в способах генерации случайных чисел. Для этих целей в PHP существуют две функции: rand() и mt_rand(). Первая использует библиотеку libc, а вторая является реализацией генератора случайных чисел Mersenne Twister, причем mt_rand() позволяет получить более рандомные числа. Оба алгоритма относятся к детерминированным, т.е. генерируются случайные числа с определенной зависимостью между ними, иначе говоря, числа псевдослучайны. К слову, существует еще один тип генераторов, которые позволяют получить абсолютно случайные числа. Такие генераторы имеют внешний источник энтропии. Например, стандартное устройство в UNIX /dev/random генерирует случайные числа, используя внешний шум драйверов устройств. Своеобразной энтропией для генераторов псведослучайных чисел является первоначальное число или сид (seed), исходя из которого выводятся все последующие случайные числа. Например, такой код будет всегда возвращать одни и те же числа:

Код:

1
span style="color: #0000BB"><?phpmt_srand(1337);echo mt_rand()."\n";echo mt_rand()."\n";echo mt_rand();?>

При каждом запуске такого скрипта будут всегда возвращены одни и те же числа, так как все они образованы от одного сида. Как видно из примера, задать сид можно с помощью функции mt_srand() (или srand() для rand()), однако делать это вовсе не обязательно – при вызове функции mt_rand() PHP (начиная с версии 4.2.0) самостоятельно задаст первоначальное число. По умолчанию в качестве сида, как для rand(), так и для mt_rand(), PHP задает 32 битный dword (или 4294967295 – максимальное значение для типа данных integer). Как отмечает Стефан, для реализации криптографических операций этого недостаточно. Однако в большинстве случаев такое первоначальное число способно обеспечить достаточную безопасность, даже несмотря на то, что веб-приложения продолжают использовать rand() и mt_rand() для генерации паролей, активационных ссылок, cookie для автоматического входа и идентификаторов сессии. Тем не менее, при особых условиях подбор сида становится вполне осуществимым или даже совсем не нужным.
---
скопипащено из интернетов

TLENS » 2012.06.11 04:52

Gemorroj
Завтра почитаю подробнее. Но не пойму зачем нужны семя для рандомов в php вед семья автоматически меняется при каждом вызове.
Ладно утро вечера мудренее.

Nu3oN » 2012.06.13 00:42

Нужен класс для работы с бд (желательно основанный на PDO) что бы строить запросы в объектно ориентированном виде...

Код:

1
span style="color: #0000BB"><?php$database -> select('table') -> where('pole', $var) -> limit('1', '19');// или$database -> name = 'table';$databese -> where = array('pole', $var)$database -> limit = 1;$database -> select();

Смотрел в сторону DB_DataObject но что-то мне не понравился синтаксис...
Добавлено спустя    57 секунд:
Просто самому лень такую прослойку писать... Слишком геморойно, да и зачем изобретать велосипед...

Gemorroj » 2012.06.13 10:17

Nu3oN, стандартный ответ - Doctrine2 (можно взять только DBAL) или Propel.

Akdmeh » 2012.06.14 23:06

Вот вижу в Kohana подобный код:
public static function factory($file = NULL, array $data = NULL)
{
    return new View($file, $data);
}

Возник вопрос - зачем использовать фабрику, если это - обычный вызов объекта?

Gemorroj » 2012.06.14 23:16

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

Akdmeh » 2012.06.15 00:14

Ну а если в общем - для чего используются фабрики?
Типа вызов объекта с дополнительными параметрами?

Gemorroj » 2012.06.15 00:42

во, вроде клевое описание) http://irbis-team.com/15/23/2

POFIGISST » 2012.06.15 19:48

Блин,делаю запрос в бд с рандомным выбором из бд,ставлю лимит на вывод 5,но чет не срабатывает,выводит только 1 поле( в чем ошибка у мя в запросе?
вот собсно запрос

Код:

1
$hit = mysql_fetch_array(mysql_query("SELECT * FROM `info` ORDER BY RAND() LIMIT 5"));
Gemorroj » 2012.06.15 20:53

Код:

1
span style="color: #0000BB"><?php$q = mysql_query("SELECT * FROM `info` ORDER BY RAND() LIMIT 5");while ($row = mysql_fetch_assoc($q)) { print_r($row);}
POFIGISST » 2012.06.15 21:04

Gemorroj написал:

Код:

1
span style="color: #0000BB"><?php$q = mysql_query("SELECT * FROM `info` ORDER BY RAND() LIMIT 5");while ($row = mysql_fetch_assoc($q)) { print_r($row);}

Огромное спасибо))

POFIGISST » 2012.06.16 00:14

А с таким кодом можно сделать листинг? или нужно код менять для листинга?

Код:

1
span style="color: #0000BB"><?phpinclude 'head.php';include 'db.php';$today = date("j/n/Y"); $q = mysql_query("SELECT * FROM `info` ORDER BY 'id' DESC LIMIT 5");while ($row = mysql_fetch_assoc($q)) { echo '<div class="gmenu2"><br><br>'; echo "<b>Имя:</b> $row[name] <br>"; echo'<img src="' . $row['url'] .'"alt="*" width="70" height="60" /><br>'; echo "<b>Описание:</b> $row[opis] <br>"; echo "<b>Скачали:</b> $row[kols] <br>"; echo "<b>Добавлено:</b> $today <br>"; echo "<a href ='/ko.php'> <b>Комментарии: </b></a>(2)<br>"; echo "<a href ='/download.php'> <b>Скачать</b></a> $row[ves] (Мб.) "; echo '</div>';}?>
Gemorroj » 2012.06.16 00:22

не понял вопроса.
в коде есть проблемы.

POFIGISST » 2012.06.16 00:31

Gemorroj написал:

не понял вопроса.
в коде есть проблемы.

ну я хочу сделать чтоб было по страницам,на каждой странице чтоб выводило по 5 файлов,смотрел примерно как это делается,но нифига не понял,там в коде который я смотрел лимит идет не так как у меня,и функция листинга там написана, но её я тож не смог понять(

tipsun » 2012.06.16 11:12

POFIGISST, 2 запроса надо.
MySQL забыл совсем. Сейчас вспомню, напишу полностью.

Код:

1
span style="color: #0000BB"><?phprequire_once 'head.php';require_once 'db.php';$today = date("j/n/Y");$count = mysql_result(mysql_query('SELECT COUNT(1) FROM `info` LIMIT 1;', $db), 0);if ($count) { require_once 'PageMan.class.php'; // На форуме тут есть этот класс или возьми любой другой. У ZF например есть лучше. $PageMan = new PageMan; $limit = $PageMan->setCount($count) ->setPage($_REQUEST['page']) ->getTable(); $q = mysql_query('SELECT * FROM `info` ORDER BY `id` DESC LIMIT ' . $limit[0] . ', ' . $limit[1] . ';'); while ($row = mysql_fetch_assoc($q)) { echo '<div class="gmenu2"><br/><br/>' . '<b>Имя:</b> ' . $row['name'] . ' <br/>' . '<img src="' . $row['url'] . '" alt="*" width="70" height="60" /><br/>' . '<b>Описание:</b> ' . $row['opis'] . ' <br/>' . '<b>Скачали:</b> ' . $row['kols'] . ' <br/>' . '<b>Добавлено:</b> ' . $today . ' <br/>' . '<a href ="/ko.php"> <b>Комментарии: </b></a>(2)<br/>' . '<a href ="/download.php"> <b>Скачать</b></a> ' . $row['ves'] . ' (Мб.)' . '</div>'; } //+ ссылки для навигации по страницам.}
Nu3oN » 2012.06.16 13:14

а что за лажа с тудэй? или я не так понимаю принцип вывода?

tipsun » 2012.06.16 14:25

Там и комментов всегда (2) :)

Код:

1
span style="color: #0000BB"><?php$today = date('j/n/Y');echo '<b>Добавлено:</b> ' . $today . ' <br/>';

Аля обновления каждый день :D

POFIGISST » 2012.06.16 14:57

tipsun написал:

Там и комментов всегда (2) :)

Код:

1
span style="color: #0000BB"><?php$today = date('j/n/Y');echo '<b>Добавлено:</b> ' . $today . ' <br/>';

Аля обновления каждый день :D

комментарии у мя идут из массива с рандомным выбором,там их всегда 2 выводит,как бы 1 ком от девченки и другой от мужика  =D  , каждый файл свеженький,ток сегодня добавлен типа:D

POFIGISST » 2012.06.16 15:41

tipsun
эт тут он Функция навигации по страницам класс PageMan ? =)

tipsun » 2012.06.16 16:35

Да. Там и примеры есть (на 15 стр. вроде).
Вот видимо готовый архив: http://wapinet.ru/forum/wap/viewtopic.p … 166#p22166

POFIGISST » 2012.06.16 16:57

tipsun написал:

Да. Там и примеры есть (на 15 стр. вроде).
Вот видимо готовый архив: http://wapinet.ru/forum/wap/viewtopic.p … 166#p22166

Спасиб,скачал,ща ссылки буду ставить ))

tipsun » 2012.06.16 17:00

Вот из примера возьми. Или в теме пример смотри.

Код:

1
span style="color: #0000BB"><?php$pages = $PageMan->getPageRangeSimple();$currentPage = $PageMan->getPage();foreach ($pages as $page) { if ($currentPage == $page) { echo '<span class="nowPage">' . $page . '</span>'; } else { echo '<span class="pageRange"><a href="?page=' . $page . '&amp;">' . $page . '</a></span>'; }}
tipsun » 2012.06.16 17:13

Или проще: curPage - 1 | curPage + 1
+
Форма быстрого перехода.
Самый экономный вариант :)

POFIGISST » 2012.06.16 17:29

tipsun
Ооо,работает,ваще огонь)) спс большое)))

tipsun » 2012.06.16 17:56

Рад, что кому-то, кроме меня, мой класс пригодился :D

tipsun » 2012.06.17 19:02

Где-то видел такое вот, как называется даже не знаю.
Типа:

Код:

1
span style="color: #0000BB"><?php(Fishka $string);

Типа фишка проверяет переменную, или что-то в этом роде. Типа самописный класс проверяет эту переменную.
Если такого нет, то есть где-то готовый набор валидации или парсинга?
Добавлено спустя   1 минуту  41 секунду:
На хабре кажется видел.

Gemorroj » 2012.06.17 19:22

ну.. ограниченная проверка типов в php есть.
можно в методах и функциях указывать имя класса или array (возможно еще что-то, уже не помню).
в твоем случае это больше на instanceof похоже.

tipsun » 2012.06.17 19:23

А в принципе у PHP есть встроенные ресурсы filter_var().

Gemorroj » 2012.06.17 19:24

http://www.php.net/manual/ru/language.o … inting.php

tipsun » 2012.06.17 19:27

Да, что-то похожее. СПС.

tipsun » 2012.06.19 15:12

Какой путь является правильным?

Код:

1
span style="color: #0000BB"><?php// Путь #1function wayFirst (){ global $db;}class wayFirst{ protected $_db; public function __construct (/* global or from here */ $db) { global $db; $this->_db = $db; }}// Путь #2function wayAnother (){ $db = DB::singleton(); $db->query();}class wayAnother{ protected $_db; public function __construct () { $this->_db = DB::singleton(); }}
Gemorroj » 2012.06.19 15:55

что за global $db??? убирай это.

POFIGISST » 2012.06.23 22:58

делаю вывод поля из бд,но чет не как не выводит его =D  посмотрите пожалуйста в чем ошибка ((

Код:

1
span style="color: #0000BB"><?php/** * подключение к бд */$db=mysql_connect('localhost','юзер','пасс') or die(mysql_erorr());mysql_select_db('имя бд',$db) or die(mysql_erorr());/** * запрос */$kol = mysql_fetch_assoc(mysql_query(" select `sca` from users where `id`=1 limit 1"));//ну и сама переменная echo $kol;

но переменная пустая,не пойму почему,вытаскиваю поле sca из таблицы users где ид равен 1  (




З.Ы. в подключении данные у мя вписаны,это тут я их скрыл)

TLENS » 2012.06.23 23:05

POFIGISST
echo mysql_error();

POFIGISST » 2012.06.23 23:10

TLENS написал:

POFIGISST
echo mysql_error();

проверил

Unknown column 'sca' in 'field list'

в этой таблице нет такой колонки,но она там точно есть(


мля,ошибся,там не sca идет поле,а ska,но теперь выводит пустое слово Array (

TLENS » 2012.06.23 23:45

POFIGISST
Значит это массив  var_dump($kol); или print_f($kol);

POFIGISST » 2012.06.23 23:57

TLENS написал:

print_f($kol);

функция print_r вродь не для массивов,для массивов идет print_r  =)

TLENS » 2012.06.24 00:01

Спутал с форматным выводом

POFIGISST » 2012.06.24 00:05

TLENS написал:

Спутал с форматным выводом

уже разобрался,нормик все выводит,спс за помощь в аське))

tipsun » 2012.06.24 00:24

Gemorroj, почему, в твоем велике автолоадера/lazyload, в конструкторе обычный метод вызывается как статический? Проведи ликбез, пожалуйста.

Gemorroj » 2012.06.24 01:48

хз. в каком именно?

tipsun » 2012.06.24 10:20

Gemorroj, в этом.

Gemorroj » 2012.06.24 12:16

хз, честно говоря. зачем-то реализован синглтон.
а почему именно статический..? ну так. мне показалось так симпатишней.

tipsun » 2012.06.24 18:46

Gemorroj, а зачем в методе unregister условие?
Все равно конструктор закрыт. Путь только через метод singleton(), или я ошибаюсь?

Gemorroj » 2012.06.24 19:53

tipsun, да, похоже ты прав. условие там не нужно.

POFIGISST » 2012.06.27 02:25

даж не знаю в нужной ли теме пишу,но задача такая,нужно сделать автоматическое перенаправление через определенное время,поюзал инет,нашел там 2 метода,но там идет через HTML - META-тег REFRESH, вот так

Код:

1
<meta HTTP-EQUIV="Refresh" CONTENT="10;URL=http://трутуту">

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

Код:

1
header("Refresh:10; url=трутутуту");

еще нашел как делать через javascript , но на теле javascript не работает,так вот,какие способы еще есть решить такую задачу с переадресацией через заданное время?

tipsun » 2012.06.27 09:09

POFIGISST написал:


Код:

1
header("Refresh:10; url=http://site.ru");

А без пробела пробовал?

Код:

1
header('Refresh:10;url=http://site.ru');
TLENS » 2012.06.27 12:46

POFIGISST написал:

даж не знаю в нужной ли теме пишу,но задача такая,нужно сделать автоматическое перенаправление через определенное время,поюзал инет,нашел там 2 метода,но там идет через HTML - META-тег REFRESH, вот так

Код:

1
<meta HTTP-EQUIV="Refresh" CONTENT="10;URL=http://трутуту">

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

Код:

1
header("Refresh:10; url=трутутуту");

еще нашел как делать через javascript , но на теле javascript не работает,так вот,какие способы еще есть решить такую задачу с переадресацией через заданное время?

Используй метатег и не выдумывай.

POFIGISST » 2012.06.27 17:16

tipsun
неа,не пробовал,я сделал через метатег ))
Добавлено спустя   2 минуты  42 секунды:
TLENS
я через него и сделал:-D

tipsun » 2012.06.28 13:41

tipsun написал:

POFIGISST написал:


Код:

1
header("Refresh:10; url=http://site.ru");

А без пробела пробовал?

Код:

1
header('Refresh:10;url=http://site.ru');

POFIGISST написал:

tipsun
неа,не пробовал,я сделал через метатег ))

А зря, работает (проверил).

POFIGISST » 2012.06.28 16:38

tipsun
ты прав,работает если без пробела,спасибо,учту этот способ))
-------------------------

З.Ы. твой код который ты мне недавно скинул для постраничной навигации еще раз мне пригодился))

tipsun » 2012.06.28 18:43

POFIGISST, очень рад :)

Merzavetz » 2012.07.11 13:48

Подскажите пожалуйста, как сделать чтобы один файл коннектился к нескольким сайтам?
Вот код:

Код:

1
lt;? for ($start=0, $end=10; $start <= $end; $start++) { file_get_contents("http://site.net"); } ?>

Сейчас он коннектится только к site.net.

Gemorroj » 2012.07.11 14:06

Код:

1
span style="color: #0000BB"><?php$array = array( 'http://vk.com', 'http://wapinet.ru', 'http://microsoft.com',);foreach ($array as $v) { file_get_contents($v); } ?>
Merzavetz » 2012.07.11 14:18

Gemorroj, спасибо большое)
А количество обращений к сайту как установить? В моем примере было 10 коннектов, в твоем все работает, но делается только один коннект(

Gemorroj » 2012.07.11 15:41

Код:

1
span style="color: #0000BB"><?php$array = array( 'http://vk.com', 'http://wapinet.ru', 'http://microsoft.com',);foreach ($array as $v) { for ($i = 0; $i <= 10; ++$i) { file_get_contents($v); }}?>
Merzavetz » 2012.07.11 16:46

Gemorroj, спасибо еще раз большое! Очень помогло.

POFIGISST » 2012.07.19 22:37

помогите пожалуйста исправить ошибку,выдает ошибку в первой строке,но я не пойму почему там ошибка,по моему вродь синтаксис функции if идет норм то есть if (условие) {вывод}  (

Код:

1
span style="color: #0000BB"><?phpif ($user[level] => 1){ if (isset($_GET['act']) && $_GET['act'] == 'delete' && $l != '/') { echo "<div class=\"err\">"; echo "Удалить файл \"$file_id[name]\"?<br />\n"; echo "<a href='?showinfo&amp;act=delete&amp;ok'>Да</a> \n"; echo "<a href='?showinfo'>Нет</a><br />\n"; echo "</div>"; } else { echo "<div class=\"foot\">\n"; echo "<a href='?showinfo&amp;act=delete'>Удалить файл</a><br />\n"; echo "</div>\n"; }}?>
Gemorroj » 2012.07.19 22:43

$user[level] -> $user['level']
$file_id[name] -> $file_id['name'], вероятно, еще тут htmlspecialchars нужен.

POFIGISST » 2012.07.19 22:48

Gemorroj написал:

$user[level] -> $user['level']
$file_id[name] -> $file_id['name'], вероятно, еще тут htmlspecialchars нужен.

$file_id[name] вообще убрал,оно там не нужно,а это $user[level] -> $user['level'] сделал,но phpdesigner все равно ошибку светит( раньше там был код вот такой

Код:

1
span style="color: #0000BB"><?phpif (user_access('obmen_file_delete')){ if (isset($_GET['act']) && $_GET['act'] == 'delete' && $l != '/') { echo "<div class=\"err\">"; echo "Удалить файл \"$file_id[name]\"?<br />\n"; echo "<a href='?showinfo&amp;act=delete&amp;ok'>Да</a> \n"; echo "<a href='?showinfo'>Нет</a><br />\n"; echo "</div>"; } else { echo "<div class=\"foot\">\n"; echo "&raquo;<a href='?showinfo&amp;act=delete'>Удалить файл</a><br />\n"; echo "</div>\n"; }}?>

я только первую строку заменил(

POFIGISST » 2012.07.19 23:02

стыдно( и кстать стыдно должно быть не только мне:D еллементарная ошибка( моя не внимательность( не так

if ($user['level'] => 1);

а так

if ($user['level'] >= 1);

=(

З.Ы. Ошибка была double arrow -> двойная стрелка( баран я(

tipsun » 2012.07.23 22:08

Что делать, если смарти и автолоадер не дружат?

Gemorroj » 2012.07.23 22:14

подружить)
чем они не дружат?

tipsun » 2012.07.23 22:16

Мой ленивец в смарти лезет.
Я вроде там (в автолоадере) делал замену '_' => '/'. Наверно поэтому.
Можно наверно проверку там сделать, если нет такого, то загрузить как обычно.

Gemorroj » 2012.07.23 23:01

а где в смарти _ ?

tipsun » 2012.07.23 23:33

W:\home\tt.php\www\trunk\includes\library\Smarty_Internal_TemplateCompilerBase.php у меня не может загрузиться.
Я сделал так:
- Папка с классами лежит тут: includes\library
- Папка со смарти: includes\library\Smarty
- Ленивец: includes\library\LazyLoad.class.php

Код:

1
span style="color: #0000BB"><?php//Ленивецclass LazyLoad{ const EXT = '.class.php'; private $_status, $_dir; protected static $_instance; private function __clone () {} private function __wakeup () {} public static function singleton () { if (null === self::$_instance) { self::$_instance = new self; } return self::$_instance; } protected function __construct () { $this->_dir = dirname(__FILE__); } public function register () { if (! $this->_status) { return $this->_status = spl_autoload_register(array($this, '_loader')); } } public function unregister () { if ($this->_status) { return ! $this->_status = ! spl_autoload_unregister(array($this, '_loader')); } } private function _loader ($className) { require_once $this->_dir . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $className) . self::EXT; }}
tipsun » 2012.07.23 23:53

Я без замены '_' => '/' тоже пробовал. Не получается.
Добавлено спустя   5 минут  22 секунды:
Почему именно я сказал, что не дружат - расширение мое:

Показать/Скрыть
W:\home\tt.php\www\trunk\includes\library\Smarty\Internal\TemplateCompilerBase.class.php
W:\home\tt.php\www\trunk\includes\library\Smarty_Internal_TemplateCompilerBase.class.php
Находится этот файл тут:
W:\home\tt.php\www\trunk\includes\library\Smarty\sysplugins\smarty_internal_templatecompilerbase.php

tipsun » 2012.07.24 01:05

Если я правильно понял пост #2, то это есть решение проблемы:
www.smarty.net/forums/viewtopic.php?t=16819

tipsun » 2012.07.24 04:43

Жестко тупил [это мое обычное состояние], но потом, методом тыка, получилось.

Код:

1
span style="color: #0000BB"><?php// common.phpLazyLoad::singleton()->register();// some code...$tpl = new TemplateMan(PATH_DESIGN . $design);// library/TemplateMan.class.phpLazyLoad::singleton()->unregister();//define('SMARTY_SPL_AUTOLOAD', 1);require_once 'Smarty' . DIRECTORY_SEPARATOR . 'Smarty.class.php';LazyLoad::singleton()->register();// Надо в переменной держать, оказывается пригодится может. Если в классе каком, так же через сингтон в переменную и вперед. :)$LazyLoad = LazyLoad::singleton();$LazyLoad->register();
werwap » 2012.07.26 04:47

привет. подскажи как в граббе определить адрес файла есла переадресация на файл? вот http://flash.mobik.ru/?module=download&category=20&id=67

tipsun » 2012.07.26 14:31

werwap написал:

привет. подскажи как в граббе определить адрес файла есла переадресация на файл? вот http://flash.mobik.ru/?module=download&category=20&id=67

http://flash.mobik.ru/index.php?module=download&category=20&id=67

werwap » 2012.07.26 15:21

tipsun, адрес файла Flash нужна

tipsun » 2012.07.26 15:25

werwap написал:

tipsun, адрес файла Flash нужна

Ну так сразу и надо писать, что конкретно нужно.
- - - -
Если у тебя есть адрес:
http://flash.mobik.ru/index.php?module=download&category=20&id=67
Меняешь на такой:
http://flash.mobik.ru/download.php?id=67
Ловищь переадресацию в заголовках:
Location: http://...
Имя файла передается через, когда переходишь по переадресации:
Content-Disposition    attachment; filename=1109072.swf

werwap » 2012.07.26 15:54

подробнее код можеш написать?

werwap » 2012.07.26 16:00

вот что нужно

Код:

1
span style="color: #0000BB"><?php$filename = "сюда нужно определить адрес файла"; $fh = fopen($filename, "r"); while(($str = fread($fh, 1024)) != null) $fsize += strlen($str); header('Content-Length: ' . $fsi);
tipsun » 2012.07.26 17:40

werwap написал:

подробнее код можеш написать?

Как-то так наверно.

Код:

1
span style="color: #0000BB"><?php$headers = get_headers('http://flash.mobik.ru/download.php?id=67', true);/*echo '<pre>';var_dump($headers);echo '</pre>';*/$pos = strrpos($headers['Content-Disposition'], '=');$file = substr($str, $pos + 1);echo $headers['Location'] . $file;//echo $headers['Content-Length'][1];
tipsun » 2012.07.26 18:03

Как найти home_url для моего скрипта?
Вчера сидел пытался найти. (В интернете искал способ найти путь до css файла, ничего нормального не нашел (плохо искал))
Вот что получилось.
Меня радует одно, что не надо вручную делать ничего =)
и $_SERVER['DOCUMENT_ROOT'] не используется.

Принцип прост:
Из текущего/запущеного файла, который проинклудил код/файл ниже,
удаляется относительный путь, остается абсолютный.
Потом из-за виндовса надо поменять слеши.
Потом берем значение __FILE__ include файла.
Удаляем из него абсолютный путь, остается относительный =)
Сохраняем результат.

Код:

1
span style="color: #0000BB"><?php//common.php [this is including file]//FIND HOME URL//define('COMMON_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR); //exampledefine('COMPILED_FILE', COMMON_PATH . 'compiled.php'); //example@include_once COMPILED_FILE;/*Условие можно и попроще, просто подумал, вдруг скрипт будет перенесен, переименована папка и т.п.*///+ FIND HOME URL//@include_once COMPILED_FILE;if (! (defined('PARENT_FILE') and __FILE__ == PARENT_FILE)) { $search = $replace = array(); if ('\\' == DIRECTORY_SEPARATOR) { $search[] = DIRECTORY_SEPARATOR; $replace[] = '/'; } $search[] = str_replace($_SERVER['SCRIPT_NAME'], null, $_SERVER['SCRIPT_FILENAME']); $replace[] = null; define('COMMON_URL', 'http://' . $_SERVER['HTTP_HOST'] . str_replace($search, $replace, COMMON_PATH)); define('CSS_URL', COMMON_URL . DESIGN_DIR . '/' . $designName . '/'); $content = '<?php' . PHP_EOL . '//' . $_SERVER['REQUEST_TIME'] . PHP_EOL . 'define(\'' . 'PARENT_FILE' . '\', \'' . __FILE__ .'\');' . PHP_EOL . 'define(\'' . 'COMMON_URL' . '\', \'' . COMMON_URL .'\');' . PHP_EOL . 'define(\'' . 'CSS_URL' . '\', \'' . CSS_URL . '\');'; file_put_contents(COMPILED_FILE, $content);}//- FIND HOME URL///* COMPILED FILE<?php//1343481047define('PARENT_FILE', 'W:\home\tt.php\www\trunk\includes\common.php');define('COMMON_URL', 'http://tt.php/trunk/includes/');define('CSS_URL', 'http://tt.php/trunk/includes/design/default/');*/
tipsun » 2012.07.26 20:12

Еще другой вариант есть.
Как-то так.

Код:

1
span style="color: #0000BB"><?php// some file// Путь до общего файла пишется руками, всегда.define('LEVEL', '../../');require_once LEVEL . 'includes/common.php';// common.php file$myPath = 'includes/design/userDesignName/';$path = dirname($_SERVER['SCRIPT_NAME']);if (DIRECTORY_SEPARATOR <> $path) { $path = 'http://' . $_SERVER['HTTP_HOST'] . '/' . LEVEL . $myPath;}
werwap » 2012.07.26 22:19

чтото не работает, вот пример кода

Код:

1
span style="color: #0000BB"><?php$file = $_GET['file']; $headers = get_headers('http://gruzmob.com/mp3_poisk/dload.php?id=88528254&br=0', true); $pos = strrpos($headers['Content-Disposition'], '='); $filename = substr($str, $pos + 1); $fh = fopen($filename, "r"); while(($str = fread($fh, 1024)) != null) $fsize += strlen($str); header('Content-Length: '.$fsize); header('Content-Type: audio/mpeg'); header('Content-Disposition: attachment; filename='.$filename.''); readfile(''.$filename.'');?>
tipsun » 2012.07.26 23:58

werwap, Это уже другой сайт, к которому ты подключаешься, значит и другие методы, возможно.

Код:

1
span style="color: #0000BB"><?php$headers = get_headers('http://flash.mobik.ru/download.php?id=67', true);// Посмотри на заголовки ответа.// Раскомментируй это:/*echo '<pre>';var_dump($headers);echo '</pre>';*/$pos = strrpos($headers['Content-Disposition'], '=');$file = substr($str, $pos + 1);echo $headers['Location'] . $file; //вот же адрес.//echo $headers['Content-Length'][1]; //вот вес.
werwap » 2012.07.27 01:27

не работает, проверь у себя на хосте код

Gemorroj » 2012.07.27 10:32

werwap, ну ты же не бездумно копируй код. а постарайся понять почему не работает.
Например Content-Disposition не всегда выдается. Можно воспользоваться просто filesize, если нету Content-Length.

tipsun » 2012.07.28 17:16

Поправил код: p24536

werwap » 2012.07.29 01:24

привет, подскажите пожалоста как определить размер папки с файлами public_html/files

tipsun » 2012.07.29 02:06

werwap написал:

привет, подскажите пожалоста как определить размер папки с файлами public_html/files

Как-то так.

Код:

1
span style="color: #0000BB"><?phpfunction size ($var){ if (is_dir($var)) { $d = dir($var); while (($entry = $d->read()) !== false) { if ('.' == $entry or '..' == $entry or 'php' == pathinfo($entry, PATHINFO_EXTENSION)) continue; $unit = $var . DIRECTORY_SEPARATOR . $entry; if (is_dir($unit)) { //$self = __FUNCTION__; //$result += $self($unit); $result += size($unit); } else { $result += filesize($unit); } } $d->close(); } else { $result = filesize($var); } return $result;}
werwap » 2012.07.29 02:56

tipsun, большое спасибо

Gemorroj » 2012.07.29 10:54

werwap, рекурсивно читать папки и файлы в них, складывая размер.

tipsun » 2012.07.29 23:07

Можете привести пример, когда нужно использовать и как исключения:
не оборачивать же весь код файла в скобки try.

Код:

1
span style="color: #0000BB"><?phpfunction inverse($x) { if (!$x) { throw new Exception('Division by zero.'); } else return 1/$x;}try { echo inverse(5) . "\n"; echo inverse(0) . "\n";} catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n";}// Continue executionecho 'Hello World';

Из примера, я понимаю, что надо использовать когда есть всяко функции и классы.
Но код ими изобилует.
- - - -
Хоть что-то поконкретней

Код:

1
span style="color: #0000BB"><?php try { // код, который может выбросить исключение } catch(Exception $ex) { //$ex - экземпляр класса Exception // или его наследника }

Исключения нужны там, где код не просто вот так в 10 строк умещается, а где есть сложные структура и иерархии классов, каждый содержит тьму методов, где идут всякие делегации-декорации и прочие паттеры. И тогда throw делается в одном месте (где ошибка выявлена), а catch -- где-то далеко-далеко, где эту ошибку могут обработать.

Плюс ко всему, отличие исклчений от die() в том, что исключение на каком-то промежуточном этапе можно поймать, и, на усмотрение, полностью обработать (например, делать insert, а при DbUniqueError делать update; это если нету replace или insert on duplicate update как в MySQL), перевкинуть другое исклоючение (например, заменить DbUniqueError на EmailALreadyUsedError), или сделать окаточный код (например, rollback) и кинуть исходное исключение.

http://wiki.agiledev.ru/doku.php?id=ooa … tion_using
http://i-novice.net/obrabotka-isklyuchi … j-chast-1/

Gemorroj » 2012.07.30 10:43

tipsun, исключения хорошо вписываются в mvc модель. когда модель кидает исключение. а контроллер его перехватывает.

tipsun » 2012.07.30 16:19

Gemorroj, спс.

tipsun » 2012.07.31 21:18

POFIGISST написал:

Млин,возник такой вопрос, есть код javascript всунутый в страницу,но незнаю как сделать функцию if else,вот там кусок кода
Мне нужно сделать,чтоб если переменная например $zz == 2 то чтоб выводило выводило строки смайлов и цветов, а если $zz != 2 то чтоб скрывалась эта панелька со смайлами и цветами,подскажите плиз как в этом случае сделать if else?

Код:

1
span style="color: #0000BB"><?phpecho '</table><br /></td><td class="textmes">';/*******************************************************/?><div class='anput'><script language="JavaScript" type="text/javascript"> function tag(text1, text2) { if ((document.selection)) { document.message.msg.focus(); document.message.document.selection.createRange().text = text1+document.message.document.selection.createRange().text+text2; } else if(document.forms['message'].elements['msg'].selectionStart!=undefined) { var element = document.forms['message'].elements['msg']; var str = element.value; var start = element.selectionStart; var length = element.selectionEnd - element.selectionStart; element.value = str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length); document.forms['message'].elements['msg'].focus(); } else document.message.msg.value += text1+text2; document.forms['message'].elements['msg'].focus();}</script><div style="margin:2px;padding:1px;border:1px solid #333">Цвета: <a href="javascript:tag('[red]', '[/red]')"><img src="/style/bb/re.png" alt="red" title="Красный"/></a> <a href="javascript:tag('[green]', '[/green]')"><img src="/style/bb/gr.png" alt="green" title="Зелёный"/></a><a href="javascript:tag('[blue]', '[/blue]')"><img src="/style/bb/bl.png" alt="blue" title="Синий"/></a><br />Cмайлы:<a href="javascript:tag(':-*','')"><img src="/style/smiles/lips.gif" alt=":-*" title=":-*"/></a> <a href="javascript:tag('.ковыр2.','')"><img src="/style/smiles/kovyr2.gif" alt="ковыр" title="ковыр2"/></a><a href="javascript:tag('.ах.','')"><img src="/style/smiles/ah.gif" alt="ах" title="ах"/></a><a href="javascript:tag('.дум.','')"><img src="/style/smiles/dum.gif" alt="дум" title="дум"/></a><a href="javascript:tag('.дружба.','')"><img src="/style/smiles/druzhba.gif" alt="дружба" title="дружба"/></a><a href="javascript:tag(':-D','')"><img src="/style/smiles/biggrin.gif" alt=":-D" title=":-D"/></a><a href="javascript:tag('.ржу.','')"><img src="/style/smiles/rzhu.gif" alt="ржу" title="ржу"/></a><a href="javascript:tag('.неа.','')"><img src="/style/smiles/nea.gif" alt="неа" title="неа"/></a><a href="javascript:tag('.лол.','')"><img src="/style/smiles/lol.gif" alt="лол" title="лол"/></a><a href="javascript:tag('.кофе.','')"><img src="/style/smiles/kofe.gif" alt="кофе" title="кофе"/><a href="javascript:tag('.курит.','')"><img src="/style/smiles/kurit.gif" alt="кур" title="курит"/></a><a href="javascript:tag('.гы.','')"><img src="/style/smiles/gy.gif" alt="гы" title="гы"/></a><a href="javascript:tag('.глаза.','')"><img src="/style/smiles/glaza.gif" alt="глаза" title="глаза"/></a></div></div><?php/*******************************************************/echo "<form method='post' name='message' action='/mail.php?id=$ank[id]&amp;" . rand(1000, 9999) . "' enctype='multipart/form-data'>\n";
tipsun » 2012.07.31 23:27

POFIGISST,
так делал?

Код:

1
span style="color: #0000BB"><?phpif ($zz == 2): ?>js code<?phpendif;?>
POFIGISST » 2012.07.31 23:48

tipsun
Спасибо большое,работает))

werwap » 2012.08.03 23:52

привет, у меня сервис сайтов грузит очень БД, можно както испольэовать 2 БД для одного скрипта?

Gemorroj » 2012.08.07 22:23

используй, в чем дело.

tipsun » 2012.08.07 22:39

werwap написал:

привет, у меня сервис сайтов грузит очень БД, можно както испольэовать 2 БД для одного скрипта?

Наверно можно взять из бд некоторые таблицы и поместить на разные серверы. Не на локальном, а удаленном например (мои догадки всего лишь).
- - - -
Можешь в гугле попробовать найти нормальное решение проблемы.

tipsun » 2012.08.08 22:44

Почему class Registry* делают как singleton, если можно сделать его полностью static?
* ну вместо global.

Gemorroj » 2012.08.09 10:09

tipsun его и делают статическим обычно.

poll » 2012.08.12 02:49

привет, я использую 2 БД в одном скрипте, подскажи пожалоста как подключить запрос
БД1 $users = mysql_query("SELECT COUNT(*) FROM `users`;");


Бд2 $forum = mysql_query("SELECT COUNT(*) FROM `forum`;");

Gemorroj » 2012.08.12 10:57

вторым параметром у mysql_query передается ресурс соединения с бд. его и используй.

pol » 2012.08.12 14:20

а как обяснить запросу что он должен брать с БД1 даные
а запросу 2 с БД2?

Gemorroj » 2012.08.12 18:55

выше читай.

pool » 2012.08.12 21:15

непонимаю как

tipsun » 2012.08.12 21:54

pool, ответ тут

TLENS » 2012.08.19 04:09

Как php работает с памятью?

Код:

1
span style="color: #0000BB"><?php//Вот интересно обязательно в моем случае надо указывать на присваивание ссылки? static function &get ($key) { if (isset(CacheVars::$buffer[$key])) // Если данные уже закешированы в структуре return CacheVars::$buffer[$key]; if (CacheVars::init()) // Происходит соединени с мемсаче сервером если этого еще небыло CacheVars::$buffer[$key] = CacheVars::$memcache->get($key); // Берем данные с мемкеча если соединение успешно if (!(CacheVars::$buffer[$key] === false || CacheVars::$buffer[$key] === null)) return CacheVars::$buffer[$key]; else return CacheVars::get_file_vars($key); // Берем данные с файла и зиписываем в мемкеч. }// Если большой размер данных а надо только чтение тогда делаю ссылку$var =& MyCalss::get('test');

Вопрос состоит в том обязательно ли мне указывать на ссылку в случае если я далее не буду редактировать полученные данные.
Т.е. копирование данных будет происходить при присваивании или будет создаватся копия при дальнейшем редактировании, если не указана ссылка?
Просто часто встречался с различными вариантами где в целях оптимизации копирование данных/файлов происходить только при потребности.

Gemorroj » 2012.08.19 15:10

>> мемсаче
мемкэше =)
нет. ссылки не надо. http://habrahabr.ru/post/134784/ php это сам оптимизирует. т.е. память будет израсходована только 1 раз (если данные в о 2 переменной не менять).

TLENS » 2012.08.20 03:41

Gemorroj написал:

>> мемсаче
мемкэше

Ну да :)
спс полезная статейка

Nemastja » 2012.09.06 00:25

Привет, подскажите как добавить в Бд текст. На пример: в таблице есть поле text и во все записи что есть в поле text  нужно добавить спериди текст (копирайт) . Подскажите пожалоста такой запрос к бд?

Nemastja » 2012.09.06 00:33

Может както так

mysql_query("UPDATE `bib` SET `text` = `text` = cop;");

Gemorroj » 2012.09.06 00:48

Код:

1
mysql_query("UPDATE `bib` SET `text` = CONCAT(`text`, " ", "копирайт");
Maniak » 2012.09.08 19:51

Привет, я перенес сайт на другой хост и все сообщения на воруме в символах ????? в чем может быть проблема? Форум на БД.

Gemorroj » 2012.09.08 21:16

Код:

1
mysql_set_charset('utf8');

http://php.net/mysql_set_charset

Maniak » 2012.09.09 00:29

Непомагает, может чтото с новъм хостом не так?

Gemorroj » 2012.09.09 00:52

Maniak, нет. С настройкой не так.
Какой библиотекой для работы с БД пользуешься?
В какой кодировке БД?

Maniak » 2012.09.09 12:05

MySQL Сервер: Localhost via UNIX socket Версия сервера: 5.1.63-cll Версия протокола: 10 Пользователь: ser@localhost MySQL-кодировка: UTF-8 Unicode (utf8)

Gemorroj » 2012.09.09 12:37

на уровне php как подключаешься к бд?

Maniak » 2012.09.09 13:19

<?php
define("MYSQLHOST", "localhost");
define("DBNAME", "chat");
define("DBUSER", "interclu_chat");
define("DBPASS", "5");

//PROTECTION
if(strpos($_SERVER['HTTP_USER_AGENT'], "'") !== false) die();
if(substr($_SERVER['HTTP_USER_AGENT'], 0 , 7) == "SamSunf") die();
if(preg_match("'Nokia(\d{3})/'", $_SERVER['HTTP_USER_AGENT'])) die();

$dbcnx = mysql_connect(MYSQLHOST, DBUSER, DBPASS);

Gemorroj » 2012.09.09 13:33

вот после mysql_connect напиши, mysql_set_charset('utf8');

Maniak » 2012.09.09 14:29

Непомагает, так и осталось РјРЅРµ очень нрави. Почему ето так на старом хосте все работало?

Maniak » 2012.09.09 14:36

сообщения хранятся в поле msg - cp1251_general_ci

Gemorroj » 2012.09.09 15:12

Maniak измени на utf8_general_ci

Sergeij » 2012.10.09 15:20

Привет, подскажите пожалоста как сделать авторизацию на сесиях? Чтоб ненада каждий день проходить авторизацию.

tipsun » 2013.01.28 16:41

Велосипед?

Код:

1
span style="color: #0000BB"><?php/*Что-то типа substr, только для файлов/папок.*/function subdir($path, $begin=0, $count=-1) { $array = array(); if (($od = opendir($path))) { while (false != ($rd = readdir($od))) { if ('.' != $rd && '..' != $rd) { if (0 < $begin) { $begin -= 1; continue; } $array[] = $rd; if (! --$count) { break; } } } } return $array;}
Gemorroj » 2013.01.28 16:57

tipsun, я применения не очень вижу

tipsun » 2013.02.01 23:49

Нужна функция перегона картинки в символы. у DarkDaNTe было на сайте.

tipsun » 2013.02.03 00:23

Подскажите, как быть с ссылками во view (шаблонах) с CodeIgniter?
Не руками же его писать?
- - - -

Код:

1
span style="color: #0000BB"><?phpecho '<a href="class/method/<?php echo $id; ?>"><?php echo $filename; ?></a>';
wweja » 2013.02.07 17:56

Привет,
подскажите пожалоста как сделать запросы к БД с небольшой нагрузкой на БД?
сейчас у меня вот как:

Код:

1
span style="color: #0000BB"><?php//USER$q = mysql_query("SELECT * FROM `chat_users` WHERE `id` = '".$id."';"); $user = mysql_fetch_array($q); $id = $user['id']; $css = $user['css']; //END USER //ONLINE $online = time() + 900; $update = mysql_query("UPDATE `chat_users` SET `time` = '".$online."', `place` = 0, `ip` = '".getenv ('REMOTE_ADDR')."', `ua` = '".htmlspecialchars(getenv ('HTTP_USER_AGENT'))."', `timevremja` = `timevremja` + IF(NOW() - `timeob` < 500, NOW() - `timeob`, 0), `timeob` = NOW() WHERE `id` = '".$id."';"); //END ONLINE

ето я делал года 4 назад и все было хорошо но сейчас посетителей стало больше и работа скрипта стала медленной.

Gemorroj » 2013.02.07 18:32

Код:

1
span style="color: #0000BB"><?php//USER$q = mysql_query("SELECT * FROM `chat_users` WHERE `id` = '".$id."';");$user = mysql_fetch_array($q);$id = $user['id'];$css = $user['css'];//END USER//ONLINE$online = $_SERVER['REQUEST_TIME'] + 900;$update = mysql_query(" UPDATE `chat_users` SET `time` = '".$online."', `place` = 0, `ip` = '".$_SERVER['REMOTE_ADDR']."', `ua` = '".mysql_real_escape_string(htmlspecialchars($_SERVER['HTTP_USER_AGENT']))."', `timevremja` = `timevremja` + IF(NOW() - `timeob` < 500, NOW() - `timeob`, 0), `timeob` = NOW() WHERE `id` = '".$id."';");//END ONLINE

как минимум там SQL-injection. вообще, тут особо нечего оптимизировать. Вероятно, проще индексов расставить. Т.к., вероятно, они не проставлены.

WapStyle » 2013.02.07 21:15

wweja написал:

много букав! Переходи на PDO

Код:

1
2
3
4
$q = mysql_query("SELECT * FROM `chat_users` WHERE `id` = '".$id."';");
$user = mysql_fetch_array($q);
$id = $user['id'];
$css = $user['css'

Мне одному показался говнокод?
Это тож само что и if(сиська = 1) echo '1 сиська'; elseif (сиська = 2) echo '2 сиська';   и т.д. =D

wweja » 2013.02.08 07:04

напишите пожалоста пример нормального кода?

WapStyle » 2013.02.08 07:27

wweja, http://php.net/manual/ru/book.pdo.php учим, всё на русском и с примерами

Gemorroj » 2013.02.08 12:01

WapStyle, а ты видел вап-чаты не с говнокодом?
они же все по мотивам бодр-чата сделаны и код там такой же.

graberja » 2013.02.23 02:17

привет, подскажите как можно наложить копирайт на картинку если наложение чужого копирайта меняется (то справа то слева и т.д)?

koderrr » 2013.02.27 15:00

graberja написал:

привет, подскажите как можно наложить копирайт на картинку если наложение чужого копирайта меняется (то справа то слева и т.д)?

Наложить копирайт на картинку с копирайтом? Вообще через GD это делается если я правильно вопрос понял

voron » 2013.03.03 02:57

привет, сделал граб а файл скачать нельзя

при клике на файл в грабе вот такая непонятность

Вы запросили файл, расположенный на сервере RuGame.Mobi
RuGame.Mobi - это загрузки и общение с твоими друзьями!
Чтобы скачать файл нажми на ссылку ниже
http://rugame.mobi/android/16840/LostTempleII.apk

ну в самом грабе ссылка на файл прямая, вот
http://rugame.mobi/android/16840/LostTempleII.apk


а при копирование ссылки в строку адереса файл качает (в браузере оперы)

как ето обойти?

Gemorroj » 2013.03.03 10:20

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

voron » 2013.03.03 20:13

Ето тоже не помагает.

Я сделал персер и вставил в файлы свою рекламу (и так сервер без дела 400гб).

Спасибо тебе ты всегда мне помогаешь с php.

Gemorroj » 2013.03.03 21:08

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

voron » 2013.03.04 02:00

вот так
<?php
$fid = $_GET['fid'];
header("Location: http://rugame.mobi/android/".$fid."");
?>
тока я уже персер сделал и ето мне не нужно.

Вот помог бы ты мне с определением места положения копирайта на картинке...
яб деньгами одблагодарил (300 рублей).
картинка сдесь http://rugame.mobi/android/8877/

Vamp » 2013.03.04 10:25

сделал персер игр,
подскажи как менять в файле jad ето
MIDlet-Jar-URL: http://rugame.mobi/game/67756/MZum_SerK500_by_Stox.jar
MIDlet-Delete-Confirm: More Java rugame.mobi

при копировании файла jad на сервер?

tipsun » 2013.03.04 10:40

Vamp, даже если ты определишь место, то как избавиться собираешься? Просто вырезать? Заместить - каша получится (если только не сделать фон черным и на нем сделать копирайт свой).
Если даже отрезать ту часть, где находится копирайт, то получится какой-то непонятный скрин.
Можно попробовать найти оригиналы на сайте, но это вообще маловероятно.

Vamp » 2013.03.04 11:19

с заменой jar разобрался

$filetext = file_get_contents('http://rugame.mobi/game/'.$file.'');
$filetext=str_replace('rugame.mobi','site.ru', $filetext);


$h = fopen("load/".$filename."_Site_Ru.".$format."","w");

fwrite($h,$filetext)
fclose($h);
Добавлено спустя   3 минуты  42 секунды:
tipsun хочу сделать фон черным и на нем сделать свой копирайт.
главное как определять местоположение.

Оригинал не могу найти, а может его вообще нет :)

Vamp » 2013.03.04 11:39

еще вопрос:
Как в файле jar прочитать текст если файл в архиве jar?
путь к файлу META-INF/MANIFEST.MF

содержание файла MANIFEST.MF

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: 1.6.0_26-b03 (Sun Microsystems Inc.)
MIDlet-1: Magic Zum,/icon.png,Mid
MIDlet-Vendor: Qplaze
MIDlet-Name: Magic Zum
MIDlet-Icon: \icon.png
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
MIDlet-Delete-Confirm: Больше Java - только на RuGame.Mobi

Gemorroj » 2013.03.04 13:15

Код:

1
var_dump(file_get_contents('zip://file.jar#META-INF/MANIFEST.MF'));
Vamp » 2013.03.04 14:23

<?php
include'pclzip.php';
var_dump(file_get_contents('zip://rugame.mobi/game/62184/little_red_riding_hood20128x128.jar#META-INF/MANIFEST.MF'));

?>
ошибка

Warning: file_get_contents(zip://rugame.mobi/game/62184/little_red_riding_hood20128x128.jar#META-INF/MANIFEST.MF) [function.file-get-contents]: failed to open stream: operation failed in /home/wapik/public_html/java/test.php on line 3
bool(false)

Gemorroj » 2013.03.04 16:33

вообще, вот так, по смыслу надо было

Код:

1
var_dump(file_get_contents('zip://http://rugame.mobi/game/62184/little_red_riding_hood20128x128.jar#META-INF/MANIFEST.MF'));

zip:// - это дополнительный враппер перепаковывающий налету данные.
но так работать не будет, из-за того, что данные получаем удаленно (http).
поэтому сначала скопируй файл к себе во временную директорию и с ним работай, по окончанию - удаляй.

Vamp » 2013.03.04 17:42

Gemorroj
и снова в тупик :)

теперь как мне с помощью
$text=str_replace('rugame.mobi','site.ru', $text);
перезаписать адрес сайта в файле META-INF/MANIFEST.MF  ?

Gemorroj » 2013.03.04 20:07

Для записи, zip:// уже не подойдет. (http://www.php.net/manual/ru/wrappers.compression.php).
Лучше смотреть в сторону более функционального класса ZipArchive.

Код:

1
span style="color: #0000BB"><?php$zip = new ZipArchive;$zip->open('test.jar');// Получаем манифест$manifest = $zip->getFromName('META-INF/MANIFEST.MF');$manifest = str_replace('rugame.mobi', 'site.ru', $manifest);// Удаляем старый манифест$zip->deleteName ('META-INF/MANIFEST.MF');// Добавляем новый манифест$zip->addFromString('META-INF/MANIFEST.MF', $manifest);$zip->close();
Vamp » 2013.03.05 01:46

Gemorroj большое спасибо

Vamp » 2013.03.05 04:43

можно как то определить папку С картинкой?

вот ссылка на картинку
http://rugame.mobi/img_add.php?id=30743&pid=2

id - ето наверное папка
pid - номер картинки

оригинал без копирайта есть точно так как копирайт на картинке генерируется в случайном месте.


Наверное час искал оригинал и так не нашел :(

здесь http://jafan.ru/ такой самый ЗЦ как на ругаме.

Gemorroj » 2013.03.05 11:18

нет. вполне возможно, что файлы вообще вне корневой директории для сервера.

Vamp » 2013.03.05 18:39

а как тогда вырезать копирайт...

Gemorroj » 2013.03.05 18:55

затереть его

Vamp » 2013.03.05 19:09

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

Karayazi » 2013.03.05 22:10

Здравствуйте, в грабе во время скачки файла перенапрвляется на другую страницу с надписью:
We couldn't validate your request, please clear browser cache go back to the game page and select download again.
И по прямой ссылке на файл и через header('Location:
Скажите пожалуйста, как очистить кеш браузера, или как скачать файл?

Vamp » 2013.03.05 23:20

на какой сайт граб?

Karayazi » 2013.03.06 01:39

phoneky.com/games

Vamp » 2013.03.06 02:05

наверное причина в cookies

Karayazi » 2013.03.06 13:09

Может есть какое то решение?

Vamp » 2013.03.07 10:30

наверное нужно записывать cookies так как на phoneky.com/games чтоб скачать файл.

WapStyle » 2013.03.08 19:11

При частом скачивании с 1 IP у них вместо файла даётся страница рекламы "тенькофф"

Vamp » 2013.03.30 10:14

привет. Вывожу с БД случайную фотку вот так
$query = mysql_query("SELECT `photo`, `nickname`, `id`, `time` FROM `chat_users` WHERE `photo` = 'gif' OR `photo` = 'jpeg' ORDER BY RAND() DESC LIMIT 1;");

Как сделать чтоб случайная фотка менялась раз в минуту а не при каждом обновлении страницы??

Gemorroj » 2013.03.30 11:37

Проще всего, наверное, будет сделать крон задание, на вытягивание фотки и запись в отдельный файл.
Пользователю просто показывать этот файл, без обращений к БД.

Vamp » 2013.03.30 13:24

ясно.

вот ище вопрос:
как посчитать посты во всех записях в поле posts (собрать число постов всех пользователей в кучу)

$q = mysql_query("SELECT * FROM `users`");
$f = mysql_fetch_array($q);
echo $f['posts'];

Gemorroj » 2013.03.30 13:43

Код:

1
SELECT SUM(`posts`) AS `cnt_posts` FROM `users`
Vamp » 2013.03.31 00:37

спасибо

Vamp » 2013.04.01 12:12

привет, подскажи как добавить картинку в мр3 ?

procedure TForm1.Button1Click(Sender: TObject);
var tag:TID3Tag;
begin
tag.ID:='TAG';
tag.Title:='Название';
tag.Artist:='Исполнитель';
tag.Album:='Альбом';
tag.Year:='2004';
tag.Comment:='Комменты';
tag.Genre:=5; //Жанр
If writeId3Tag('demo.mp3', @tag) then showmessage('Поменяли всё');
end;

Gemorroj » 2013.04.01 12:38

Delphi чтоли? ты форумом ошибся)

Vamp » 2013.04.14 17:30

привет, как обрезать число


с 26.0249999999999
в 26.02
или
с 3.4249999999999
в 3.42

??

Gemorroj » 2013.04.14 19:26

round

Vamp » 2013.04.15 01:07

ну да, спасибо

troi » 2013.04.21 19:28

всем привет. у меня такой вопрос кто нить может дать пример кода для полосы опыта к онлайн игре то есть полоска с заполнением при наборе опыта а при переходе на новый уровень она обнулялась

TLENS » 2013.05.15 00:24

Какой класс выбрасывает исключения тип Notice (Предупреждение)?
Пробовал наследоваться от Exception и ErrorExeption они выдают фатальную ошибку. А мне надо выбросить просто предупреждения и что бы оно записалось в лог.

Gemorroj » 2013.05.15 10:29

TLENS, функция trigger_error

AND » 2013.05.15 10:31

TLENS, подойдет функция trigger_error с флагом E_USER_NOTICE ?
Опоздал)

TLENS » 2013.05.15 11:27

Спасибо, пригодится. Написал уже крокодила что бы вел логи) Может понадобится.

Код:

1
span style="color: #0000BB"><?php//include_once ROOT . '/' . SYSTEM . '/function.php'; // Вспомогательные функцииfunction is__writable($path) {//will work in despite of Windows ACLs bug//NOTE: use a trailing slash for folders!!!//see http://bugs.php.net/bug.php?id=27609//see http://bugs.php.net/bug.php?id=30931 if ($path{strlen($path)-1}=='/') // recursively return a temporary file path return is__writable($path.uniqid(mt_rand()).'.tmp'); else if (is_dir($path)) return is__writable($path.'/'.uniqid(mt_rand()).'.tmp'); // check tmp file for read/write capabilities $rm = file_exists($path); $f = @fopen($path, 'a'); if ($f===false) return false; fclose($f); if (!$rm) unlink($path); return true;}class MyException extends Exception { }/* * @name Log * @date 14.05.2013 * @author TLENS */class Log { static private $openLogFile = array(); static private $error = null; static private $log = null; static private $localPath = "Log"; private $logName; private $logData = array(); private $logDir; private $logFileName; private $logFullPath; private $display = false; static public function &init ($name, $mess = null) { if (!isset(Log::$openLogFile[$name])) { Log::$openLogFile[$name] = new Log($name); } Log::$openLogFile[$name]->addMessage($mess); return Log::$openLogFile[$name]; } private function __construct($logName, $display = false) { $this->logName = $logName; $this->display = $display; $this->logFileName = "$this->logName.log"; $this->logDir = ROOT . '/' . DATA . '/' . Log::$localPath . ''; $this->logFullPath = "$this->logDir/$this->logFileName"; if (!file_exists($this->logFullPath)) { $this->addMessage("Created log-file $this->logName"); } } public function __destruct() { //var_dump($this); if (sizeof($this->logData) === 0) { return; } if (!is_dir($this->logDir)) { throw new MyException("Dir '$this->logDir' not found! Plese create this dir."); return; } if (!is__writable($this->logDir)) { throw new MyException("Dir '$this->logDir' puts permission denied! Plese config cmod this dir."); return; } if (file_exists($this->logFullPath) && !is_writable($this->logFullPath)) { throw new MyException("File '$this->logFullPath' fputs permission denied! Plese config this file."); } if (!($fp = fopen($this->logFullPath, 'a'))) { throw new MyException("Falied to open $this->logFullPath!"); } foreach ($this->logData as $log) { $date = date("Y/m/d h:i:s", $log['time']); fputs($fp, "$date [$this->logName]: {$log['mess']}\n"); } fclose($fp); } public function addMessage($mess) { if (!$mess) return; $mess = str_replace("\n", "\n\t", $mess); $this->logData[] = array('time' => time(), 'mess' => $mess); } static public function error($message) { if (!$message) return; if (!Log::$error) { Log::$error = new Log("Error"); } Log::$log->addMessage($message); } static public function log($message) { if (!$message) return; if (!Log::$log) { Log::$log = new Log("log"); } Log::$log->addMessage($message); }}?>

Может можно было это все реализовать в классе MyException но я же не китаец что бы все упрощать)

Gemorroj » 2013.05.15 12:28

TLENS, сейчас стандарт де факто в php логгерах - это Monolog.

TLENS » 2013.05.15 18:12

Есть ли в php расширение какое то для взаимодействия с программами через через fcgi?

Gemorroj » 2013.05.15 18:55

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

TLENS » 2013.05.15 20:22

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

tipsun » 2013.06.23 02:18

Как это работает?
http://www.pvsm.ru/yii/1926
http://www.manhunter.ru/webmaster/412_s … ssiva.html

tipsun » 2013.06.27 14:39

tipsun, в google забанили? Вот, посмотри тут: http://www.cyberforum.ru/php/thread157657.html

Gemorroj » 2013.06.27 15:03

tipsun, ты бы просто конкретнее написал что не понятно. а то хз что из этого кода описывать

Vamp » 2013.09.11 22:06

привет, как можно определить на каких сайтах стоит граббер на мой сайт?


вед в статистике опредиляется только ip

Vamp » 2013.09.12 03:11

вопрос: использует такой код функцию FFmpeg?

и дает такой код большую нагрузку на хост?




КОД

Код:

1
span style="color: #0000BB"><?php$img = cha($_GET['img']); $wh = getimagesize('copy.png'); $fh = getimagesize('http://7ba.ru/'.$img); $rwatermark = imagecreatefrompng('copy.png'); $sx=$fh[0]-$wh[0]-0; $sy=$fh[1]-$wh[1]-0; if(pathinfo($img, PATHINFO_EXTENSION)=='jpg' || pathinfo($img, PATHINFO_EXTENSION)=='jpeg') { $rfile = imagecreatefromjpeg('http://7ba.ru/'.$img); imagecopy($rfile, $rwatermark, $sx, $sy, 0, 0, $wh[0], $wh[1]); } elseif(pathinfo($img, PATHINFO_EXTENSION)=='gif') { $rfile = imagecreatefromgif('http://7ba.ru/'.$img); imagecopy($rfile, $rwatermark, $sx, $sy, 0, 0, $wh[0], $wh[1]); } elseif(pathinfo($img, PATHINFO_EXTENSION)=='png') { $rfile = imagecreatefrompng('http://7ba.ru/'.$img); imagecopy($rfile, $rwatermark, $sx, $sy, 0, 0, $wh[0], $wh[1]); } imagegif($rfile,'', '100'); imagedestroy($rwatermark); imagedestroy($rfile);
Gemorroj » 2013.09.12 15:44

по ip и определи.

Vamp » 2013.09.12 22:50

а как на счет кода?

TLENS » 2013.10.21 04:10

Как лучше клеить строки? Чета не нашел никакого примера для правильной работы с частым склеиванием строк.
Может там потоками например, или можно смело клеить $str = $str1 . $str2 . $str3; Просто как правило за такое руки отрывают а в пхп хз как оно работает с памятю?

Gemorroj » 2013.10.21 10:51

Vamp, не очень код.
TLENS, все ок. используй обычную точку.

TLENS » 2013.10.21 22:27

Gemorroj написал:

TLENS, все ок. используй обычную точку.

Спасибо.

TLENS » 2013.11.12 14:02

Не пойму почему url_decode не декодирует &amp;
есть строка типа var1=val1&am;var2=var2&am;
parse_str возвращает array([var1]=> 'val1', [amp;var2] => 'val2'...
urldecode боюсь юзать так как могу нарушить структуру для парсера

TLENS » 2013.11.12 14:23

О помогло htmlspecialchars_decode

Vamp » 2013.12.28 21:05

привет, как сделать Ограничение скорости отдачи файлов с помощью htaccess  ?

Gemorroj » 2013.12.28 21:12

Vamp, модуль соответствующий под апач нужно поставить. С ходу находится такое http://httpd.apache.org/docs/trunk/mod/ … limit.html

Vamp » 2013.12.31 18:45

Здравствуйте, помогите пожалуйста разобраться с такой проблемой:
есть сайт с выделенным сервером при заходе, прежде чем начать загружаться, возникает задержка, которая иногда доходит до 15-45 сек. При этом иногда при заходе на эту же страницу задержки практически не возникает (даже после отчистки кеша).

досс атаки нет.

Подскажите, в каком направлении копать для решения?
Добавлено спустя   1 минуту  43 секунды:
так же после перезапуска апача все работает нормально минут 3

Gemorroj » 2013.12.31 20:27

касается любой и статических страниц? или только php?
во первых ставить мониторинги расходования ресурсов.

Vamp » 2014.01.01 02:45

у меня только php

генерация страницы 0.0256 сек. а грузится 15 секунд

Gemorroj » 2014.01.01 12:30

ну может по диску проседание или сеть забита.. короче ставь мониторинги ресурсов.

Vamp » 2014.01.01 21:53

мониторинги ресурсов - что ето?

сайт тормозит а вот файлы качаются нормально с сайта

Gemorroj » 2014.01.01 23:31

Vamp, посмотри эту тему http://wapinet.ru/forum/viewtopic.php?pid=26820

TLENS » 2014.01.03 01:22

Vamp попробуй последить за продолжительной трасировкой. Возможно проблема не в твоем сервере.

Vamp » 2014.01.15 23:23

привет, можно лы перезапускать апач без входа в роот панель?


с помощью php

Gemorroj » 2014.01.16 00:02

через консоль. попробуй apachectl restart

tipsun » 2014.03.15 23:22

Правильный ход мысли? Если нет, скиньте пожалуйста ссылку на схему работы. Я искал и Symfony, и Yii, но не нашел..

Gemorroj » 2014.03.16 10:16

tipsun, MVC да. Все так.

tipsun » 2014.03.16 11:25

Gemorroj, спасибо.

TLENS » 2014.03.29 16:25

Не врубаюсь почему json_decode не хочет парсить строку. последняя ошибка выходит JSON_ERROR_CTRL_CHAR. Уже не знаю что ему нужно.
Пытался прогнать текст по этим регуляркам

Код:

1
span style="color: #0000BB"><?php$file = preg_replace_callback("/[a-яА-ЯёЁ]+/ui", function($r) { return rawurlencode($r[0]); }, $file);

Код:

1
span style="color: #0000BB"><?php$file = preg_replace_callback("/\"(.+?)\"([\,\]])/u", function($r) { return '"'. rawurlencode($r[1]) . '"'.$r[2]; }, $file);

вот сам текст

Показать/Скрыть
[[["Hello world","Привет мир","","Privet mir"]],,"ru",,[["Hello world",[1],true,false,531,0,2,0]],[["Привет мир",1,[["Hello world",531,true,false],["a hello world",0,true,false]],[[0,10]],"Привет мир"]],,,[["ru"]],1]

TLENS » 2014.04.09 06:08

Как удалить битый utf-8 символ. Глянул в гугле там вроде все варианты перекодирования с игнором или какие то велосипеды. Неужели нету встроенной функции?
(Гугл начал возвращать криво обрезанные тайтлы )
добавили называется костыль

Тег <media:title> определяет название видео. Это поле имеет максимальную длину 60 символов или 100 байт – в зависимости от того, какой предел будет достигнут раньше.

Gemorroj » 2014.04.09 10:45

что такое "битый utf-8 символ"?

TLENS » 2014.04.09 15:25

Gemorroj написал:

что такое "битый utf-8 символ"?


Обрезанный символ на пополам)

Gemorroj » 2014.04.09 18:39

хм. хз.
как он так обрезался?
может как-нибудь прогнать 2 раза через iconv с параметром IGNORE

TLENS » 2014.04.10 17:45

Gemorroj Да я так и делаю сейчас) Можно один раз из unicode в unicode с игнорированием

alibek_kz » 2014.05.06 11:03

Вопрос к TLENS
как вы сделали скачку видео от ютубе на сайте v-s.mobi?

TLENS » 2014.05.06 20:36

alibek_kz написал:

Вопрос к TLENS
как вы сделали скачку видео от ютубе на сайте v-s.mobi?

Тебе uml проекта предоставить или же сразу исходный код?

alibek_kz » 2014.05.06 20:41

TLENS написал:

alibek_kz написал:

Вопрос к TLENS
как вы сделали скачку видео от ютубе на сайте v-s.mobi?

Тебе uml проекта предоставить или же сразу исходный код?

Исходной код))))

TLENS » 2014.05.06 20:48

alibek_kz написал:

TLENS написал:

alibek_kz написал:

Вопрос к TLENS
как вы сделали скачку видео от ютубе на сайте v-s.mobi?

Тебе uml проекта предоставить или же сразу исходный код?

Исходной код))))

php ни причем. У меня самописный проксисервер на Go

tipsun » 2014.05.17 14:35

TLENS, я думал это API самого YouTube, не?

TLENS » 2014.05.17 20:27

tipsun написал:

TLENS, я думал это API самого YouTube, не?

Не совсем. Апи не дает прямые ссылки на файлы но а в остальном то да через него

TLENS » 2014.06.07 09:35

Какая роль грависа в php?
Случайно в массиве ввел ключ используя гравис а не кавычки. Боже как же я долго я искал баг.

Vamp » 2014.06.30 00:15

подскажите пожалоста

как передать потоком видео через rtsp?

такой ссылкой rtsp://domen.ru/file.3gp

TLENS » 2014.07.11 16:01

Vamp написал:

подскажите пожалоста
как передать потоком видео через rtsp?
такой ссылкой rtsp://domen.ru/file.3gp

Собственно нужен тебе сервер. Слышал о модулях для nginx так же мне известно что ffmpeg может транслировать камеру. Не знаю по поводу файлов. Когда то изучал протокол rtsp хотел сделать программу которая будет сохранять потоковое видео. Но забросил. Сейчас nodejs сильно продвигается и у него десятки всяких серверов есть. Возможно найдешь и rtmp, trsp сервер. Если известен тебе js то проблем не должно быть.

Vamp » 2014.07.12 05:20

TLENS к сожелению я js некогда не изучал.
ты за $ можешь мне ето сделать?


подскажите как через .htaccess передать пробел?


какой символ добавить
RewriteRule ^file/([0-9-a-zA-Z0-9._/%+()='-]+)$ sim.php?file=$1 [L,QSA]

такая вот ссылка

http://сайт.net/game/file/Dungeons%20Sword%20Soul%20Awakening%20240x320%20En-Vn.jad



%20 - ето пробел

Gemorroj » 2014.07.12 13:11

[\ ]

Vamp » 2014.07.12 18:05

Gemorroj спс

TLENS » 2014.07.19 14:53

Vamp написал:

ты за $ можешь мне ето сделать?

Нет

Vamp » 2014.07.20 14:28

TLENS спс :)

semoni » 2014.10.07 14:58

привет, помогите.

<?
ffmpeg -i input1.mp4 -qscale:v 1 intermediate1.mpg
ffmpeg -i input2.mp4 -qscale:v 1 intermediate2.mpg
cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
ffmpeg -i intermediate_all.mpg -qscale:v 2 output.mp4
?>

почему в етом коде такая ошибка
Parse error: syntax error, unexpected T_STRING in /home/rclu/public_html/test.php on line 2



???

Gemorroj » 2014.10.07 15:06

Потому что это вообще не php код..)
тебе нужно что-то типа:

Код:

1
span style="color: #0000BB"><?phpexec('ffmpeg -i input1.mp4 -qscale:v 1 intermediate1.mpg');exec('ffmpeg -i input2.mp4 -qscale:v 1 intermediate2.mpg');exec('cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg');exec('ffmpeg -i intermediate_all.mpg -qscale:v 2 output.mp4');

либо руками выполнить в консоли

semoni » 2014.10.07 16:04

ты бы немог собрать такой скрипт?
за хорошою оплату

semobi » 2014.10.07 16:39

на PHP нет библиотеки для вставки кадров в видео (И совмещение).

ето правда?

Gemorroj » 2014.10.07 19:07

semobi, есть прослойки над консольным ffmpeg. https://github.com/PHP-FFMpeg/PHP-FFMpeg

meison » 2014.10.13 19:45

привет, подскажите как дать файл на скачку

например http://wapinet.ru/papka/post.mp3

чтобы давать не прямую ссылку на файл а времинную

например так http://wapinet.ru/СгенерувыныйКОД/post.mp3

просто у меня очень много выкачуют другие сайты файлы и сервер умирает от етого.
подскажите пожалойста?

Gemorroj » 2014.10.13 20:17

если web-сервер - apache, то rewrite rule правилом.
ссылка:

Код:

1
http://example.com/download/sdfhdfgh435fsgw/file.mp3

правило:

Код:

1
RewriteRule ^download/([a-z0-9])/(.+)?$ /download.php?code=$1&file=$2
meison » 2014.10.13 21:57

каким способом отдавать файл?


header("Location: http://site.net/file.mp3");

TLENS » 2014.10.13 22:52

meison написал:

каким способом отдавать файл?


header("Location: http://site.net/file.mp3");

Здесь все что тебе нужно http://habrahabr.ru/post/151795/

miseterweb » 2014.10.22 02:42

привет, подскажите что в етом коде не так?

Код:

1
span style="color: #0000BB"><?phpclass download { public $properties = array('old_name' => '', 'new_name' => '', 'type' => '', 'size' => '', 'resume' => '', 'max_speed' => ''); public $range = 0; public function download($path, $name, $resume = 0, $max_speed = 0) { $name = ($name == '') ? substr(strrchr('/' . $path, '/'), 1) : $name; $name = explode('/', $name); $name = end($name); $file_size = $this->getFilesize($path); $this->properties = array('old_name' => $path, 'new_name' => $name, 'type' => "application/force-download", 'size' => $file_size, 'resume' => $resume, 'max_speed' => $max_speed); if ($this->properties['resume']) { if (isset($_SERVER['HTTP_RANGE'])) { $this->range = $_SERVER['HTTP_RANGE']; $this->range = str_replace("bytes=", '', $this->range); $this->range = str_replace("-", '', $this->range); } else { $this->range = 0; } if ($this->range > $this->properties['size']) $this->range = 0; } else { $this->range = 0; } } public function download_file() { $ctype_arr = array('mp3' => 'audio/mp3'); ($this->range) ? header($_SERVER['SERVER_PROTOCOL'] . ' 206 Partial Content') : header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK'); header("Pragma: public"); header("Expires: 0"); header("Cache-Control:"); header("Cache-Control: public"); header("Content-Description: File Transfer"); $pathinfo = pathinfo($this->properties['old_name']); $ras = $pathinfo['extension']; (array_key_exists($ras, $ctype_arr)) ? header("Content-Type: " . $ctype_arr["$ras"]) : header("Content-Type: " . $this->properties["type"]); header('Content-Disposition: attachment; filename="' . $this->properties['new_name'] . '";'); header("Content-Transfer-Encoding: binary"); if ($this->properties['resume']) header("Accept-Ranges: bytes"); if ($this->range) { header("Content-Range: bytes {$this->range}-" . ($this->properties['size'] - 1) . '/' . $this->properties['size']); header("Content-Length: " . ($this->properties['size'] - $this->range)); } else { header("Content-Length: " . $this->properties['size']); } @ini_set('max_execution_time', 0); @set_time_limit(); $this->_download($this->properties['old_name'], $this->range); } public function _download($filename, $range = 0) { @ob_end_clean(); if (($speed = $this->properties['max_speed']) > 0) $sleep_time = (8 / $speed) * 1e6; else $sleep_time = 0; $handle = fopen($filename, 'rb'); fseek($handle, $range); if ($handle === false) { return false; } while (!feof($handle)) { print (fread($handle, 1024 * 8)); ob_flush(); flush(); usleep($sleep_time); } fclose($handle); return true; } /** * Функция подсчета размера файла */ public function getFilesize($url) { if(file_exists($url)) { return filesize($url); } else { $x = array_change_key_case(get_headers($url, 1), CASE_LOWER); return (strcasecmp($x[0], 'HTTP/1.1 200 OK') != 0) ? $x['content-length'][1] : $x['content-length']; } } } ?>
masterweb » 2014.10.22 02:45

при нажатии скачать файл через етот класс то все нормально с размером файла, но когда сам файл качается то размер в закачках неопоределен. в чем дело?

misterweb » 2014.10.22 02:55

скрины
http://wapinet.ru/static/file/2014/10/22//5446e420c7261.jpg
http://wapinet.ru/static/file/2014/10/22//5446e3f6d28dc.jpg

Gemorroj » 2014.10.22 11:16

как минимум HTTP_RANGE не верно обрабатывается. и могут быть потенциальные проблемы в строчке "return (strcasecmp($x[0], 'HTTP/1.1 200 OK') != 0) ? $x['content-length'][1] : $x['content-length'];"

misterweb » 2014.10.22 13:06

как исправить подскажешь?

я не автор кода.

tipsun » 2014.10.25 23:32

Короче вот мой бред по поводу Singleton
Типа чтоб каждый раз в классе не писать код Singleton:

Код:

1
span style="color: #0000BB"><?phpclass SomeClass {//+ Singleton private static $_instance; private function __clone() { } private function __wakeup() { } public static function instance() { if (null === self::$_instance) { self::$_instance = new self; } return self::$_instance; } private function __construct() { } //- Singleton}

Я подумал запихать код в отдельный файл-класс и от него нужные классы наследовать..
Вот что-то типа такого:

Код:

1
span style="color: #0000BB"><?php// Singleton.phpclass Singleton{ private static $_instance = array(); public static function instance() { $class = get_called_class(); if (null === self::$_instance[$class]) { self::$_instance[$class] = new $class; } return self::$_instance[$class]; } private function __construct() {} private function __clone() {} private function __wakeup() {}}class Loader extends Singleton{ private $_state; public function register() { if (! $this->_state) { return $this->_state = spl_autoload_register(array($this, '_load')); } } public function unregister() { if ($this->_state) { return ! $this->_state = ! spl_autoload_unregister(array($this, '_load')); } } private function _load($className) { require_once($className . CLASS_EXTENSION); }}
Gemorroj » 2014.10.26 11:18

да-да посмотрел решения в инете, все сводится именно к этому)
единственное что, сам класс Singleton хорошо бы объявить абстрактным.

tipsun » 2014.10.26 12:06

Gemorroj написал:

да-да посмотрел решения в инете, все сводится именно к этому)
единственное что, сам класс Singleton хорошо бы объявить абстрактным.

Спасибо

tipsun » 2014.10.29 18:09

Как лучше всего передавать конфигу!?
Я вот не знаю, что выбрать:
----
1) Передавать через общего класса-предка

Код:

1
span style="color: #0000BB"><?phpabstract class Progenitor{ protected static $_cfg, $_registry;}

----
2) Создать спец. класс

Код:

1
span style="color: #0000BB"><?phpclass Config{ private static $_cfg; public static function get($arg) { return self::$_cfg[$arg]; }}

----
3) Каждый класс имеет собственные методы для принятия конфиги:

Код:

1
span style="color: #0000BB"><?phpclass SomeClass{ private static $_cfg, $_someParam; public static function setCfg($arg) { self::$_cfg = $arg; }// OR public static function setSomeParam($arg) { self::$_someParam = $arg; }}

----
Для автозагрузчика нужен "корень" и расширение, например.

Gemorroj » 2014.10.29 18:45

ну, универсальнее - 2 вариант. отдельный класс.

tipsun » 2014.10.29 19:40

Если делать этим вариантом, то надо делать все классы не статическими, чтоб через конструктор можно было сразу общую конфигу скинуть и забыть. Т.е. все равно в классе мы будем создавать переменную $_cfg

Код:

1
span style="color: #0000BB"><?phpclass SomeClass{ private $_cfg; public function __construct() { $this->_cfg = Cfg::get[__CLASS__]; }}

Допустим можно наследоваться от Progenitor и в определенном классе просто загрузить всю конфигу и забыть

Gemorroj » 2014.10.29 20:00

конфиг - синглтон.
Config::getInstance()->get('key');

tipsun » 2014.10.30 20:13

Gemorroj написал:

конфиг - синглтон.
Config::getInstance()->get('key');

Зачем? Почему не static?

Gemorroj » 2014.10.30 22:03

а зачем статик? как ты его инициализировать будешь?

tipsun » 2014.10.31 11:03

Ну через bootstrap можно.

sql555 » 2015.01.21 21:45

привет. Есть запрос

Код:

1
SELECT COUNT(`id`) AS `cnt`, `name`, `score` FROM `table` WHERE `name` = 'aaa' GROUP BY `name` ORDER BY `score` LIMIT 1

и в общем мне нужно, чтобы этот запрос вывел наибольший score, но выводит он вообще как-то странно... Как быть, подскажите.

нужно вывести из таблицы запись с определнным 'name'(это поле у каждого юзера свое - записей с одинаковым нейм может быть в таблице несколько), причем одну. Соответственно, когда я группирую по 'name' - у меня будет только один результат - хоть с LIMIT 1, хоть без него.
И мне нужен именно тот результат, в котором поле 'score' - наибольшее. Поэтому и пытаюсь отсортировать по этому полю в порядке убывания. А mysql сортирует в данном случае "от балды". Т.е. если есть у меня, например, записи со 'score' 1, 2, 3, 4, 5, то они при добавлении/удалении записи сортируются явно не по убыванию.

Помогите?

Gemorroj » 2015.01.22 12:24

Код:

1
SELECT COUNT(1) AS `cnt`, `name`, MAX(`score`) AS `max_score` FROM `table` WHERE `name` = 'aaa' GROUP BY `name`

у тебя там сначала группировка, а потом сортировка. Поэтому ты сначала получаешь 1 запись с name = aaa, а потом эту 1 запись сортируешь

sql555 » 2015.01.22 15:41

еще вопрос

Код:

1
$q = mysql_query("SELECT `id`, `subject`, `read`, `from`, `lid`, `time`, MAX(`lid`) AS max, (select count(*) FROM `letters` WHERE `id` = '".$id."' AND `to` = '".$id."') AS cnt FROM `chat_letters` WHERE `id` = '".$id."' AND `to` = '".$id."' GROUP BY `from` ORDER BY `read` = 0 DESC, max DESC LIMIT $start, 10;");

непонимаю почему непроисходит сортировка по `read` = 0 DESC

помогите?

sql555 » 2015.01.22 15:44

ето одна таблица, пропуст дописать chat_ в примере.

Gemorroj » 2015.01.22 18:02

нельзя указывать условия сортировки. ты можешь указать только колонку по которой сортировать. т.е. ноль там не понятно к чему.

sql555 » 2015.01.25 10:14

Привет.  вот нашол и переделал код наложение копирайта.
все работает, вот задаю себе вопрос "Все ли я нормально собрал"
подскажите?

Код:

1
span style="color: #0000BB"><?php$img = 'file.jpg';$wh = getimagesize('cop.png'); //копирайт$fh = getimagesize($img); //файл$sx=$fh[0]-$wh[0]-3;$sy=$fh[1]-$wh[1]-5;$rfile = imagecreatefromjpeg($img);imagecopy($rfile, $rwatermark, $sx, $sy, 0, 0, $wh[0], $wh[1]);imagejpeg($rfile,'filecop.jpg'); //сохраняемimagedestroy($rfile);
sql » 2015.01.25 11:10

Проблема в том что после наложения копирайта картинка стает с 200кб в 135кб

почему так?

Gemorroj » 2015.01.26 11:24

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

tipsun » 2015.01.28 22:15

Качество выстави на максимум на выходе. Кажется тот же imagejpeg имеет 3й параметр качество.
Добавлено спустя   3 минуты  40 секунд:
http://php.net/manual/ru/function.imagejpeg.php

despod » 2015.07.19 13:09

Всем привет!
есть небольшой кусочек кода
вроде все работает но Гистограмма уходет почему то вниз причем не вся только 1.3.6 из 10
остольные норм

Код:

1
span style="color: #0000BB"><?php$arr = array('20','55','7','189','102','27','200','76','300','210');$arrX = array('Q','W','E','R','T','Y','U','I','O','P');$vizit = 700;Header("Content-type: image/png");$imageY = 150; $im = imageCreate(370, $imageY);//300x120 $colors = imageColorAllocate($im, 0, 0, 0); $color1 = imageColorAllocate($im, 0, 110, 240);for ($x=1; $x<=10; $x++){ $h = round(($arr[$x-1]*$imageY)/$vizit); imageFilledRectangle($im,$x*34-13,$imageY-$h,$x*34+13, $imageY-10, $color1); ImageString ($im, 0, $x*34-13, $imageY-$h-10, round(($arr[$x-1] * 100 / $vizit),1).'%', $color1); } imagePng($im); imageDestroy($im);
Gemorroj » 2015.07.19 13:50

поправленный вариант:

Код:

1
span style="color: #0000BB"><?php$arr = array('20','55','7','189','102','27','200','76','300','210');$arrX = array('Q','W','E','R','T','Y','U','I','O','P');$visit = 700;//header("Content-type: image/png");$imageY = 150;$im = imagecreate(370, $imageY); //300x120$colors = imagecolorallocate($im, 0, 0, 0);$color1 = imagecolorallocate($im, 0, 110, 240);for ($x = 1; $x <= 10; $x++) { $h = round(($arr[$x - 1] * $imageY) / $visit); $xImageLeft = $x * 34 - 13; $xImageRight = $x * 34 + 13; $yImageLeft = $imageY - $h - 10; $yImageRight = $imageY - 10; $yImageRightPercent = $yImageLeft - 10; $percentString = round(($arr[$x - 1] * 100 / $visit), 1) . '%'; imagefilledrectangle($im, $xImageLeft, $yImageLeft, $xImageRight, $yImageRight, $color1); imagestring($im, 0, $xImageLeft, $yImageRightPercent, $percentString, $color1);}imagepng($im, '/test.png');imagedestroy($im);

Получалось что если колонка размером меньше 10 пикселей (твой отступ), то ломалась логика прорисовки y координат. Сделал отступ по 10 пикселей с обеих y координат.
И еще все функции в php должны быть в нижнем регистре. Не рекомендуется писать как попало используя регистронезависимость некоторых частей php.

despod » 2015.07.19 14:13

спасибо грамадное!
на будущее запомню!

koji » 2015.08.08 17:02

хранить видео в нескольких форматах (как mp4, 3gp, flv) слишком объемно, позволит ли ffmpeg конвертировать несколько видео в секунду, при явном запросе на требуемый формат, не пожирая все ресурсы? т.е. что дешевле обойдется память на жд или оператив.

Gemorroj » 2015.08.09 08:59

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

koji » 2015.08.10 22:04

Добавляя файл на сайте пользователь может выбрать для него метки
<input type="checkbox" name="labels[]" value="' . $key . '">
<!-- $key - это ID метки в БД -->

При отправке формы проверяю данные

if (isset ($_POST['labels']))
{
       Теперь нужно проверить массив $_POST['labels'] на наличие существования меток, то есть не передали ли хрен пойми что

загнал все метки с базы в массив $labels[$row[0]] = $row[1]; а как теперь сделать проверку не знаю. Нужно как-то перебрать ключи с переданного массива формой и проверить есть ли все они в массиве со всеми метками $labels

как бы проверить?

Gemorroj » 2015.08.11 12:18

Код:

1
span style="color: #0000BB"><?phpforeach ($_POST['labels'] as $postLabel) { if (!in_array($postLabel, $labels)) { throw new Exception('Неизвестная метка "' . $postLabel . '".'); }}

если я правильно понял задачу

tipsun » 2015.08.11 17:15

А можно свой вариант предложить?
Вроде работает.

Код:

1
span style="color: #0000BB"><?php$getTags = array( 'груша', 'яблоко', //'банан', //'арбуз',);$sysTags = array( 'клубника', 'апельсин', 'груша', 'яблоко',);$wrongTags = array();if (($wrongTags = array_diff($getTags, $sysTags))) { echo 'false<br/>'; print_r($wrongTags);} else { echo 'true<br/>'; print_r($wrongTags);}
Gemorroj » 2015.08.11 18:17

tipsun, ну да, твой вариант лучше)

koji » 2015.08.12 00:12

tipsun, супер :)

despod » 2015.08.18 09:46

Всем привет подскажите какой нибуть норм форум поставить! хочу от этого форума основной сайт построить

despod » 2015.08.19 18:22

Gemorroj, для чего нужно вот это

Код:

1
2
3
if(!defined('PUN')){
exit;
}

что то типо защиты?

Gemorroj » 2015.08.19 19:31

despod написал:

что то типо защиты?

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

despod » 2015.08.19 21:15

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

Gemorroj » 2015.08.20 07:37

despod написал:

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

http://forum.wapinet.ru/viewtopic.php?id=69 смотри 1 пост

despod » 2015.09.02 08:14

Привет!
есть кусочек кода

Код:

1
2
3
4
5
6
7
$a = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f');
 
for($i=0;$i<=sizeof($a);$i++){
echo '<tr>';
if($i%4!=0){$n='';}else{$n='<br/>';}
echo $a[$i].$n;
}

выводит он масив так
q
wert
yuio
pasd
f
а нужно
qwer
tyui
opas
df
что тут не правильно?

Gemorroj » 2015.09.02 09:41

собери в строку и разбей по 4 символа.

Код:

1
span style="color: #0000BB"><?php$a = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f');$str = implode('', $a);$arr4 = str_split($str, $str);foreach ($arr4 as $val) { echo $val;}
despod » 2015.09.08 08:10

Cпасибо!
но такой вопрос я вывожу с бд названия
и хочу чтобы шли в 2 колонки  вот и пытаюсь что то организовать

tipsun » 2015.09.08 13:46

despod, В 2 колонки, это тебе надо html вертеть или я не правильно это представил.

koji » 2015.09.09 11:24

Что можно добавить в пароль чтобы и его безопасность повысить и БД не навредить?

~ ! @ # $ % ^ & * ) ( _ - + = } { | ? > <

В регулярку просто вписываются символы как preg_match('/^[0-9a-z~!@#$%^&*)(_-+=}{|?><]{6,30}$/iD', $_POST['password']) или требуется как-то извращаться?

Gemorroj » 2015.09.09 12:47

зачем такие проверки? пусть пользователи вводят что хотят.
проверять стоит только длину пароля и его сложность (тут уже можно просто проверить чтобы пароль не был 123456 и т.п. или писать функцию подсчета сложности пароля).

koji » 2015.09.09 16:48

Gemorroj, если разрешить вводить все компрометация не получится?

tipsun » 2015.09.10 06:52

koji, пароль пользователя все равно оборачивается в md5(). Ну там + "соль". И при проверке он так же будет проверяться, через md5(). Если пользователь забудет пароль, то предоставляется форма, где он может ввести новый пароль.
Можно реализовать функцию генерирования сложного пароля. Как вариант к своему паролю, на выбор в общем.

Gemorroj » 2015.09.10 12:47

koji написал:

Gemorroj, если разрешить вводить все компрометация не получится?

что ты компрометировать собрался? если ты ограничиваешь символы в пароле, то скорее ты этим снижаешь его устойчивость, а не увеличиваешь.

despod » 2015.09.24 17:29

Подскажите кто нибуть для чего например делают в папке с фотками файл index.php - пустой.
Или в папках с другими какими то файлами

Gemorroj » 2015.09.25 10:34

mercurial вроде до сих пор не поддерживает добавление пустой папки. т.е. для vcs. еще для web-серверов не настроенных, чтобы не выдало список файлов в директории.

despod » 2015.09.25 12:27

Все понял спасибо!

tipsun » 2015.09.25 12:31

Как установить Symfony 2.7.4? На главной только ссылка на файл symfony.phar

Gemorroj » 2015.09.25 13:08

tipsun написал:

Как установить Symfony 2.7.4? На главной только ссылка на файл symfony.phar

это инсталлятор. запускаешь его так примерно:

Код:

1
php symfony.phar new my_project

php - путь к твоему php
symfony.phar - путь к инсталлятору симфони
new - команда создать новый проект
my_project - название проекта (создаст папку с таким именем)

tipsun » 2015.09.25 13:11

Gemorroj написал:

tipsun написал:

Как установить Symfony 2.7.4? На главной только ссылка на файл symfony.phar

это инсталлятор. запускаешь его так примерно:

Код:

1
php symfony.phar new my_project

php - путь к твоему php
symfony.phar - путь к инсталлятору симфони
new - команда создать новый проект
my_project - название проекта (создаст папку с таким именем)

Понял, спасибо. Установил вроде :)

despod » 2015.09.28 08:30

Приветствую !
есть такой вопрос
есть $_FILES["file"]["tmp_name"]
если я буду с помощью GD перегонять изображения
это мне поможет защетить от шелов и всякую дребедень чтобы не  закинули?

Gemorroj » 2015.09.28 09:51

despod, не раскрыто что именно ты будешь делать.

despod » 2015.09.28 12:43

Пользователи будут загружать  изображения,  jpg,  GIF, PNG,
Ведь если графикой не будет       imagecopyresampled  сам по себе выдаст ошибку,

Gemorroj » 2015.09.28 13:24

у тебя ошибка должна быть еще до imagecopyresampled. на этапе создания ресурса изображения.

despod » 2015.09.28 14:17

Может какой еще способ защиты есть? Еще лучше?

Gemorroj » 2015.09.28 15:34

нужно конкретную реализацию смотреть. в целом, хватит ошибки при создании ресурса.

despod » 2015.09.28 18:04

Ясно,и такой вопрос картинки лучше скриптом отдавать? Или примыми ссылками?

Gemorroj » 2015.09.28 18:08

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

despod » 2015.09.29 11:47

Что то не сображу если честно как прямую ссылку  проверить?  Я просто хотел с помощью хетачеса доступ в папку закрыть и скриптом выдовать,  хотя это не лучший вариант хочется хоть что то свое сделать толковое чтобы не говном было

Gemorroj » 2015.09.29 13:14

толковое - используй фреймворки)
например в симфони BinaryFileResponse из компонента HttpFoundation http://symfony.com/doc/current/componen … ction.html
писать такие низкоуровневые вещи стоит только ради изучения или если нет возможности использовать готовые решения.
а вопроса не понятл твоего. прямая ссылка на то и прямая, что ее содержимое отдаст веб-сервер минуя php.

despod » 2015.09.29 14:26

Не разу не пробывал с фремворками работать! Вот бы на русском что нибуть найти!  Сегодня почитаю спасибо

Gemorroj » 2015.09.29 16:48

попробуй yii2

despod » 2015.09.30 10:39

Оо почилал влегкую о yii,  там получается с помощью команд создаются классы,  практически писать ни чего не надо,  как я понял

Gemorroj » 2015.09.30 13:37

да, у них веб интерфейс даже есть вроде gii называется. но оно создает структуру только, логику все равно тебе писать придется.

despod » 2015.09.30 14:56

что то не могу установить делал все по этому  Уроку

Gemorroj » 2015.09.30 15:03

подозреваю, что php не настроен должным образом
Добавлено спустя    51 секунду:
и ты устанавливаешь yii1, а надо yii2. и устанавливается он через composer

despod » 2015.09.30 15:14

я с оф сайта качнул yii где там второй? http://www.yiiframework.com/download#yii2
ссыль откуда качал! я на денвер пытаюсь поставить

Gemorroj » 2015.09.30 19:19

ну таи там тебе про composer и говорят

despod » 2015.09.30 21:12

а все разобрался теперь ток опенсервер поставить нид чего не особо хочу делать но ковырнуть охото

Gemorroj » 2015.09.30 23:03

денвер давно умер. его место занял оупен сервер. так что ставь не раздумывая.

despod » 2015.10.01 13:04

Спасибо, привык так к денверу,  других не видел, 
Вот еще вопрос есть класс пдо подключения к бд,  как его унаследовать?

Gemorroj » 2015.10.01 15:06

как и любой другой класс

despod » 2015.10.03 23:09

Вот есть класс

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class DB {
private $instance;
public function run() {
 
try {
$this -> instance = new PDO('mysql:host=localhost;dbname=win', 'win', '123456');
$this -> instance = exec('SET CHARACTER SET utf8');
$this -> instance = exec('SET NAMES utf8');
}
catch (PDOException $e) {
exit('Connection failed: '.$e -> getMessage());
}
return $this -> instance;
}
 
public function __destruct() {
$this -> instance = null;
}
 
}

и еще 1

Код:

1
2
3
4
5
6
7
8
9
10
11
class a {
private $inst;
public function __construct() {
$this -> inst = new DB();
$this -> inst = $this -> inst -> run();
}
function queryFetch($sql) {
$st = $this -> inst -> query($sql);
return $st -> fetch();
}
}

пытаюсь вывести

Код:

1
2
$z = new a();
var_dump($z->queryFetch("SELECT * FROM `users` WHERE `id`=1"));

Вылазеет ошибка незнаю что за х,
Fatal error: Call to a member function query() on a non-object in Z:\home\test.td\www\include\iniSet.php on line 56
что не так сделал?

Gemorroj » 2015.10.04 10:07

$this -> instance = exec('SET CHARACTER SET utf8');
        $this -> instance = exec('SET NAMES utf8');
вот в этом проблема.

despod » 2015.10.04 12:05

спасибо решил проблему так
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'");
$this -> instance = new PDO('mysql:host=localhost;dbname=person', 'person', '123456',$this->options);
заработало
вобще такое решение с классами как сделал я это нормально? не каких косяков нет в нних?

Gemorroj » 2015.10.04 12:33

кодировку можно (и нужно) указывать в dsn.

Код:

1
mysql:host=localhost;dbname=person;charset=UTF8
despod » 2015.10.04 13:37

в моем случае
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'");
$this -> instance = new PDO('mysql:host=localhost;dbname=person;charset=UTF8', 'person', '123456',$this->options);
$options тогда можно убрать совсем?

koji » 2015.10.04 14:43

Подскажите, чем можно отыскать хотя бы одно совпадение из списка:
['яблоко', 'солнце', 'воду']
в переменной
$str = 'Жираф пил воду';
т.е. нужно пропустить все значения массива.

despod » 2015.10.04 15:15

вот может пригодиться

Код:

1
2
3
4
5
6
7
8
9
10
11
12
$arr = array('яблоко','солнце','воду');
$str = 'Жираф пил воду';
$i = array();
 
foreach($arr as $v){
if(strpos($str,$v)!=false){
$i[0]=count($v);
}
}
 
echo 'Совпадений ['.$i[0].']';

хотя совподение только одно будет

Gemorroj » 2015.10.04 19:13

koji написал:

Подскажите, чем можно отыскать хотя бы одно совпадение из списка.

http://php.net/in_array

tipsun » 2015.10.05 08:13

Как лучше сделать?
Сгруппировать характеристики товара (группы с подгруппами и т.д.)
Или
Создать метки и под определенную категорию товара "рисовать" шаблон отображения выстраивая нужные группы и т.п. самому, вручную

Gemorroj » 2015.10.05 10:08

2 вариант не понял

tipsun » 2015.10.05 11:27

Что-то типа такого, что-ли, не знаю. Сам пока норм не надумал.

Показать/Скрыть
- Общие характеристики
[block name="common"]
Тип: смартфон
Операционная система: Android 4.2
Тип корпуса: классический
Управление: сенсорные кнопки
Тип SIM-карты: обычная
Количество SIM-карт: 2
Вес: 123 г
Размеры (ШxВxТ): 65x125.5x12 мм
[/block]
- Экран
[block name="display"]
Тип экрана: цветной IPS, сенсорный
Тип сенсорного экрана: мультитач, емкостный
Диагональ: 4 дюйм.
Размер изображения: 800x480
Число пикселей на дюйм (PPI): 233
Автоматический поворот экрана: есть
[/block]
- Мультимедийные возможности
[block name="media"]
Фотокамера: 5 млн пикс., встроенная вспышка
Запись видеороликов: есть
Фронтальная камера: есть, 0.3 млн пикс.
Аудио: MP3, AAC, WAV, WMA, FM-радио
Разъем для наушников: 3.5 мм
[/block]
- Связь
[block name="network"]
Стандарт: GSM 900/1800/1900, 3G
[/block]
- Интерфейсы
[block name="interfaces"]
Wi-Fi: 802.11n
Bluetooth: 4.0
USB: micro-USB
Спутниковая навигация: GPS
Использование в качестве USB-накопителя: есть
[/block]
- Память и процессор
Процессор: MediaTek MT6572, 1200 МГц
Количество ядер процессора: 2
Видеопроцессор: Mali-400 MP
Объем встроенной памяти: 4 Гб
Объем оперативной памяти: 512 Мб
Слот для карт памяти: есть, объемом до 32 Гб
- Питание
Тип аккумулятора: Li-Ion
Емкость аккумулятора: 1500 мАч
Аккумулятор: съемный
Время разговора: 5 ч
Время ожидания: 300 ч
- Другие функции
Управление: голосовой набор, голосовое управление
Режим полета: есть
- Дополнительная информация
Комплектация: смартфон, аккумуляторная батарея, USB-кабель, сетевой адаптер, наушники, руководство

Gemorroj » 2015.10.05 12:37

аа, ну 2 вариант наверное более человекопонятный, если сделать хорошо, но более трудоемкий)
хотя я по юзеринтерфейсу ничего не смыслю.

tipsun » 2015.10.07 20:28

Как победить date.timezone?
Вроде везде указано: date.timezone = "Europe/Moscow". Sf2 ругается.
Использую OpenServer.

Gemorroj » 2015.10.07 20:38

Не везде скорее всего. Там в 2 местах нужно указывать. В меню открывающемся по правому клику на иконке в трее оупен сервера, нахожишь конфиг php. Там указываешь. Это для web сервера. И в консольном php, который в стандартном php.ini . В папке modules кажется он.

tipsun » 2015.10.07 21:22

Вот в чем дело! Ой позорище..
Оказывается я дебил, в OpenServer есть ведь командная строка PHP..
А я через обычную cmd.exe..

koji » 2015.11.24 17:25

Нашел ругулярку для проверки названия файла, то есть file_mus-ic.mp3

if (preg_match('/^[a-z_-]+\.[0-9a-z]{3}$/iD', $file))
    echo 'все ОК';

С "i" понятно, он пускает Заглавные буквы. А что "D" делает?
в мануале пишут "любой символ, кроме десятичной цифры" но пишу десятичную и пускает, видимо потому что есть "0-9a-z", может он вообще тогда там не нужен?

Gemorroj » 2015.11.25 11:12

http://php.net/manual/ru/reference.pcre … ifiers.php

koji » 2015.12.08 20:47

Подскажите, как получить продолжительность видео и его разрешение с помощью ffmpeg через функцию exec() в php?

Gemorroj » 2015.12.08 23:50

посмотри этот репозиторий https://github.com/PHP-FFMpeg/PHP-FFMpeg

koji » 2015.12.13 14:22

Duration: 00:07:00.46, start: 0.000000, bitrate: 2049 kb/s"
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1983 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc"

Как в инфе о видео можно вырезать ?
00:07:00     —   время
h264           —   кодек
1280x720    —   разрешение

Gemorroj » 2015.12.13 14:45

это ты консолью воспользовался? как ты этот вывод получил? указанный репозиторий предоставляет хорошую обертку над ffmpeg и есть готовые методы для получения нормальных данных.

koji » 2015.12.13 15:12

Gemorroj, да командой, у меня выхода нет, все равно приходится разбивать ролик на кадры чтобы сделать предпросмотр к видео

Код:

1
span style="color: #0000BB"><?php// $videoPath - путь к видео// $tmpPath - путь сохранения кадров видео $output = shell_exec('/usr/bin/ffmpeg -i ' . $videoPath . ' -an -y ' . $tmpPath . '/%d.jpg 2>&1');// одна строка разбивает видео и извлекает инфу

готовый класс будет излишним, я больше ничего не делаю
данные в $output
мне кажется, их можно вытащить одной регуляркой, ведь все в одной строке, но для меня это очень сложно

Gemorroj » 2015.12.13 16:47

не будет излишним, тем более что все что тебе надо он уже умеет)
а так... регулярками вытаскивать данные.

koji » 2015.12.13 17:06

он может создавать предпросмотр к видео?

Gemorroj » 2015.12.13 19:52

да, можно отрезать кусок и сконвертировать в нужный формат

koji » 2015.12.28 22:08

Шаблон 12:15:11; повторяется 4 раза, но в конце отсутствует ;

preg_match('/^\d{2}:\d{2}:\d{2};\d{2}:\d{2}:\d{2};\d{2}:\d{2}:\d{2};\d{2}:\d{2}:\d{2}$/D', $_POST['time'])

Становится непонятно.

Можно записать единожды \d{2}:\d{2}:\d{2}; указать количество повторений 4 и отсутствие ; в конце ?

Gemorroj » 2015.12.29 09:54

я бы оставил как есть

despod » 2016.02.28 15:58

Здравствуйте ребята!
возник небольшой вопрос точнее не могу алгоритм понять
есть цыкл
for(Что то тут){
вывод чего то
но в этом цыкле хочу еще и аватарки выводить
но в голову приходит ток 1 вариант
mysql_query(..............);
это же не есть хорошо в цыкле такие вопросы выполнять?



}
если кто то знает как реализовать аватарки пользователей
поделитесь пожалуйста

Gemorroj » 2016.02.28 20:58

во первых не нужно вообще использовать расширение mysql, нужно использовать 1 - pdo, 2 - mysqli.
можно, например, подготовить запрос вне цикла, а выполнять в цикле, можно выполнить 1 sql запрос вне цикла с перечнем id через условие IN, и в цикле доставать их.

despod » 2016.02.28 23:44

попробую завтро покажу что вышло

despod » 2016.03.01 09:26

Что то ни чего не выходит :(
Есть мной написанный кривой класс

есть две таблицы юзер и комната ! это чатик

Код:

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
class pg{
private $myConect;
private $total;
private $page;
private $postrow=array();
private $result;
public $num;
public $posts;
private $dir;
private $Url;
private $avatar;
private $linkId;
private $av;
 
function setPage($conect,$param,$param2,$urlPage){
$this->Url=$urlPage;
$this->myConect=$conect;
$this->result=$result;
//$this->sql=$param;
$this->num = 5;
// Извлекаем из URL текущую страницу
$this->page = $_GET['page'];
// Определяем общее число сообщений в базе данных
//$this->result = mysql_query($param,$this->myConect);
//$this->posts = mysql_result($this->result, 0);
// Находим общее число страниц
$this->total = intval(($param - 1) / $this->num) + 1;
// Определяем начало сообщений для текущей страницы
$this->page = intval($this->page );
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($this->page ) or $this->page < 0) $this->page = 1;
if($this->page > $this->total) $this->page = $this->total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $this->page * $this->num - $this->num;
// Выбираем $num сообщений начиная с номера $start
$this->result = mysql_query("".$param2." LIMIT $start, ".$this->num."",$this->myConect);
// В цикле переносим результаты запроса в массив $postrow
while ( $this->postrow[] = mysql_fetch_array($this->result));
}
 
function getMessage(){
echo "<table border='0' width='100%'>";
for($i = 0; $i < $this->num; $i++)
{
if($this->postrow[$i]['aid']!=0){
if( $this->postrow[$i]['aid'] == '2' ) { $topic_bot = '<img src="'.DIR.'/template/img/vunderkind.gif" alt="" border="0">';}
elseif( $this->postrow[$i]['aid'] == '3' ) { $topic_bot = '<img src="'.DIR.'/template/img/traxtenberg.gif" alt="" border="0">';}
elseif( $this->postrow[$i]['aid'] == '4' ) { $topic_bot = '<img src="'.DIR.'/template/img/mazafaka.gif" alt="" border="0">';}
 
[color=red] Вот тут нудно выыести Аватарку юзера[/color]
else { $topic_bot = ''; }
echo "<tr>
<td width='7%' style='padding:2px 5px 2px 8px;border:1px solid #CCCCCC'>".$topic_bot."
<br/><a href=\"addto.php".$this->Url."&amp;nocache=$nocache&amp;uid=".$this->postrow[$i]['aid']."\">".$this->postrow[$i]['nickname']."</a>
<br/>".$this->postrow[$i]['time']."</td>
<td style='padding:2px 5px 2px 8px;border:1px solid #CCCCCC'>".$this->postrow[$i]['msg']."</td>
</tr>";
}
}
echo "</table>";
}
function getPage(){
if ($this->page != 1) $pervpage = '<a href= '.($this->Url).'&page=1><<</a>
<a href= '.($this->Url).'&page='. ($this->page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($this->page != $this->total) $nextpage = ' <a href= '.($this->Url).'&page='. ($this->page + 1) .'>></a>
<a href= '.($this->Url).'&page=' .$this->total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($this->page - 2 > 0) $page2left = ' <a href= '.($this->Url).'&page='. ($this->page - 2) .'>'. ($this->page - 2) .'</a> | ';
if($this->page - 1 > 0) $page1left = '<a href= '.($this->Url).'&page='. ($this->page - 1) .'>'. ($this->page - 1) .'</a> | ';
if($this->page + 2 <= $this->total) $page2right = ' | <a href= '.($this->Url).'&page='. ($this->page + 2) .'>'. ($this->page + 2) .'</a>';
if($this->page + 1 <= $this->total) $page1right = ' | <a href= '.($this->Url).'&page='. ($this->page + 1) .'>'. ($this->page + 1) .'</a>';
 
// Вывод меню
return '<span style="background:#CCCCCC;padding:4px;margin:12px 10px 19px 10px">
'.$pervpage.$page2left.$page1left.'<b>'.$this->page.'</b>'.$page1right.$page2right.$nextpage.'</span><br/>';
}
 
}

вобщем как применить до цикла так и не получилось=(

TLENS » 2016.03.01 14:49

despod смотри перебираешь нужных пользователей и пишешь их id в масив. После делаешь выборку с базы всех этих пользователей одним запросом

Код:

1
span style="color: #0000BB"><?php$usersIdStr = implode(', ', $usersId);$query = "SELECT `id`, `avatarka` FROM `TABLE_NAME` WHERE `id` IN ($usersIdStr)";

далее уже дело за простым. А вообще можно хранить иконку аватарки в папке и в имени картинки вставить id юзера. Протом просто подставляешь в url

Код:

1
<img src="/img/avatarki/<?= $userId ?>.png" alt="" />
unanidaRa » 2023.12.27 10:44

Как можно создать предпросмотр к видео, и вопрос к Gemorroj: Как правильно реализовать вывод аватарок пользователей в цикле без использования расширения mysql?

Gemorroj » 2023.12.27 11:52

можно использовать ffmpeg с php оберткой https://github.com/PHP-FFMpeg/PHP-FFMpeg
про mysql + цикл не понял. В бд ты хранишь название аватарки, в файловой системе саму аватарку.

WapStyle » 2024.01.06 22:19

unanidaRa написал:

вот даже я них не понял, вывод аватарок без mysql,а где данные о юзерах хранятся?