Вы не зашли.
#1.
Admin
Off
(-1)
Administrator
2007.11.03 03:03
Постараюсь помочь в данном направлении
сердце пронзенное ветром
#2.
qwetek
Гость
2007.12.03 16:04
Admin написал:Постараюсь помочь в данном направлении
Я хочу в чате в анкете сделать вывод постов сказанных за сутки. Допустим Постов:1089(34) в скобках посты за последние сутки. Как это исполнить? Нужно писать таблицу, а я в этом не очень
.
#3.
Gemor
Гость
2007.12.03 17:05
приведи пример таблицы, в которой сообщения хранятся.
тут просто надо сделать запрос с условием чтобы время добавления сообщения не было старше заданного времени
что-то вроде такого
Код:
mysql_query('SELECT COUNT(*) FROM `messages` WHERE `time` > '.time()-86400); |
Это если время и сообщения хранятся в одной таблице, если в разных, то так
Код:
mysql_query('SELECT COUNT(*) FROM `messages`, `times` WHERE times.post > '.time()-86400); |
#4.
Серый
Гость
2008.01.14 18:06
Gemorroj, а как закрыть страницу паролем, как в твоих скриптах новостей? Очень надо, а как не пойму
помоги пожалуйста.
Код:
span style="color: #0000BB"><?phpif(!@$_SERVER['PHP_AUTH_PW'] || !@$_SERVER['PHP_AUTH_USER']){header('WWW-Authenticate: Basic realm="Authentification"');header('HTTP/1.0 401 Unauthorized');header('Content-type: text/html; charset=utf-8');exit('<html><head><title>Error</title></head><body><p style="color:red;font-size:24pt;text-align:center">Ошибка авторизации</p></body></html>');}$pass = 'пароль';$login = 'логин';// Проверяем пароль и логинif((trim($_SERVER['PHP_AUTH_PW']) == $pass) && (trim($_SERVER['PHP_AUTH_USER']) == $login)){// авторизация пройдена}else{// авторизация не пройдена}?> |
это называется BASIC авторизация
довольно хорошая и надежная вещь.
#6.
Серый
Гость
2008.01.15 08:08
Gemorroj, я создаю страницу pass.php, вставляю в неё этот код, обновляю, а проверки пароля нет, сразу ошибка авторизации. Почему?
Без понятия. Код 100% рабочий. Перезапусти браузер, очисти кэш и еще раз обнови.
#8.
Серый
Гость
2008.01.16 11:11
Код:
span style="color: #0000BB"><?phpif(!@$_SERVER['PHP_AUTH_PW'] || !@$_SERVER['PHP_AUTH_USER']){header('WWW-Authenticate: Basic realm="Authentification"');header('HTTP/1.0 401 Unauthorized');header('Content-type: text/html; charset=utf-8');exit('<html><head><title>Error</title></head><body><p style="color:red;font-size:24pt;text-align:center">Ошибка авторизации</p></body></html>');}$pass = '1234';$login = 'Admin';if((trim($_SERVER['PHP_AUTH_PW']) == $pass) && (trim($_SERVER['PHP_AUTH_USER']) == $login)){exit('<html><head><title>OK</title></head><body>Авторизация пройдена</body></html>');}else{header('Location: /');exit;}?> |
И сразу ошибка авторизации, без проверки пароля.
#9.
Серый
Гость
2008.01.16 11:11
Очистил кэш, обновил - то же самое. Пробовал в Опере и IE всё одно и то же
я не знаю... версия оперы? только что скопировал это, запустил в опере 9.50 - запросило авторизацию...
Код:
WWW-Authenticate: Basic realm="Authentification" |
- это запрос авторизации.
http://ru2.php.net/manual/ru/features.http-auth.php вот мануал на русском по поводу Basic авторизации
попробуй оттуда код
Код:
span style="color: #0000BB"><?php if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); echo 'Текст, отправляемый в том случае, если пользователь нажал кнопку Cancel'; exit; } else { echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>"; echo "<p>Вы ввели пароль {$_SERVER['PHP_AUTH_PW']}.</p>"; }?> |
#11.
Серый
Гость
2008.01.19 08:08
Опера 8.01 тот код тоже не робит. В скрипте news2 авторизация работает. Копирую эту страницу в другую папку - работает, что-то изменяю или переименовываю страницу - перестаёт.
пользуйся девятой оперой
код рабочий, проблема в браузере.
#13.
Серый
Гость
2008.01.22 08:08
ГГ, хорошо, как разживусь 9 оперой - отпишусь, но твои новости и на этой работают. Есть ещё один вопрос: может помнишь, я писал про форум PunBB, у меня был глюк с авторизацией, побродил по punbb.ru, но без толку. Не подскажешь, что можно сделать?
нет, как вариант, подождать когда я выложу то что у меня стоит
тут переписано побольше кода и проблем таких не возникало. выложу постараюсь на следующей неделе.
#15.
Серый
Гость
2008.01.22 11:11
Такая проблема и с твоей версией, и с punbb.ru может глюк из-за хостинга? т.к. на h2m и на денвере всё нормально работает. А в какой проге переписывать PHP+WML? А то после блокнота WML не робит.
#16.
Casper
Off
(-1)
Модератор-невидимка
2008.01.22 12:12
В блокноте нельзя. Я использую Notepad++, хотя, говорят почему то им тоже нельзя. Есть ещё PHP Expert Editor Хорошая прога, но не руссифицированная
Про редакторы есть отдельная тема. Там я написал чем пользуюсь. PHP Expert Editor вобщет русифицирован, и вообще это отечественная разработка
А блокнотом ни в коем случае не пользуйся, это же мазохизм
Добавлено спустя 1 минуту 49 секунд: а в чем именно проблема с авторизацией? у меня что-то никаких проблем не возникало
#18.
Casper
Off
(-1)
Модератор-невидимка
2008.01.22 13:01
А как называется эта тема? Что то я не нашел. Есть у тебя PHP Expert Editor на русском?
#20.
Серый
Гость
2008.01.22 16:04
PHP Expert Editor!!! Точно!!! А я и забыл, что у меня такая прога есть (месяц назад систему переустанавливал - теперь бардак жуткий, до сих пор порядка нет), теперь всё получается. А с форумом такое: вводишь логин и пароль, нажимаешь войти - "Успешный вход. Переадресация." потом попадаешь на главную, а там написано "Вы не зашли" после регистрации нового пользователя - тоже самое. Куки включены, реферер передаётся, на денвере робит, на h2m тоже, а на новом хосте - нет, хотя везде форум из одного архива.
Ээ... Такое дело. Библиотека. Как сделать чтобы слова не делились по страницам. fread(файл, 5000 и еще до ближайшего провела); ???
Добавлено спустя 4 минуты 29 секунд: А соответственно на следующей что бы fseek(файл, указанное количество+до ближайшего пробела, от начала файла);
Стране нужны автобусы!
Код:
span style="color: #0000BB"><?php$sz = 5000; // кол-во символов$pg = intval($_GET['pg']); // Это номер страиницыif($pg > 0){$sss = ($sz*$pg)-1;}else{$sss = $sz*$pg;}$f = fopen('file.txt', 'r');fseek($f, $sss, SEEK_SET);$str = fread($f, $sz+16);fclose($f);$str2 = mb_substr($str,0,strrpos($str,' '));$str3 = mb_substr($str,0,strrpos($str,'.')+1);$wp = ceil(filesize('file.txt')/$sz); // всего страницif(strlen($str3) > strlen($str2)){$str = $str3;}elseif($pg == $wp){$str = $str;}else{$str = $str2;}print $str;?> |
вот такая абракадабра
Отредактировано Gemorroj (2008.01.25 11:11)
Шо за mb_substr? Описание к ней бы где-нибудь. Справочник на php.Net н
Отредактировано Helqg (2008.01.25 17:05)
Стране нужны автобусы!
Все. Нашел. Теперь думать. // твой справочник функций че то неправильно работает. Так сказать не там ищет.
Стране нужны автобусы!
Ыыы. Просто. Только зачем нам один символ? ($sz*pg)-1
и так вроде 16 берем...
Отредактировано Helqg (2008.01.25 17:05)
Стране нужны автобусы!
да, это можешь убрать
я это из своей библиотеки выдрал, там вобщем свои заморочки
не до конца код почистил
Какая то муть выходит. Гг. Плохо. Может лучше передавать указатель... Тогда количество страниц не посчитаешь. Гм.
Добавлено спустя 5 минут 14 секунд: Ща надо глянуть, как дионисий читалку продумал.
Стране нужны автобусы!
кстати если что-то интересное нароешь, сюда напиши. мне и самому интересно.
Сильно пока не смотрел. Это довольно сложно назвать библиотекой, именно читалка. Потому как в админке надо вводить текст статьи. В этой статье \r\n меняются на [br] и по ним при чтении создается массив. Пока не смотрел как он считает страницы и переносит слова.
Стране нужны автобусы!
хм... точно... надо думать в сторону массива =DDD
А нет. Там полный писец
// По [br] только делится статья и заголовок. Затем скрипт берет всю статью и начинает с ней работать.
Добавлено спустя 1 минуту 2 секунды: А если она будет весить 100 килов... Тормозить не будет? Хм
Стране нужны автобусы!
$strrpos=strrpos($ar_text[1], " ");
$pages=1;
$t_si=0;
while($t_si<$strrpos){
$string = substr($ar_text[1], $t_si, $simvol);
$t_ki=strrpos($string, " ");
$m_sim=$t_ki;
$strings[$pages] = substr($string, 0, $m_sim);
$t_si=$t_ki+$t_si;
if($pa==$pages){$page_text=$strings[$pages];}
if($strings[$pages]==""){$t_si=$strrpos++;}
else{$pages++;}
Добавлено спустя 2 минуты 7 секунд: Это наверно может по
Стране нужны автобусы!
ужс
Ща скрипт нашел
на
tegos.ru // я конечно ниче не понимаю в напряге сервер, но мне кажется что то не то. Собирается из файла строка и с нужного символа по нужный работой скрипта читаем по 1! Символу. Так сделано что бы узнать что наступил конец файла. А если мне надо по 10000 символов выводить?
Отредактировано Helqg (2008.01.27 15:03)
Стране нужны автобусы!
#35.
mssk
Гость
2008.01.28 14:02
Народ такая проблемка, мне нужно из базы вывевести все данные у которых $id_user =$ id
делаю запрос
$sql = mysql_query("SELECT * FROM `users_project` WHERE `id_user` = '$id'");
$data = mysql_fetch_array($sql);
$url = $data['url'];
$pref = $data['pref'];
$name = $data['name'];
$wm = $data['wm'];
$email = $data['email'];
$status = $data['status'];
вывожу все данные на страницу данные выводяться но не все, у меня в бд две записи у которых id_project=2 и 3 выводиться только та у котрой $id_project=2
вот структура бд
CREATE TABLE `users_project` (
`id_project` int(10) unsigned NOT NULL auto_increment,
`id_user` int(10) unsigned NOT NULL default '0',
`pref` varchar(255) character set cp1251 NOT NULL default '',
`url` varchar(50) character set cp1251 NOT NULL default '',
`name` varchar(150) character set cp1251 NOT NULL default '',
`md5key` varchar(250) character set cp1251 NOT NULL default '',
`email` varchar(30) character set cp1251 NOT NULL default '',
`wm` varchar(13) character set cp1251 NOT NULL default '',
`status` char(1) character set cp1251 NOT NULL default '',
PRIMARY KEY (`id_project`),
KEY `word` (`pref`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 PACK_KEYS=0 AUTO_INCREMENT=9 ;
Код:
span style="color: #0000BB"><?php$sql = mysql_query('SELECT * FROM `users_project` WHERE `id_user` = '.$id);while($data = mysql_fetch_assoc($sql)){$url = $data['url'];$pref = $data['pref'];$name = $data['name'];$wm = $data['wm'];$email = $data['email'];$status = $data['status'];// делаем что-то с этими переменными}?> |
Вроде так =)
Отредактировано Gemorroj (2008.01.28 14:02)
#37.
mssk
Гость
2008.01.28 14:02
Работает
Сенкс ))
$open=fopen($file,'r');
fseek($open,$page*$length,SEEK_SET);
$textfull=fread($open,1020);
$last=strrpos($textfull,' ');
$textnotend=substr($textfull,0,$last);
if($page!=0)
{
$start=strpos($textnotend,' ');
;
$text=substr($textnotend,$start);
echo $text;} else echo $textnotend;
Добавлено спустя 2 минуты 1 секунду: Во так решил оставить. Вроде ниче так
осталось сделать красиво, коротко и защищенно.
Добавлено спустя 3 минуты 52 секунды: Вообщем остальное мелочи... Выбор папки и так далее... Решена главная проблема: при делении слов у меня браузер никак не хотел читать. А опера заходила
Стране нужны автобусы!
Код:
span style="color: #0000BB"><?php$length = 5000; // Кол-во символов$page = intval($_REQUEST['page']); // Номер страницы$file = 'file.txt'; // Текст$open = fopen($file,'r');fseek($open,$page*$length,SEEK_SET);$textfull = fread($open,$length);$last = strrpos($textfull,' ');$textnotend = substr($textfull,0,$last);if($page){print substr($textnotend,strpos($textnotend,' '));}else{print $textnotend;}?> |
Насколько я понял это должно выглядеть так?
Добавлено спустя 1 минуту 15 секунд: Пользуйтесь BB кодами!! код выделяется с помощью кода [cоde]код[/cоde]
Ага. Ты правильно понял. Но думаю все таки во
надо добавлять пару символов. Ща надо глянуть что за request.
Отредактировано Helqg (2008.01.28 21:09)
Стране нужны автобусы!
насчет
fread(); я что-то не понял. а
$_REQUEST - это массив в котором и GET и POST и COOKIES.
Там $length+20. Если же кому то нужен перенос слово в слово. То на следующей странице надо сделать строку из первых 20 символов, найти последний провел и использовать его. // а зачем использовать request,
понял. Если создавать выбор количества символов. Почему ты пишешь print? Есть разница с echo?
Стране нужны автобусы!
Проблемко. Ставлю тысячу символов-все нормально. Работает. Ставлю 2000 и более уже все плохо. Слова исчезают, начинает их делить.
это плохо. Мысли есть?
Стране нужны автобусы!
мысль стандартна - UTF-8, 2 байта, следовательно функции должны быть именно для этой кодировки. т.е. не скажем
strlen а
mb_strlen.
Разница между
print и
echo есть какая-то, я сам толком не знаю. Но на практике различий в я не замечал. Использование зависит скорее просто от привычки
Отредактировано Gemorroj (2008.01.30 21:09)
А как писать? mb_strlen(строка, кодировка); и как мне указать в кодировке utf-8?
Стране нужны автобусы!
да да, очень хороший материал
вот могу привести кусок из своего главного .htaccess
Код:
# Магические кавычки |
php_flag magic_quotes_gpc Off |
php_flag mаgiс_quоtes_runtime Off |
php_flag mаgiс_quоtes_sybаse Off |
|
# Не создаются переменные argc и argv |
php_flag register_argc_argv Off |
|
# Глобальные переменные! |
php_flag register_globals Off |
|
#Отладка |
php_flag display_errors Off |
php_flag error_reporting 0 |
php_flag log_error Off |
|
# Автоматическое подставление идентификатора сессии к ссылкам |
php_flag session.use_trans_sid On |
|
Options -Indexes |
AddDefaultCharset UTF-8 |
php_value default_charset UTF-8 |
|
# Макс размер |
php_value upload_max_filesize 2M |
php_value post_max_size 2M |
|
# Время |
php_value date.timezone "Europe/Moscow" |
|
# mbstring |
# Автозамена на мультибайтную кодировку! |
php_value mbstring.func_overload 6 |
считаю что то же самое должно быть на всех сайтах
Как видишь
php_value mbstring.func_overload 6. т.е. стоит автопреобразование. Хотя все равно всегда стараюсь писать с
mb_.
Использовать какие-либо самописные функции для работы с UTF-8 считаю в корне не правильным.
1) Это сильно снизит, так сказать, юзабельность кода, т.е. посторонним людям будет с ним сложнее работать, да и самому.
2) Как говорилось по ссылке, в PHP6 работа с юникодом нормализуется, так что ждем, хотя еще очень долго ждать придется
В PHP6 будут вообще устранены EREG функции, для лучшей совместимости, на будущее, сразу привыкаем к PERL регуляркам.
Отредактировано Gemorroj (2008.01.31 12:12)
Ага. Обьяснил вполне нормально
только на h2m.ru htaccess не дают трогать. // ща попробуемс с mb_*
Стране нужны автобусы!
Не. Может че хостинг или браузер... Мдя // вопросик: если к mb_ereg передать не в utf8 она нормально проверит? Надо что бы нет.
Добавлено спустя 3 минуты 30 секунд: А точнее что бы выдал false.
Отредактировано Helqg (2008.01.31 19:07)
Стране нужны автобусы!
что-то я не понял, нужно специально чтобы не правильно проверяло?
по умолчанию кодировка для mbstring обычно ставится windows-1251, так что с UTF-8 работать будет не корректно (если есть кирилица)
Ну я так понял все нормально будет. Не пропустит. Надо добивать эту библиотеку. Нет какой нить функции стандартной чтобы узнать количество файлов в папке? Или придется читать ее?
Добавлено спустя 5 минут 51 секунду: И вот еще что. filesize нормально работает с файлом в юникоде? Вроде бы должен нормально.
Стране нужны автобусы!
нету. читать... и в подпапках еще читать...
Тогда может функцию сляпать. Передавать ей папку. Там если не каталог переменную увеличиваем на одну. Выводим ее. Как то так в теории будет : ). У тебя как? В каждом файле?
Добавлено спустя 1 минуту 16 секунд: И вообще эту функцию в корень. Пригодится.
Стране нужны автобусы!
Ага. Мне понравилось. Что то об админке навеяло... .dat файлы. // Но есть непонятность. Если я в админке поставлю форму для загрузки файлов, то не получится ли что любой сможет добавить файл откуда угодно? Очень было б неприятно
Стране нужны автобусы!
ну дак... защиту делай чтоб в админку никто не зашел
Я может че недопонимаю. : ) ща гляну как делается форма uploada и уже буду более серьезно говорить
Отредактировано Helqg (2008.02.01 20:08)
Стране нужны автобусы!
Итак, вопрос. Как защищен мой каталог? Он вообще защищен? Если кто то создаст подобное у себя он сможет загрузить мне что то функцией
copy();? Ну наверно нет. Но хотелось бы наверняка знать
Добавлено спустя 3 минуты 33 секунды: В правах доступа на каталог ему еще на редактирование ставить?703?
Стране нужны автобусы!
прежде чем выполнится это
copy(); должна выполниться проверка пароля. на какой каталог? имеется ввиду папка куда файлы загружаться будут? тогда
777.
Что то не нашел... Благодаря чему в мой каталог не могут загрузить файлы с других сайтов? В copy, rename можно писать только относительный путь (надеюсь на это)?
Стране нужны автобусы!
в
copy можно писать какой угодно путь, в том числе копировать файлы с других сайтов, если директива
allow_url_fopen включена, т.е.
On. загрузить не смогут (надеюсь
) тому, что скрипт не станет копировать файл, если пароль не подойдет.
Отредактировано Gemorroj (2008.02.02 12:12)
Ладно, скажем так. Кто то пытается скопировать при помощи
copy(); файл мне в каталог с правами 777. Ему это удастся? Копирует скриптом на каком нибудь левом сайте.
Стране нужны автобусы!
нет, еслиб так можно было бы, представь что бы творилось в нете
Да я и думал что нет. Но просто не знал так изначально или че где надо подправить. // ща вот на распутье. Как лучше админку сделать? Один большой файл или на 2 разделить? И нормально будет если будет на доступ проверяться так: if($_GET['enter']!=='очень сложный пароль') exit('не судьба');
Стране нужны автобусы!
да, нормально. насчет кол-ва файлов... это как тебе удобно будет. смотря на сколько большой еще файл.
готово. Все на дат файлах
. Теперь надо подумать о новостной ленте.
Отредактировано Helqg (2008.02.02 21:09)
Стране нужны автобусы!
Кста, недавно пришлось поработать с XML, вещь. Была мысля комментарии замутить в XML, да как-то все не до того. Советую вобщем поковырять этот XML и если на фалах делать будешь, то с использованием XML
инфа тут:
http://php.su/functions/?cat=xml
Че такое .xml? Первый раз вижу это расширение. Как оно может помочь?
Отредактировано Helqg (2008.02.03 09:09)
Стране нужны автобусы!
#69.
Серый
Гость
2008.02.03 16:04
Gemorroj, привет. Про Basic авторизацию: скопировал твой код в PHP Expert Editor и всё заработало! Опера таже// ты говорил, что в новом форуме нашёл ошибку, не подскажешь где, и как закрыть? И ещё вопрос: решил немного переделать твой скрипт "Инфа о браузере", в где-то видел, что показывает разрешение экрана, кол-во цветов и наличие камеры, не знаешь, с помощью каких функций это сделать? Заранее СПАСИБО!
Серый, теоретически это можно выдрать с помощью JavaScript, но это ОЧЕНЬ не надежно, да и я лично подсказать не смогу. Как правило это просто собирается база с моделями телефонов и их характеристиками. Собственно инфа берется из этой базы.
Ошибка в форуме - письма на емыло отправляются в не верной кодировке. Просто надо убрать все
iconvНасчет XML я же ссылку дал
это РАСШИРЯЕМЫЙ язык разметки. Дело в том, что там в УДОБНОЙ форме можно хранить данные. К примеру RSS лента - это обычный XML документ. Так же можно и что-то свое сделать.
#71.
Серый
Гость
2008.02.05 15:03
Gemorroj, спасибо, всё ясно. Не посчитай за тупость, но где эти iconv и что это такое
В папке include файл email.php функция pun_mail
замени на это:
Код:
function pun_mail($to, $subject, $message, $from = '') |
{ |
global $pun_config, $lang_common; |
|
$to = trim(preg_replace('#[\n\r]+#s', '', $to)); |
$subject = '=?utf-8?B?'.base64_encode(trim(preg_replace('#[\n\r]+#s', '', $subject)))."?=\n"; |
$from = '"Forum Mailer" <'.$pun_config['o_webmaster_email'].'>'; |
|
$headers = 'From: '.$from."\r\n".'Date: '.date('r')."\r\n".'MIME-Version: 1.0'."\r\n".'Content-transfer-encoding: 8bit'."\r\n".'Content-type: text/plain; charset='.$lang_common['lang_encoding']."\r\n".'X-Mailer: PunBB Mailer'; |
|
$message = str_replace(array("\n", "\0"), array("\r\n", ''), pun_linebreaks($message)); |
|
if ($pun_config['o_smtp_host'] != '') |
smtp_mail($to, $subject, $message, $headers); |
else |
{ |
if (strtoupper(substr(PHP_OS, 0, 3)) == 'MAC') |
$headers = str_replace("\r\n", "\r", $headers); |
else if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') |
$headers = str_replace("\r\n", "\n", $headers); |
|
mail($to, $subject, $message, $headers); |
} |
} |
Отредактировано Gemorroj (2008.02.05 16:04)
#73.
Серый
Гость
2008.02.05 17:05
Gemorroj, всё заменил, огромное тебе спасибо
Браузер поймет такую страницу? Она собственно для браузеров, или универсальная? // да там на твоей ссылке только функции для работы. Надо глянуть шо за хмлъ
Стране нужны автобусы!
Какую
такую? XML это РАСШИРЯЕМЫЙ язык, т.е. из него хоть собственный аналог HTML слепить можно. Но это все же XML для него нужен свой парсер. если выдать в заголовке что это RSS, то будет RSS и откроется в соответствующем приложении. Других распространенных WEB сервисов на XML я не знаю
Так же XHTML и WML отвечают (ну должны отвечать) XML правилам.
Вот втыкаю в html. Есть какая то суровая разница между html и xhtml?
Стране нужны автобусы!
Ага, самое суровое как раз там, это обязательное соответствие XHTML стандартам XML. И как следствие очень жесткий контроль ошибок. Если в HTML браузер попытается игнорировать ошибку, то в XHTML, W3C консорциум рекомендует производителям браузеров показывать сообщение об ошибке. Это то, что сразу бросается в глаза. Так же, есть сведения, что поисковики (Google) больше ценят страницы на XHTML. Я когда-то сам верил в XHTML и что он спасет мир
но меня ждал облом. Блин, скрестили бы как-нибудь WML и HTML.
Усе. Все в xhtml. Все прологи взял твои. Заголовок тоже где то взял: application/xhtml+xml. Наверно верно. // новостную ленту я добил. Надо сделать терь простенький форум на mysql.
Стране нужны автобусы!
еще есть 1 серьезный ньюанс. если смотреть, например, мои скрипты, то там MIME тип отправляется так:
Код:
span style="color: #0000BB"><?phpif(substr_count($_SERVER['HTTP_USER_AGENT'], 'MSIE')){header('Content-type: text/html; charset=utf-8');}else{header('Content-type: application/xhtml+xml; charset=utf-8');}?> |
т.е. если в юзер агенте есть MSIE отправляем MIME тип что это HTML а не XHTML.
Интернет Эксплорер и все что построено на его движке не понимают MIME тип XHTML
Ага. Я прочитал об этом. Но там написано что IE нечего делать в вапе. Пусть оперу ставят
Стране нужны автобусы!
Вопросы по форуму. Че хранить в базе,а что в файлах? Юзеров понятно в бд, а посты, темы, разделы. // далее как передавать переменные тем, разделов постов. Может в сессии? У тебя наверно печеньями.
Стране нужны автобусы!
все в базе храни. переменные с темами, разделами, постами - думаю лучше просто через GET, а вот авторизацию через сессии.
Мдыц. А че в сессии то тащить только ник? А если она не обьявленна, то выкидывать? Таблицы: одна на юзеров, другая название разделов, третья ээ... Как содержимое тем вклинивать? Точнее так: в таблице темы как то делить по разделам? Или не надо. Гм
Стране нужны автобусы!
#84.
Гемор
Гость
2008.02.16 16:04
Просто если через сессии, то нельзя будет ни закладку сделать, ни ссылку на тему например где-нибудь в сети скинуть. В сессиях логин и пароль. А насчет таблиц это уже тебе решать. Просто старайся чтобы данные в базе НЕ ДУБЛИРОВАЛИСЬ.
Куда то все исчезло... Я спрашивал о том, зачем пароль таскать в сессии.
Стране нужны автобусы!
Мы переехали на новый сервер, бэкап базы немного старый
Насчет сессий, ну чтобы не перехватили сниффером. Хотя с другой стороны, например, в форуме софттайма пароль передается открыто в куках. Сессии нужны для безопасности, т.к. пароль нигде не светится.
#87.
Caspеr
Гость
2008.02.18 05:05
Админ, помоги пожалуйста. У меня в чате в комнатах в самом верху ссылка на новости, если они есть. Как сделать, чтоб эта ссылка там висела только, например, в течение пяти дней с момента добавления последней новости? Вот
файл.
Ясно, что он нигде не светится. Я вот не пойму зачем его передавать, как его использовать? Проверять на правильность на каждой странице? Ээ. А сессию юзер сможет создать как то, кроме как авторизуясь?
Отредактировано Helqg (2008.02.18 06:06)
Стране нужны автобусы!
Casper, я так понимаю, дата новости записывается именно датой, а не timestamp? Если так, то надо изменить так, чтобы записывался timestamp. А поттом уже работать с news.php, а chat.php я не понял зачем.
Helqg, передавать чтобы пользователю не пришлось каждый раз авторизовываться если он хочет например добавить сообщение. Данные сесси проверяются 1 раз, при ее создании, после передается ИДЕНТИФИКАТОР уже созданной сессии, и данные будут те, которые мы проверили в 1 раз. Почитай о сессиях на PHP.SU
Я читал о сессиях. Я не въеду зачем пароль передавать. Страница входа- сверяются логин и пароль. Если верно, то стартует сессия с одной переменной-логин. Никак не пойму где мне нужен будет пароль.
Стране нужны автобусы!
А почему с одной переменной? Запихивай туда логин и пароль. И потом никаких проверок, просто смотриш идентификатор сессии, если такой есть, то значит это авторизованный пользователь с паролем и логином которые занесены в эту сессию.
Ну вот допустим пользователя авторизован. В сессии у него и логин и пароль. Логин я буду использовать(от этой переменной посты будут писаться), а пароль? Да он лишний просто
Стране нужны автобусы!
неееееет, если без пароля, то от этого логина каждый писать сможет.
Как он сможет писать, если авторизацию проходят с паролем?
Стране нужны автобусы!
похоже мы друг друга не понимаем =/ ну прошел он авторизацию и что? перешел на другую страницу и снова проходить авторизацию?
Нет на другой странице проверяем наличие $_SESSION['user']. Если нету переадрессовываем
Отредактировано Helqg (2008.02.18 20:08)
Стране нужны автобусы!
ну попробуй, о результатах сообщи
Гг. Ага
Стране нужны автобусы!
CREATE TABLE `users`
(
`nick` char(10) NOT NULL,
`pass` char(20) NOT NULL,);
Добавлено спустя 1 минуту 52 секунды: без последней запятой перед скобкой. // Ну, красивая будет таблица?
Отредактировано Helqg (2008.02.19 18:06)
Стране нужны автобусы!
нет
подозреваю что таблица должна выглядеть как минимум вот так
Код:
CREATE TABLE `users` ( |
`id` INT(11) NOT NULL auto_increment, |
`name` VARCHAR(24) CHARACTER set utf8 collate utf8_general_ci NOT NULL, |
`pass` VARCHAR(24) NOT NULL |
) TYPE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
Не забывай делать все в UTF-8 и поле с
auto_increment тоже наверняка тебе потребуется. Т.к. идентифицировать пользователя по ID много удобней. Да и надежней.
Отредактировано Gemorroj (2008.02.19 18:06)
Шо за collate? И шо за тип myisam? Последняя кодировка это только для авто вырасталки?
Добавлено спустя 1 минуту 57 секунд: ALTER DATABASE имя_базы DEFAULT CHARACTER SET имя_кодировки. Вот што у меня в книжке пишут. В админе писать? Катит?
Стране нужны автобусы!
Посмотри в том же phpmyadmin'е, UTF-8 многогранен
collate уточняет кодировку
MyISAM - тип таблиц в БД. Он и так по умолчанию в принципе используется.
CREATE TABLE `users`
(
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nick` VARCHAR( 10 ) CHARACTER SET utf8 NOT NULL,
`pass` VARCHAR(20) CHARACTER SET utf8 NOT NULL
)
Добавлено спустя 2 минуты 50 секунд: Вот што осталось в итоге. Тут смесь всегоВсякие, что нашел. разные ошибки были
Про MyISAN страшные вещи пишут, что его в 5 версии не будет.
Стране нужны автобусы!
#104.
Admin
Off
(-1)
Administrator
2008.02.20 11:11
покажи мне плиз где это пишут... у меня пятая версия MySQL и на локалхосте и собсна здесь, на боевом сервере...
сердце пронзенное ветром
5 версия mysql. Гг. Че то я какое то старье читаю.
Добавлено спустя 3 минуты 17 секунд: Вопросик: как запрос написать для вставки новой записи. А именно что мне отправлять в поле с авто вырасталкой?
Стране нужны автобусы!
#106.
Admin
Off
(-1)
Administrator
2008.02.22 19:07
ничего. ноль туда пиши, MySQL сам прибавит 1 к предыдущему значению
сердце пронзенное ветром
Это хорошо. Теперь такая проблемко. #1054. Unknown column 'здесь как бы то, что я отправляю для вставки. Значение логина' in 'field list'
Стране нужны автобусы!
#108.
Admin
Off
(-1)
Administrator
2008.02.22 21:09
Полный запрос напиши. А вообще "Unknown column" - не существует соответствуещей колонки, куда ты данные записать пытаешся.
сердце пронзенное ветром
mysql_query('INSERT INTO `users`(`nick`,`pass`) VALUES (`'.$nick.'`,`'.$pswd.'`)')
Стране нужны автобусы!
Сам запрос верный. У тебя точно есть таблица
users а в ней поля
nick и
pass ???
CREATE TABLE `users`
(
`id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nick` VARCHAR( 10 ) CHARACTER SET utf8 NOT NULL,
`pass` VARCHAR(20) CHARACTER SET utf8 NOT NULL
);
Может надо че id передавать?
Добавлено спустя 1 минуту 55 секунд: Добавлено спустя 3 минуты 11 секунд: Ну или права доступа какие надо?
Стране нужны автобусы!
Усе. Это починил. Убрал `` из значений добавляемых данных. Заработало. // насчет авто вырасталки- ты прав. Даю ноль, а ей фиолетово
Стране нужны автобусы!
Попытался кодировку изменить в базе через ALTER. Фига. Синтаксис еррор
поддержке написал. Поддержка х2м. Ответят ли? :-(
Стране нужны автобусы!
http://www.google.ru/gwt/n?u=http%3A%2F%2Fwww.phpfaq.ru%2Fslashes&hl=ru&mrestrict=xhtml&q=ALTER+DATABASE+DEFAULT+CHARACTER+%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0.+%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83%3F&source=m&site=search
Добавлено спустя 2 минуты 4 секунды: А это ответ на все мои проблемы. Данные должны быть в ''. Хорошая статья
Добавлено спустя 4 минуты 49 секунд: А в поддержке вообще кадры сидят. "мы не даем рекомендаций по настройке баз данных".
но хоть обещали обновить с 4.0.Скокототам до последней. И на том спасибо.
Стране нужны автобусы!
Так зачем ты с h2m вообще связываешся??? возьми хоть недорогой но платных хост. имхо даже начинать с подобных хостингов нельзя, потому что слишком уж многое работать не будет.
Ну да... //
у меня тормоз как всегда. Допустим юзер заполнил формы входа и передает все это дело. Когда стартовать сессии?
Стране нужны автобусы!
Да вроде нормально все будет. Создание сессии до проверки условий всяких-разных. Тысячи сессий никак не возникнут? Ээ
Отредактировано Helqg (2008.02.24 21:09)
Стране нужны автобусы!
А что мешает создавать сессию после проверки? Да и время жизни сессии ограниченно, спустя некоторое время она самоустраняется.
Да там сессию объявлять, после вывода заголовков в браузер... Ну это я сляпал. Идем дальше-> как сделать регистрозависимые логин и пароль? Я ща что не введу- прохожу все равно.
Добавлено спустя 2 минуты 5 секунд: И даже что то мыслей нет.
Не знаю где подправить запрос: пхп, муску
Стране нужны автобусы!
хмммм... а с какого перепуга они стали регистроНЕзависимые?
Да уж
пишут либо COLLATE либо BINARY.
Первое вряд ли, а вот бинарные поля может пойдет. Гм
Добавлено спустя 1 минуту 25 секунд: Опять таблицы мучить. Ыы
Отредактировано Helqg (2008.02.25 20:08)
Стране нужны автобусы!
что за бред????
varchar или
text используй.
Varchar и использую. Но не тянет. Я думал может любой пароль подойдет. Но нет. Именно проблемко с регистром. С логином тоже самое
Отредактировано Helqg (2008.02.26 11:11)
Стране нужны автобусы!
и вообще при чем здесь тип строки? ты как сравниваешь пароль и логин? наверняка где-нибудь
strtolower или
strtoupper
$query=mysql_query("SELECT * FROM `users` WHERE `nick`='$nick' AND `pass`='$pass'");
if(mysql_num_rows($query)<1) {mysql_close($connect);
exit($prolog.'Вы не зарегистрированны!'.$end);}
else {
mysql_close($connect);
session_start();
$_SESSION['login']=$nick;
Стране нужны автобусы!
Ну и еще substr(); обрезает до заданной длины
Стране нужны автобусы!
А вот вырезка из книжки пхп 5. Колисниченко. "При поиске с помощью оператора SELECT не учитывается регистр символов" "Бинарные данные также можно использовать для хранения текста, но при поиске будет учитываться регистр символов"
Стране нужны автобусы!
посмотри через phpmyadmin в каком виде хранятся логин и пароль в базе. сохраняется ли регистр символов?
насчет SELECT... видимо там имеется ввиду следующий запрос
Код:
SELECT * FROM `test` WHERE `name` LIKE '%search%'; |
хотя я не уверен. всю жизнь изспользовался этот селект для проверки, где-то ты недосмотрел с регстром. ищи проблему в коде.
Да я поставил бинарные поля.
пусть. Кстати, разрешать ли русские буквы в логине, пароле? И если да, то как? Сразу отправлять в базу или транслитировать на входе/выходе? Переживаю от незнания.
Добавлено спустя 1 минуту 52 секунды: Дельный был совет. Но поздно
Стране нужны автобусы!
#131.
Admin
Off
(-1)
Administrator
2008.02.29 19:07
Да, конечно, ВЕЗДЕ и ПОВСЮДУ используй UTF-8. Главное условие - ВЕЗДЕ, а не как в одном мерзком скрипте, называемом еще "бодр-чатом", и тогда проблем не будет. В БД данные тоже должны храниться в UTF-8.
Часто проблема возникает с тем, что сервера настроены на ISO 8859 или windows-1251, а нам нужен UTF-8.
Решается это следующим образом: сразу после соединения с базой отправляем MySQL серверу информацию, что мы будем работать с UTF-8.
Код:
span style="color: #0000BB"><?php// Хост, пользователь, парольmysql_connect('localhost', 'root', '') or die('Can not connect to MySQL');// UTF-8mysql_query('SET NAMES `utf8`');// БДmysql_select_db('blog') or die('Error select the database');?> |
лично я этот код как правило выделяю в отдельный файл - connect.php и где надо подключаю через
requireЕще, твой код
Код:
span style="color: #0000BB"><?php$query=mysql_query("SELECT * FROM `users` WHERE `nick`='$nick' AND `pass`='$pass'");if(mysql_num_rows($query)<1) {mysql_close($connect);exit($prolog.'Вы не зарегистрированны!'.$end);}else {mysql_close($connect);session_start();$_SESSION['login']=$nick;?> |
вот это
if(mysql_num_rows($query)<1) {mysql_close($connect);
exit($prolog.'Вы не зарегистрированны!'.$end);}в принципе фигня. но лучше писать более грамотно и красиво, а именно
if(!mysql_num_rows($query) {
mysql_close($connect);
exit($prolog.'Вы не зарегистрированны!'.$end);
}дальше...
else {
mysql_close($connect);
session_start();
$_SESSION['login']=$nick;хм...
mysql_close($connect); - спорная вещь. соединение (если оно не постоянное (pconnect)) само закроется через 60 сек (по умолчанию). Но дело в том, что пользователь у тебя здесь таки прошел авторизацию, и далее он теоретически пойдет дальше бродить по форуму, т.е. будет коннектится к MySQL, так вот... не стоит лишний раз передергивать такие соединения. Если подразумевается что пользователь в дальнейшем будет использовать скрипт, то соединение закрывать не стоит, это открытое соединение используется при следующем действии пользователя. Оптимизация епт =) Я на ней помешан =)
сердце пронзенное ветром
Гм. Ага. Не подумал об этом. В следующем же скрипте
. Купить бы где учебник по мускулу. Один оракул продают. Че нить знаешь о нем?
Отредактировано Helqg (2008.02.29 23:11)
Стране нужны автобусы!
Об Оракуле? не
основы MySQL я лично брал из книжки Кузнецова & Симдянова PHP 5, потом какия-то инфа из сети. Часто пользуюсь этим
http://wapinet.ru/textbook/mysql/ построение SQL запросов как правило не вызывает особых проблем. Главное изначально грамотно спроектировать Базу Данных.
Тякс. Как вывести из базы постранично? Можно ли как переносить указатель у mysql_fetch array?
А то mysql_result и 2 цикла, это повеситься можно.
Стране нужны автобусы!
Оператор
LIMIT Код:
SELECT * FROM `table` WHERE `xz`=1 LIMIT 0,10 |
Как пользоваться COUNT()?
$запрос=мускул_запрос("SELECT COUNT(*) FROM таблица");
Что вернет $запрос? Точнее какой тип данных, может просто число?
Стране нужны автобусы!
#137.
Серый
Гость
2008.03.03 09:09
Gemorroj, привет, подскажи плиз как сделать отсчёт времени от какого - нить события, где-то видел, а как не помню
#138.
Admin
Off
(-1)
Administrator
2008.03.03 10:10
Helqg, вот что по этому поводу сказано на ru2.php.net
Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.для подсчета пользуйся следующей конструкцией
Код:
span style="color: #0000BB"><?php$count = mysql_result(mysql_query('SELECT COUNT(*) FROM `tables` WHERE `xz` = "xz2"'),0);?> |
в переменной
$count будет требуемый результат.
сердце пронзенное ветром
#139.
Admin
Off
(-1)
Administrator
2008.03.03 10:10
Серый, не совсем понятен вопрос...
Код:
span style="color: #0000BB"><?php// текущая дата$date = date('r',time());// текущая дата - 1 день$date = date('r',time()-86400);?> |
сердце пронзенное ветром
Ясно. Жалко конечно. Ну не число, так не число.
Стране нужны автобусы!
#141.
Серый
Гость
2008.03.03 11:11
Ну да, немного не так выразился, нада чтобы показывалось время, которое прошло, к примеру, с твоего дня рождения
#142.
Admin
Off
(-1)
Administrator
2008.03.03 12:12
Код:
span style="color: #0000BB"><?php// от текущего времени отнимаем время даты рождения и делим на кол-во секунд в 1 дне$date = (time() - mktime(0, 0, 0, 10, 30, 1984)) / 86400;// получаем сколько дней я прожил =)print $date;// можно округлить до целых в большую сторонуprint ceil($date);?> |
сердце пронзенное ветром
#143.
Серый
Гость
2008.03.03 13:01
Спасибо
а как посчитать часы, минуты, секунды, к примеру сколько времени сайту?
#144.
Admin
Off
(-1)
Administrator
2008.03.03 15:03
Код:
span style="color: #0000BB"><?php// от текущего времени отнимаем время даты рождения сайта, получаем сколько секунд прожил сайт$date = time() - mktime(0, 0, 0, 10, 30, 2007);$d = floor($date/86400); // дни$h = floor(($date-($d*86400))/3600); // часы$m = floor(($date-($d*86400)-($h*3600))/60); // минуты$s = $date-($d*86400)-($h*3600)-($m*60); // секундыprint "сайт живет $d дней, $h часов, $m минут, $s секунд";?> |
правда код идиотский наверно
сердце пронзенное ветром
http://gazenwagen.com/forum/index.php?id=6145 Хы. Прочитай. Конкуренция wapcms. Компроматы всплывают.
Стране нужны автобусы!
#146.
Admin
Off
(-1)
Administrator
2008.03.03 22:10
ппц... ужоз... никогда не притрагивался к этому дерьму и никому не советую.
сердце пронзенное ветром
#147.
Серый
Гость
2008.03.04 12:12
Спасибо за код, и вовсе он не идиотский
Про мотор: почитал, аж обидно стало, нах так делать? И так никогда его не юзал, а теперь и подавно не буду.
Ы. Форум встал. Емое. Как то невнятно работает substr();. Красиво режет буквы не по буквам. Пишу md_ пустая страница. Как обрезать строку до заданной длины?
Добавлено спустя 2 минуты 47 секунд: Через SET NAMES может попробовать? Хм. Мдя
Стране нужны автобусы!
Это я удачно заглянул %) mb_
Стране нужны автобусы!
#150.
Admin
Off
(-1)
Administrator
2008.03.10 09:09
чтобы
mb_ работало нужна библиотека mbstring
залезь в php.ini и расскомментируй соответствующую строку.
Код:
span style="color: #0000BB"><?php$test = 'тест ххх';$out = mb_substr($test,0,4,'UTF-8');// $out = 'тест';?> |
так же можно использовать
iconvКод:
span style="color: #0000BB"><?php$test = 'тест ххх';// PHP 5$out = iconv_substr($test,0,4,'UTF-8');// $out = 'тест';?> |
сердце пронзенное ветром
Да не просто я в упор писал md_ а надо mb_. И думал, почему ничего не работает... Гг. ///
Добавлено спустя 2 минуты 56 секунд: Да не. Я там буковку напутал просто.
/// Ща такое дело- надо новые темы наверх выводить. Чем? Может в базе создать столбик с временем последнего изменения записи? Ну там в секундах unix овых. И сравнивать их MAX()?
Стране нужны автобусы!
#152.
Admin
Off
(-1)
Administrator
2008.03.10 11:11
вообще по ID это можно, чем больше id записи, тем она новее, но я думаю записывать время создания темы полюбому надо) чтобы собсна показать когда создана запись.
сердце пронзенное ветром
Новее то да. Но с добавлением поста id не изменяется. Надо как то время колоть. У меня в базе уже строкой xx.xx.xxxx XX:XX хранится. Надо в timestamp перебить...
Стране нужны автобусы!
А, тогда да. Еще можно в таблице постов писать ID темы. И делать запрос к постам, сортируя их по времени. Соответственно берем из полученных данных ID тем и выводим. Я делаю именно так)
не. Посты будут по старинке- с первого и так далее. Без времени сляпал. А вот в темах нельзя без времени. У тя как время хранится? В секундах?
Стране нужны автобусы!
#156.
Gemor
Гость
2008.03.10 23:11
Время всегда храни как timestamp. Я темы и имел ввиду, из таблицы с постами ты вибираешь id тем.
По id я отбираю темы для нужного раздела среди кучи всяких тем. Так. Допустим. Эта куча отсортированна по id. А как выбрать по времени? Гм.
Стране нужны автобусы!
ты выбираешь ID но сортируешь по времени.
Код:
SELECT `id_theme` FROM `posts` ORDER BY `time` DESC LIMIT 10 |
Отредактировано Gemorroj (2008.03.11 11:11)
"SELECT `id`,`time`,`title`,`quantity` FROM `tems` WHERE `forum`='$kat' ORDER BY `time` LIMIT $start,$over"
Добавлено спустя 4 минуты 31 секунду: Должно прокатить. Там пока пыхадмин в ауте. Гг. Зато разрешили самим .htaccess трогать. // как лучше написать time(); или date("U"); ? Блин. В коде двумерные массивы
Они ниче не будут тормозить? Как выводить время работы скрипта?
Стране нужны автобусы!
#160.
Admin
Off
(-1)
Administrator
2008.03.12 19:07
наверное
time насчет двумерным массивов, если они нужны, то пусть будут. я очень сомневаюсь что они будут узким местом.
время работы скрипта:
Код:
span style="color: #0000BB"><?php// в самом верху// смотрим время$time = array_sum(explode(' ', microtime()));/*тут всякий код...*/// в конце снова смотрим время// отнимаем от него время начала работы скрипта, и обрезаем до 4 цифр после точкиprint round(array_sum(explode(' ', microtime()))-$time,4);?> |
сердце пронзенное ветром
Ы. Да, прост
Стране нужны автобусы!
Не катит. Мдя. Ща глянем что ты за DESC написал, если ниче значимого, то надо столбик id с авто вырасталкой удалять. Будет первичным ключом время.
Стране нужны автобусы!
Иххо. Заработало. Id оставил, но снял с него первичный ключ. ORDER BY это умная вещь.
Стране нужны автобусы!
#164.
Admin
Off
(-1)
Administrator
2008.03.15 15:03
когда рабочий пример форума будет?
я вот тоже щаз глобальную переработку форума устроил) надолго это првдва)
сердце пронзенное ветром
да основа уже есть. http://helqg.h2m.ru/forum
ща админку ляпаю. Форум пока страшный, но вроде без ошибок.
да у тебя форум наверно огромный. Килов 700 весит. Да и код наверно полный паштет...
Стране нужны автобусы!
#166.
Admin
Off
(-1)
Administrator
2008.03.16 17:05
весит болшье даже) и код, да... жуть) в скриптах форум
punbb_mod примерно то, что здесь стоит.
сердце пронзенное ветром
На h2m 5 мускул поставили. Ура. Только я как сидел с бинарными полями, так и остался сидеть. Зато пока искал utf8_*_cs нашел
http://oszone.ru/4743/MySQL
разницу между char & varchar.
Стране нужны автобусы!
отличная ссылка.
cs — case sensitive — чувствительно к регистру, ci — case insensitive — не чувствительно) - этого я не знал.
Для кодировки UTF-8 сервер выделяет разное количество байт для разных символов (в соответствии с кодировкой) в случае VARCHAR и 3 байта на каждый символ в случае CHAR. Таким образом, в UTF-8 строка CHAR(10) всегда занимает 30 байт, а VARCHAR(10) — от 1 до 31 байта. - этого тоже не знал. Можно было конечно и самому догадаться, но я как-то не догадался)
ага. Еще я немного для себя представил разницу между unicode и utf8. весьма хороший пример про то как обидели азиатов.
Стране нужны автобусы!
Да почему ж обидели??? Глобализация, никуда не денешся. Наша кирилица тоже 2 байта занимает на символ. Ради совместимости, я лично готов этим лишним байтом пожертвовать, поскольку проблема-то серьезная. А если беспокоит вопрос экономии трафика в нете, то есть GZIP. Меня уже просто достали эти проблемы с кодировками
Из ничего порой такой гемор из-за этих кодировок бывает, просто ужас =/
То есть? Почему к примеру не выбрал за основную кодировку 1251? Она ща многими телефонами поддерживается. В отличие от Koi8r, эта даже с моей sis kовской оперы не превратится в буквы.
Стране нужны автобусы!
Потому что в отличае от win-1251, в UTF-8 предусмотрены
все символы. А koi8-r вообще не рассматривается
ээ... ну хоть пример один. Че там нету? € знак евро есть?
Стране нужны автобусы!
по форуму: как сделать онлайн юзеров?
Стране нужны автобусы!
сделай в какой-нибудь таблице колонку с временем последнего посещения. при посещении зарегистрированным пользователем форума, соответственно заноси туда timestamp. ну и потом если этот timestamp больше time()-300, то пользователь в онлайне. 300 - это сколько секунд считать в онлайне.
по поводу Win-1251 vs UTF-8. В ACSII таблице 255 символов. Вот они
Код:
span style="color: #0000BB"><?phpfor($i=0; $i<=255; ++$i){print "&#$i;<br/>";}?> |
255! разве это много?? в Unicode я насчитал их больше миллиона! всякие пиктограммы, иероглифы.
вот почитай
http://ru.wikipedia.org/wiki/Юникод
Отредактировано Gemorroj (2008.03.21 12:12)
#176.
Casper
Off
(-1)
Модератор-невидимка
2008.03.21 13:01
Блокировка по юзер-агенту:
Код:
if($_SERVER['HTTP_USER_AGENT'] == 'Nokia6021/2.0 (04.50) Profile/MIDP-2.0 Configuration/CLDC-1.1'){exit('Вам сюда нельзя!');} |
Как сделать, чтоб пользователь с таким юзер-агентом переадрисовывался на другую страницу?
Отредактировано Casper (2008.03.21 13:01)
Код:
span style="color: #0000BB"><?phpif($_SERVER['HTTP_USER_AGENT'] == 'Nokia6021/2.0 (04.50) Profile/MIDP-2.0 Configuration/CLDC-1.1'){header('Location: redirect.php',true,301);exit;}?> |
еще замечу, что при переадресации через
Location в заголовке, следует отправлять код
301. По умолчанию отправляется 302.
Это нужно для того чтобы поисковики нормально относились к подобным переадресациям. При частых переадресациях с кодом 302, есть риск попасть в бан у поисковиков или по крайней мере снизить PR.
На переадресациях построены дорвеи, посему поисковые машины таким образом им противостоят.
#178.
Casper
Off
(-1)
Модератор-невидимка
2008.03.21 14:02
Благодарю!
это пользователь открывает страницу, а там? Отбираю всех юзеров у которых открытие страницы было недавно. Такс... То есть на каждой странице надо обновлять юзеру дату своего последнего действия?
Стране нужны автобусы!
да. сделай отдельно функцию которая будет это делать. и вставь ее везеде.
#181.
Stepan
Гость
2008.03.22 23:11
Хочу сделать свои поисковик на сайте,а в php почти не разбираюсь.Может кто нибудь может помочь?
просто представь что должен делать поисковый робот. все ремя быть в работе, ходить по ссылкам, ранжировать полученные данные в зависимости от содержимого, разумно противостоять различным SEO ухищрениям, хранить огромный объем информации у себя на сервере. Вероятно еще много всего требуется. В т.ч. и собственные мощные сервера. Вот например что пишет о себе яндекс.
В поиске Яндекса сегодня
сайтов: 11 896 113,
веб-страниц: 2 677 821 253,
объем проиндексированной
информации: 79 239 ГБ.
еще есть вопросы?
Отредактировано Gemorroj (2008.03.23 14:02)
так. Время работы готово.
с онлайн думаю пока погодить... Надо сделать анкету юзера. Че б туда всунуть, почту, дату регистрации, постов живых, тем живых, ээ. Картинки наверное будут много места занимать...
Добавлено спустя 3 минуты 58 секунд: кстати ушел от двумерных массивов. Как оказалось возможно такое:
Код:
while($f=mysql_fetch_assoc($)){} |
Стране нужны автобусы!
ну да, будет выполняться, пока не получит false
http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
Хорошо знаешь английский? Я чет ниче не понял. Может важное че.
Стране нужны автобусы!
да, английский там жестокий. может это американский, а не английский даже.
ну 1 -
echo быстрее чем
print2 -
$ret = print "hello"; так можно, и переменная $ret будет равняться 1, в то время как с
echo такие штуки не прокатя. На счет AND, OR and XOR я не понял
что-то говориться что они более низкоуровневые, но как это связать я не понял.
3 -
echo "and a ", 1, 2, 3; - так можно, а вот с
print не выйдет.
хреновый из меня переводчик, как смог перевел)
вот еще пара ссылок
http://www.phpforum.ru/index.php?showtopic=346]http://otvety.google.ru/otvety/thread?t … ae2ec5eac1от себя добавлю что я и сам не первый раз копаюсь в отличиях echo и print, но толку это дает мало. Одни говорят что быстрее print другие echo. В любом случае если и есть разница в скорости, то она крайне мала, на столко что вот даже выяснить толком не могут, что же все-таки быстрее)
Думаю лучше просто использовать то, что ближе душе. Мне вот print больше нравится почему-то.
регулярное выражение бунтует :
[[:alnum:]-.]+@[[:alnum:]-]+(\\.[[:alnum:]-]+)*
никак не пойму в чем трабл
Стране нужны автобусы!
увидел ща про клик клуб и регулярку, но все таки хотелось бы понять в чем я промахнулся. Мне вот конечно круглые скобки не нравятся, но у меня в книжке именно пример с такими скобками
Стране нужны автобусы!
#189.
Admin
Off
(-1)
Administrator
2008.03.28 21:09
возможно из-за 2-х слешей
[[:alnum:]-.]+@[[:alnum:]-]+(\\.[[:alnum:]-]+)*
сердце пронзенное ветром
трабл однако. Взял с маговского форума регулярку- тоже не пашет. Ща местную возьмем// Warning: ereg(): REG_ERANGE in... on line ...
Стране нужны автобусы!
Код:
preg_match("/^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,6}$/i", $mail); |
пробуй эту еще, если снова ошибка вылезет, будем думать.
чет аще ниче не работает
Код:
lt;?include('./time.php');include('./xhtml.php');header('Content-type:application/xhtml+xml;charset=utf-8');echo $prolog;if(!isset($_POST['nick'])||!isset($_POST['pswd'])||!isset($_POST['mail'])) exit('не все поля заполнены!<br/>'.$end);$nick=$_POST['nick'];$pswd=$_POST['pswd'];$mail=$_POST['mail'];if((mb_strlen($nick)>10)||(mb_strlen($pswd)>20)) exit('имя до 10 символов, пароль до 20<br/>'.$end);if(!eregi('[a-z0-9_]+',$nick)||!eregi('[a-z0-9_]+',$pswd)) exit('разрешено использовать только буквы латинского алфавита, цифры и знак подчеркивания в логине и пароле<br/>'.$end);if(!preg_match('/^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,6}$/i',$mail)) exit('Неверный адрес электронной почты'.$end);if(isset($_POST['info']))$info=mb_substr($_POST['info'],0,500); else $info='не указано';if(!$connect=mysql_connect('localhost','db_helqg','превед'))exit ('база в ауте :-(<br/>'.$end);mysql_select_db('db_helqg',$connect);$info=mysql_real_escape_string($info);echo 'Регистрация<br/>Логин: <b>'.$nick.'</b><br/>Пароль: <b>'.$pswd.'</b><br/>Почта:<br/><b>'.$mail.'</b><br/>О себе:<br/>'.$info.'<br/>';if(mysql_num_rows(mysql_query("SELECT `id` FROM `users` WHERE `nick`='$nick'"))) exit('логин занят<br/><a href="reg.php">обдумать</a><br/>'.$end);else {mysql_query("INSERT INTO `users`(`nick`,`pass`,`mail`,`mnenie`,`info`,`old`,`went`,`create`,`write`,`ban`,`exp`) VALUES ('$nick','$pswd','$mail','начинающий форумист','$info','".timestamp()."','0','0','0','0','0')"); echo 'запрос отправлен';}mysql_close($connect);echo '<br/><a href="index.php">к формам</a><br/>';slow();echo $end;?> |
Стране нужны автобусы!
Код:
span style="color: #0000BB"><?phpinclude('./time.php');include('./xhtml.php');// не забывай о пробелах, без них бывают проблемыheader('Content-type: application/xhtml+xml; charset=utf-8');echo $prolog;// убираем лишние пробелы$nick=trim($_POST['nick']);$pswd=trim($_POST['pswd']);$mail=trim($_POST['mail']);// проверяем не пустые ли переменныеif(!$nick || !$pswd || !$mail){exit('не все поля заполнены!<br/>'.$end);}if((mb_strlen($nick)>10) || (mb_strlen($pswd)>20)){exit('имя до 10 символов, пароль до 20<br/>'.$end);}if(!eregi('^[a-z0-9_]+$',$nick) || !eregi('^[a-z0-9_]+$',$pswd)){exit('разрешено использовать только буквы латинского алфавита, цифры и знак подчеркивания в логине и пароле<br/>'.$end);}if(!preg_match('/^[[:alnum:]][a-z0-9_\.\-]*@[a-z0-9\.\-]+\.[a-z]{2,6}$/i',$mail)){exit('Неверный адрес электронной почты'.$end);}if(isset($_POST['info'])){$info=mb_substr($_POST['info'],0,500);}else{$info='не указано';}if(!$connect=mysql_connect('localhost','db_helqg','превед')){exit('база в ауте :-(<br/>'.$end);}// Соединение с базой в UTF-8mysql_query('SET NAMES `utf8`');mysql_select_db('db_helqg',$connect);$info=mysql_real_escape_string($info);// желательно использовать <strong>, а не <b>echo 'Регистрация<br/>Логин: <strong>'.$nick.'</strong><br/>Пароль: <strong>'.$pswd.'</strong><br/>Почта:<br/><strong>'.$mail.'</strong><br/>О себе:<br/>'.$info.'<br/>';if(mysql_num_rows(mysql_query("SELECT `id` FROM `users` WHERE `nick`='$nick'"))){exit('логин занят<br/><a href="reg.php">обдумать</a><br/>'.$end);}else{mysql_query("INSERT INTO `users`(`nick`,`pass`,`mail`,`mnenie`,`info`,`old`,`went`,`create`,`write`,`ban`,`exp`) VALUES('$nick','$pswd','$mail','начинающий форумист','$info','".timestamp()."','0','0','0','0','0')");echo 'запрос отправлен';}mysql_close($connect);echo '<br/><a href="index.php">к формам</a><br/>';slow();echo $end;?> |
на сколько я понимапю проблема была не в регулярке.
isset проверяет СУЩЕСТВУЕТ ли переменная, а она у тебя будет существовать, хоть и пустая.
да вряд ли. Не фатально. У меня страница что то грузит не том объеме, в каком должна.
Код:
$test=mysql_query("SELECT `id` FROM `users` WHERE `nick`='$nick'"); |
echo 'Логин: '; |
if(mysql_num_rows($test)) |
exit('занят<br/><a href="reg.php">обдумать</a><br/>'.$end); |
else { |
я даже так условие распаковал, но даже слово логин не появляется. В чем то блин серьезный косяк
Добавлено спустя 1 минуту 53 секунды: isset заменил на !empty
Стране нужны автобусы!
в данном коде ошибок нет. может быть ошибка спряталась в каком-нибудь файле, который инклудится в этот файл.
в одном две переменные начала и конца. Второй сразу смотрит время, и потом вычитает его функцией slow(). В форум то я захожу все нормально.
Too many connections- для мускула это как ? Из моего скрипта или идет для всех баз хостинга?
Добавлено спустя 4 минуты 46 секунд: о, вложения работают красиво.
Отредактировано Helqg (2008.03.31 11:11)
Стране нужны автобусы!
вроде заработало. Все с нуля переписал, не подглядывая
Стране нужны автобусы!
Gemorroj подскажи как вывести например последние две темы форума на главную страницу.форум на мускуле
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
как можно на это ответить не зная структуры БД???
в общем случае примерно так
Код:
span style="color: #0000BB"><?php$sql = mysql_query('SELECT * FROM `tables` ORDER BY `id` DESC LIMIT 2');$result1 = mysql_fetch_assoc($sql);$result2 = mysql_fetch_assoc($sql);?> |
#200.
вандал
Гость
2008.04.03 14:02
ну я щас через час пример таблицы кину
тяк.
Вот что хочется вспомнить. Как проверить, что юзер добавляет на сайт картинку? Просто проверить расширение файла?
Стране нужны автобусы!
вобщем да. еще можно проверить функцией
getimagesizeКод:
span style="color: #0000BB"><?php$arr = getimagesize('photo.jpg');//$arr[2]; // type?> |
если
$arr[2] =1, то это GIF. если 2, то это JPEG. если 3, то это PNG
ага. Гуд
Стране нужны автобусы!
интересный скрипт. Особенно как автор пишет о нем.
Стране нужны автобусы!
чушь, видел уже. не существует универсальных функций.
админ расскажи поподробней о функции BASEDIR для чего и где её применять. и не грузит ли она сервер при многократном обращении этой функцией?
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
вообще функции
basedir нету. есть например
basename — Возвращает имя файла из указанного пути.
Вероятно ты имел ввиду функцию
realpath — Возвращает канонизированный абсолютный путь к файлу. Т.е. раскрывает символы /./ ../, так же убирает лишние /
Насчет того, как сильно она грузит сервер у меня информации нет, но думаю не сильно.
нет именно ".BASEDIR." . Ну вот например есть у нас две страницы: одна лежит в корне сайта index.php . а другая лежит в папке dir/main.php . есть еще папка со стилем в которой лежит низ страницы theme/foot.php . Вот нам надо вывести на этих двух страницах например баннер который лежит в theme/img/banner.gif . написав в foot.php код баннера например <img src="theme/img/banner.gif"/> он не будет виден ни на одной странице а если мы добавим этот BASEDIR то все станет на свои места. например напишем в foot.php следующее <img src="".BASEDIR."theme/img/banner.gif"/> теперь этот баннер будет и на index.php и на dir/main.php
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
в твоем случае это константа, вероятно прописана в конфиге.
сделать ее можно как и любую другую константу, а именно
Код:
span style="color: #0000BB"><?phpdefine('BASEDIR','нужное значение');?> |
и в дальнейшем пользоваться этой константой с указанным значеием.
к слову чтобы получить текущую папку, можно воспользоваться следующей конструкцией
Код:
span style="color: #0000BB"><?php$basedir = dirname($_SERVER['PHP_SELF']);?> |
и еще я бы рекомендовал просто писать путь к баннеру от корня. Т.е. не theme/img/banner.gif, а /theme/img/banner.gif (в начале слеш)
Ааа. Я очнулся. Форум надо отложить в ящик или я умру за ним... Надо че нить другое попробывать. Вот к примеру крестики-нолики.
Понятно, что сложно но надо попробывать.
Добавлено спустя 6 минут 14 секунд: так, нолики значит , крестики...
страница, на ней 9 символов- 9 переменных, допустим =. Сначало ходит игрок - один символ меняется на +. Точнее значение переменной. видать надо сессию будет ляпать. Мда. Такс. Затем скрипт ему отвечает, пусть пока отвечает random. И
после чьего то хода проверка на 8 выигрышных комбинаций и на ничью. Вроде так
Добавлено спустя 9 минут 16 секунд: если есть умные мысли буду рад
Стране нужны автобусы!
неумным в особенности
Стране нужны автобусы!
нарисуй форму игры в эти крестики нилики, я что-то сообразить не могу именно как форму нормальную сделать.
чуть не умер. Скачал скрипт у тебя загруз центра, так карта к бобруйску.
Это кадры конечно... Дорога для разбега... Апстена.
Добавлено спустя 3 минуты 14 секунд: а нафиг мне форма? Все в сессии 9 переменных. get, post- их введут сразу выигрышную партию. Пусть будет на голых ахрефах
Стране нужны автобусы!
не, я от формы отталкиваюсь. без нее не соображу.
ну может и можно. Это надо глянуть учебник по html. Если для ссылок возможно- имя значение , то можно и через форму.
Добавлено спустя 1 минуту 10 секунд: если нет, то 9 форм.
Стране нужны автобусы!
все таки без форм
. //
дан массив. Как найти чего больше плюсов или нулей? Два цикла и сравнение? Может есть функция на поиск количества заданного элемента?
Стране нужны автобусы!
ну наверное нужно будет лучше просто прописать все возможные варианты, их не так много, как мне думается. и сравнивать данные в сессии с готовыми вариантами. просто и надежно.
варианты это на выигрыш. А проблема в том, чей ход. И мне надо знать чего больше в массиве. Крестиков или ноликов...
Стране нужны автобусы!
нет, порыл мануал, такой функции нет. можно выбрать КЛЮЧИ массива с определенными параметрами, но не из значения. Вообще, ты изначально идешь не верным путем. Сначало нужно ЧЕТКО представлять что ты хочешь сделать. Ну я по крайней мере не видя формы, представить дальнейшую разработку скрипта не могу.
ну да. Чето уже написанно. Ща прочитаю, может понимая что написал %) увижу ошибки:
-стартует сессия
-проверка не передан ли скрипту ход игрока, то есть нолика. Если так и есть то объявляем переменную сессии с именем 'aнужное число'
-цикл 9 раз. В нем условие существует ли переменная от а1 до а9. Если существует то элементу $а[нужное число] присваиваем значение нужной сессии иначе равна _
Стране нужны автобусы!
-проверяем ничью, то есть имеются ли в массиве элементы _
-проверяем победу. Лучше функцией. Тут правда будет проблема, если нельзя global $a.
-если ход соперника, то в массиве случайный элемент _ превращается в крест. Затем выводятся все 9 элементов массива, сбивается переменная хода скрипта.
- если же не ход соперника, то двумя циклами и условием "если данный элемент массива равен _" выводятся ссылки на пустые поля и символы содержания элемента массива, если не пустые. Создается сессия на ход соперника.
Добавлено спустя 2 минуты 47 секунд: ыгыгы. Стопудово не будет работать
Стране нужны автобусы!
Код:
span style="color: #0000BB"><?phpsession_start();if(isset($_GET['a'])){$z='a'.$_GET['a'];if(!isset($_SESSION[$z]))$_SESSION[$z]='0';}for($i=0;$i!=9;$i++){if(isset($_SESSION['a'.$i]))$a[$i]=$_SESSION['a'.$i];else$a[$i]='_';}for($i=1;$i!=9;$i++){$empty.=$i;if($a[$i]=='_') $hod+=1;}if($hod==0) { session_destroy();exit ('ничья');}function win_lose($znak) {global $a;for($i=1;$i!=7;$i+3){if($a[$i]==$a[$i+1]&&$a[$i]==$a[$i+2]) { session_destroy();exit('победил'.$znak); }if(($a[1]==$a[5]&&$a[5]==$a[9])||($a[3]==$a[5]&&$a[5]==$a[7])){session_destroy();exit('победил'.$znak);}}win_lose('0');win_lose('x');if(isset($_SESSION['enemy'])){ $znachenie=mb_strlen($empty)-1;mt_srand(time());$enemy=mt_rand(0,$znachenie);$ready=$empty[$enemy];$a[$ready]='x';$_SESSION['a'.$a[$ready]]='x';for($i=1;$i!=7;$i+3){for($j=$i;$j!=3;$j++){echo $a[($j+$i-1)].' ';}echo '<br/>';}session_unregister('enemy');echo 'Оппонент сделал ход!<br/><a href="index.php">обновить</a><br/><a href="index.php?end=1">заново</a><br/>'; }else{for($i=1;$i!=7;$i+3) {for($j=1;$j!=3;$j++) { $v=$j+$i-1;if($a[$v]=='_') echo '<a href="index.php?a='.$a[$v].'">_</a> ';elseecho $a[$v].' ';}echo '<br/>';}$_SESSION['enemy']=true;}?> |
Добавлено спустя 2 минуты 47 секунд: что то h2m тормозит. Пока тестирование откладывается
Добавлено спустя 8 минут 17 секунд: пока правда без Заголовков, и без рестартов... Ну это уж как дело пойдет
Стране нужны автобусы!
свежее: забыл одну }, не объявил $hod, $empty.
главный косяк в функции
всегда выигрывает ноль. Гг. Совсем забыл про $znak
Добавлено спустя 7 минут 33 секунды: блин. Превышенно время выполнения
как так. Сверх оптимизированный код. Практически без циклов
Стране нужны автобусы!
http://www.freelancer.com.ua/programming-languages/2006/08/04/
искал правда совсем не это, но внимание остановило. Особенно как в комментах мастера C не признают других языков.
Добавлено спустя 1 минуту 44 секунды: if(($a[$i]==$a[$i+1])&&($a[$i]==$a[$i+2])&&($a[$i]===$znak))
Как это записать проще? Ужос. Что то мне кажется через цикл будет совсем не проще.
Стране нужны автобусы!
ну не свех уж...
здесь же в тестах показано было, что isset относительно медленная функция
так же лучше заменить
for($i=1;$i!=9;$i++) на
for($i=1;$i<9;$i++) (во всех циклах)
условие в условии... Гм
Стране нужны автобусы!
мда. Надо че то думать с проверкой на победу. Execution time не хватает однако
Стране нужны автобусы!
http://hitfounder.livejournal.com/7002.html
свежачок. Интересно что C не рассматривают как общий язык, а делят на 3
неужели такие разные
Стране нужны автобусы!
дада, C такой. Имел смелось ознакомиться в общих чертах с C и C++, могу подтвердить что отличаются, а C# на сколько я знаю еще сильнее отличается.
Интересно еще что JAVA так сильно всех опережает. Это на западе на самом деле так, у нас несколько другая ситуация. У нас бы Delphi повыше был, да PHP думаю тоже, а вот JAVA наоборот, как мне кажется была бы не на первом месте. И уж точно не 20% у нее было бы.
Еще если посмотреть тенденцию, то число PHP кодингистов постоянно растет
а вот JAVA кодингистов все меньше. Еще почему-то не увидел я тут ASP. Ну не верю я что им так мало народу пользуется. Еще момент... Вызывает сомнение что на C++ пишут меньше чем на чистом C. Вероятно подсчет имеет некоторую погрешность. А вообще инфа интересная
Хотя сравнивать скажем PHP и Бейсик, как мне кажется не совсем корректно
Работает! Ужос. Скока я косяков написал сначало...
пока работает
правда не решен еще вопрос с функцией на победу, но это не серьезно. Главное сессии заработали
Стране нужны автобусы!
ну выложи рабочий скрипт. т.е. с ФОРМОЙ
а так для меня это как кусок мяса. оно не живое)
http://www.disciples3.ru/news/news_rus_1.htm
когда же она выйдет? Скорей бы. Самая мною ожидаемая игра. Обещали в том году
потом на месяц отложили, а потом еще на год. И комп еще надо купить...
Стране нужны автобусы!
Код:
span style="color: #0000BB"><?phpif(isset($_GET['end'])){session_destroy();unset($_GET['a']);}session_start();include('./work.php');header('Content-type:application/xhtml+xml;charset=utf-8');echo $prolog;if(isset($_GET['a'])){$z='a'.$_GET['a'];if(!isset($_SESSION[$z]))$_SESSION[$z]='0';elseecho 'старые координаты, пропуск хода!<br/>';}for($i=0;$i<10;$i++){$ses='a'.$i;if(isset($_SESSION[$ses]))$a[$i]=$_SESSION[$ses];else$a[$i]='_';}function win_lose($znak) {global $a;for($i=1;$i<8;$i+=3) { if($a[$i]==$znak && $a[$i]==$a[$i+1] && $a[$i+1]==$a[$i+2]){session_destroy();exit('Победил<strong> '.$znak.'</strong>'.$last);} }}win_lose('0');win_lose('x');$empty='';$hod=0;for($i=1;$i<10;$i++){if($a[$i]=='_') {$empty.=$i;$hod+=1;}}if($hod==0) { session_destroy();exit ('Ничья!'.$last);}if(isset($_SESSION['enemy'])){ $znachenie=mb_strlen($empty)-1;mt_srand(time());$enemy=mt_rand(0,$znachenie);$ready=$empty[$enemy];$a[$ready]='x';$uzhos='a'.$ready;if($_SESSION[$uzhos]='x')echo 'enemy plotting strategy!</p><p align="center"><strong>';for($i=1;$i<8;$i+=3){for($j=1;$j<4;$j++){echo $a[($j+$i-1)].' ';}echo '<br/>';}session_unregister('enemy');echo '</strong>Оппонент сделал ход!<br/><a href="index.php">далее</a>'.$last; }else{echo 'Ваш ход:</p><p align="center"><strong>';for($i=1;$i<8;$i+=3) {for($j=1;$j<4;$j++) { $v=$j+$i-1;if($a[$v]=='_') echo '<a href="index.php?a='.$v.'">_</a> ';elseecho $a[$v].' ';}echo '<br/>';}$_SESSION['enemy']=true;echo '</strong>'.$last;}?> |
Добавлено спустя 1 минуту 36 секунд: Код:
span style="color: #0000BB"><?php$prolog='<?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></head><body><p align="left">';$last='</p><p align="center">-=-=-</p><p align="left"><a href="index.php?end=1">заново</a><br/><a href="../">на главную</a></p></body></html>';?> |
Добавлено спустя 5 минут 55 секунд: еще надо все таки будет сделать проверку на победу. И неплохо бы как нить продумать разум оппоненту.
Стране нужны автобусы!
ыыыы)
круто))
PHP парсер ругается просто благим матом, но это хня, игрушка прикольная
)
ща тоже поковырять ее попробую)
не считает знакинаискось. ну тоесть так
--x
-x-
x--и еще, что это значит? -
enemy plotting strategy!?
я ж говорю. Он совсем никак не считает. За это будет отвечать функция win_lose. "enemy plotting strategy" это просто любимая фраза из игры с sega. "враг разрабатывает стратегию"
Стране нужны автобусы!
мда. Крестики нолики это конечно интересно, но надо пробывать сделать для 2 игроков. Человеков. Только как? как узнать кто с кем играет. Надо какую то базу. Допустим таблица. Поля: кто играет, с кем, ээ. Чорт. Надо глянуть скрипты каких нить игр
Стране нужны автобусы!
дело вроде двинулось. Уже продумал немного. Будут сессии и база с 14 столбцами. Надеюсь в задумке нигде не ошибся :)
Отредактировано Helqg (2008.04.27 22:10)
Стране нужны автобусы!
вот ведь... Проблемко... И че я сразу в таблице id не сделал. Терь переделывать. Это ведь так удобно, искать игру по точному столбцу, а не по нику то ли создателя то ли подключившегося
Стране нужны автобусы!
ты имеешь ввиду присвоить уникальное значение переменным отвечающим за крестики и нолики? хм, возможно) тебе видней
чорт. Как всегда. Ниче не понятно- ниче не работает. : ( индексовая страница после заполнения формы выводит чистую страницу:
index.php
Код:
lt;?session_start();include('./work.php');header('Content-type:application/xhtml+xml;charset=utf-8');echo $prolog;db_connect();if(!isset($_POST['nick'])&&!isset($_SESSION['nick']))error('<form action="index.php" method="post">Введите ник:<br/><input type="text" name="nick" maxlength="10"/><br/><input type="submit"/></form>');if(!isset($_SESSION['nick'])&&isset($_POST['nick'])){$zanyat=mysql_query("SELECT * FROM `battle` WHERE `starter`='".$_POST['nick']."' OR `enemy`='".$_POST['nick']."'");if(!mysql_rows($zanyat)){$_SESSION['nick']=$_POST['nick'];echo 'Ваш ник: '.$_SESSION['nick'];}else error('Ник пока занят!');}if(isset($_SESSION['id_game'])){echo 'вы уже играете!<br/><a href="fight.php">к бою</a>';exit($final);}$games=mysql_query("SELECT * FROM `battle` WHERE `game`='0'");echo '<br/>'.mysql_rows($games).' игр <br/>';while(mysql_array($games)) {echo '<a href="fight.php?id='.$games['id'].'">'.$games['starter'].'-'.$games['time'].'</a><br/>';}echo '<a href="create.php">создать</a><br/>'.$final;?> |
Добавлено спустя 1 минуту 58 секунд: work.php
Код:
lt;?$up=array_sum(explode(' ',microtime())); // время$prolog='<?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></head><body><p align="left">';$final='</p><p align="center">-=-=-</p><p align="left"><small>['.slow().']</small></p></body></html>';function slow() {global $up;return round(array_sum(explode(' ',microtime()))-$up,4);}if(!$connect=mysql_connect('localhost','db_helqg',':)'))exit ('База в ауте:-('.$final);mysql_select_db('db_helqg',$connect);function error($mess) {global $final;session_destroy();echo '<strong>'.$mess.'</strong>';exit($final);}?> |
Стране нужны автобусы!
а таблицы?
Добавлено спустя 3 минуты 32 секунды: еще тут PHP5 нужен. у тебя он?
Код:
CREATE TABLE `battle` |
( |
`id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT, |
`game` INT UNSIGNED NOT NULL, |
`starter` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, |
`enemy` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, |
`hod` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, |
`time` INT UNSIGNED NOT NULL, |
`a1` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, |
`a2` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a3` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a4` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a5` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a6` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a7` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a8` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`a9` VARCHAR( 2 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, |
PRIMARY KEY(`id`) |
) TYPE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; |
******
php5 точно. Всякие mb_ тоже поддерживает
Стране нужны автобусы!
убейте меня
ошибка в моем лучшем стиле
mysql_rows();
mysql_num_rows();
Стране нужны автобусы!
mysql_array();
mysql_fetch_array();
А так в целом все работает
Стране нужны автобусы!
страшный код. Гг. Возможно ли удалить кусок гет массива?
unset($_GET['myhod']);
не пашет
а так приходится к неправде приравнивать
Стране нужны автобусы!
Сцуко, он не приравнивается к неправде. Честный, непослушный GET массив...
: )
Стране нужны автобусы!
почему??? GET - это
обычный массив, и unset тоже должен работать.
да, чорт с ним. Была проверка на неверный ввод, теперь проверки нет. Но если ввести не верно то и выполняться ничего не будет.
пусть так будет пока.
Стране нужны автобусы!
ээ... Где кнопка выложить файл?
Стране нужны автобусы!
фиг с ней.
href
Стране нужны автобусы!
Helqg написал:
ээ... Где кнопка выложить файл?
жми
ответить там будет)
ну че? Ну как? Я там даже прочитайменя написал : )
Стране нужны автобусы!
круто))) рубался с IE и Оперы))
еще кнопку "обновить" сделай когда ждешь ход соперника)
день добрый подскажи как мне обойти защиту по ай пи.у меня есть скрипт который бродит по сайтам и собирает информацию.а не могу сделать чтоб он передавал ай пи если не сложно подскажи или в icq 8100966 за деньги допиши эту возможность
nokia70 написал:
а не могу сделать чтоб он передавал ай пи
поясни.
скрипт который подделывается под браузер мобильного телефона как сделать чтоб он был с ай пи на сайте стоит проверка по ай пи и дальше этой защиты я пройти не могу не пропускает по ай пи
Добавлено спустя 5 минут 7 секунд: можешь написать в icq 8100966 в офф быстрее все обговорим или ты только на форуме
только форум.
надо лазить через прокси.
нужно делать маскировку (или фальсификацию) ip адреса
Добавлено спустя 1 минуту 10 секунд: скрипт на перле
аааа... если перл, то я пасс.
а кто ни будь может подсказать
Добавлено спустя 1 минуту 35 секунд: так если на php сделать какой ни будь модуль. Подключить
Эхь где б взять скрипт какой нить онлайн стратежки... Мысли то конечно есть, но страшно. Вот так пишешь- пишешь и оп , не баланс. Нет баланса, нет интереса. cswap.org так и сдох. Были у него хорошие задумки, но получилась фигня и дорабатывать он не стал : (
Стране нужны автобусы!
#265.
Gemor
Гость
2008.05.09 01:01
Что касается этих игр, очень важна именно задумка, проработка деталей сюжета игры. А уже потом непосредственно кодинг.
А вообще мое имхо. Жуткий бред эти игры) играть в это, по-моему невозможно в принципе)
гг. Да страшное чувство, что бездарно убиваешь время. Есть немного. Но раньшеш играл. И с тех пор уважение к ним.
Стране нужны автобусы!
#268.
Kir
Off
(1)
Участник
2008.05.12 18:06
Приветствую! Помоги пожалуйста с импортном таблицы, точнее я не могу eе заполнить, вoт пример
Код:
CREATE TABLE `top_ly4` ( |
`id` int(11) NOT NULL auto_increment, |
`title` TOP, |
`pass` FcNdNADZ, |
`email` kir_2380@mail.ru, |
`link` top.ly4.h2m.ru, |
`about` text NOT NULL, |
`date` date NOT NULL default '0000-00-00', |
`today` int(11) NOT NULL default '0', |
`yesterday` int(11) NOT NULL default '0', |
`bef1yes` int(11) NOT NULL default '0', |
`bef2yes` int(11) NOT NULL default '0', |
`allday` int(11) NOT NULL default '0', |
`counthost` int(11) NOT NULL default '0', |
`1host` int(255) NOT NULL default '0', |
`2host` int(255) NOT NULL default '0', |
`3host` int(255) NOT NULL default '0', |
`ip1` 77.222.34.80, |
`ip2` text NOT NULL, |
`ip3` text NOT NULL, |
`ip4` text NOT NULL, |
`cin` int(11) NOT NULL default '0', |
`allin` int(11) NOT NULL default '0', |
`out` int(11) NOT NULL default '0', |
`allout` int(11) NOT NULL default '0', |
PRIMARY KEY (`id`) |
) TYPE=MyISAM AUTO_INCREMENT=0 ; |
что мне надо прописать и где? CREATE TABLE 'users"( /// вoт вмeсто users нaдо нaзвaниe таблицы? 'title' text NOT NULL, /// вмeсто чeго мне надо прописать заголовок вместо title или text NOT NULL, 'pass' text NOT NULL, и так далее... И какой pass прописaть что выдан для входа в базу данных или новый... На x2м написан пример обращения и базе данных из php скриптa: $dbhost="localhost"; $dbname="..."; $dbuser="..."; $dbpass="..."; $link=mysql_connect($dbhost,$dbusur,$dbpass) or die ("Не могу подключится к серверу БД"); mysql_select_db($dbname,$link) or die ("Не могу подключится к БД");вот куда мне это все вставить? Вообще запутался... Что куда? Помоги пожалуйса разобраться.
у кого еще здоровые нервы, ответте пожалуйста..
по поводу статьи... ну да, ну да... приятно почитать умных людей)
я за модульное программирование) пример - Gmanager (
http://wapinet.ru/gmanager/) на мой взгляд все можно сделать
функциямида, там используются классы (PclZIP, Tar и др) но не суть, суть в файле
functions.php
Эээ... Это круто. Особенно создание таблицы.
Ответы
1.Таблица у тебя однозначно косая. Пароль кстати поменяй, мало ли.
2.Да. Вместо users название таблицы.
3.Title-название столбца таблицы. Text-тип ячейки. А not null- значит, что не может быть пустой.
4.Пароль от базы данных используется при подключении к базе данных, никак не при создании таблицы.
5. это все вписывается прямо в php код. Но до вызова какой ли функции работающей с бд.
6. Знания в мозг. Руки печатать.
1:0 в пользу знатоков
Стране нужны автобусы!
#272.
Kir
Off
(1)
Участник
2008.05.12 19:07
Helqg так я пробывал импортировать пишут "Импорт дaмпа зaпушeн. Вывод команды: ERROR 1064(42000) и дальше что то на анг. Короче понял что ошибка. a как сделать чтобы таблица была не косая.?..
Добавлено спустя 5 минут 55 секунд: Сейчас еще зашел в index там настройки, вписaл данные и выдало ERROR, на других страницах написано удалите Instal, так, a я не знаю еще что с базой? a его же после удалять как с базой будет все нормально, и как понять что я подключился?
перечитай ридми скрипта во первых.
во вторых, приведи пример таблицы которую ты НЕ трогал.
#274.
Kir
Off
(1)
Участник
2008.05.12 20:08
Gemorroj, так a в ридми не чего нет вот http://top.ly4.h2m.ru/readme.txt , вoт пример таблицы которую не трогал http://top.ly4.h2m.ru/tables.sql, Gemorroj помоги пожалуйса, понять как она заполняется ,что бы не была кривая...
вот и заливай которую ты НЕ трогал.
а для добавления записей в БД нужно писать отдельно SQL запросы.
#276.
Kir
Off
(1)
Участник
2008.05.12 20:08
Так в в саму таблицу не чего не надо писать? Я имею ввиду название таблицы, title, email, и.т.д.
Gemorroj написал:
вот и заливай которую ты НЕ трогал.
#278.
Kir
Off
(1)
Участник
2008.05.13 16:04
Все равно не хочет работать? Когда заполняю instal.php dbhost, dbuser, и.т.д пишут что ошибка установки скрипта... попробуйте еще раз... Может обращение к базе в скрипте не для h2m или даже не знаю, что...
Добавлено спустя 5 минут 21 секунду: Gemorroj, a надо какое то время после отправки файла sql или cкрипт сразу должен запускатся...?
#279.
Kir
Off
(1)
Участник
2008.05.14 17:05
Все разобрался с topoм, всем спасибо, там все проще чем я думал, таблицу отправлять самому не надо, в instal прописал данные и все, у меня заработало. . .
ну вот... Хорошо хоть install.Php изучил.
Стране нужны автобусы!
ща в rogue battle копаюсь. Полезно. Хоть с cron'ом научусь ладить. Заодно гляну как там классом к базе коннектят.
Стране нужны автобусы!
и значит вопрос. Ошибка соединения с базой.
Как в классе увидить массив? global?
Стране нужны автобусы!
: ) под снос. Ну невозможно это. Включается главная. Она достает header.Php , в нем
Код:
if ( $isadmin ) { |
$incloc = '../'; |
} |
if ( !$incsetup ) { |
require( $incloc . 'includes/inc-setup.php' ); |
как это понимать? Че там будет инклудиться...
Стране нужны автобусы!
забыл добавить.
Переменной incloc в главной не пахнет. Откуда она идет непонятно. Че будет если она неправда, даже подумать страшно.
Стране нужны автобусы!
вероятно как-то так надо.
Код:
span style="color: #0000BB"><?phpif ( $isadmin ) { $incloc = '../';}else{$incloc = null;}if ( !$incsetup ) { include( $incloc . 'includes/inc-setup.php' );}?> |
хотя если глобальные переменные отключены, то и так нормально.
гм. Странные вещи творятся. require(n);
видать с кодировками страшные проблемы. : (
Стране нужны автобусы!
mysql_pconnect();
знаешь че нить серьезное об этом?
Стране нужны автобусы!
сложный вопрос. это значит постоянное соединение, т.е. она само не закроется, пока ты сам его не закроешь (mysql_connect по умолчанию само через минуту закрывается)
вот целесообразность посоянных соединений под вопросом, одни говорят что это хорошо, другие что плохо...
скажем форум. эта страница у меня открыта уже больше минуты, при моем следующем переходе будет заново открываться соединение с mysql, а еслиб тут использовалось mysql_pconnect, то использовалось бы мое старое соединение. что позволяет снизить нагрузку на mysql сервер.
а в чем же тогда минус? Если так все хорошо его б и использовали везде. А так везде пишут хорошо но вот встретил я его пока первый раз в wab'овской мафии
Стране нужны автобусы!
dizzy однако шарил. Мафию написал, данетки, оживил цивилизацию... а потом поставил все на коммерческие рельсы, и как я понимаю продал и свалил : )
Стране нужны автобусы!
из перечисленного тобой я только мафию разгребал. ужас
проблема как раз в том, что соединения не будут закрываться и со времением на сервере будет висеть куча лишних процессов.
я на этом форуме, например, сознательно сделал непостоянное соединение. постоянное можно применять на посещаемых ресурсах, типа чатов, ну форумов тоже, только посещаемых
))
отсюда хочется задать вопрос. Постоянное соединение оно ведь одно? Или уникально каким нибудь образом для каждого юзера... Ну незнаю каким, каким нибудь...
А так по идее действительно удобно для посещаемых ресурсов. Но чувствую на бесплатных хостингах такие фокусы прикрыты.
Стране нужны автобусы!
#293.
Caspеr
Гость
2008.05.17 07:07
#253, прикрепишь этот скрипт к чату?
чтоб ник не надо было придумывать всё время, а брались из базы чата, т.е. текущий ник пользователя в чате
Helqg,
соединение с SQL-сервером не будет закрыто, когда работа скрипта закончится. Вместо этого, оно останется рабочим для будущего использования (mysql_close() также не закрывает постоянные соединения) вот... даже mysql_close не закрывает такие соединения..) оно одно для всех обращений к БД с одинаковыми логином и паролем.
Добавлено спустя 52 секунды: и да... на бесплатных хостингах такое соединения запрещено)
Caspеr написал:#253, прикрепишь этот скрипт к чату?
чтоб ник не надо было придумывать всё время, а брались из базы чата, т.е. текущий ник пользователя в чате
разумная мысль. Гм. Подумаю. Возможность использовать любую базу юзеров... Очень занятно : )
Стране нужны автобусы!
гемор, ты кстати проверь, точно ли мондатрам можно файлы выкладывать. Что я не вижу этой радости.
Стране нужны автобусы!
Helqg, то что здесь, на странице - это урезанный ответ, жни на ссылку
Ответить там расширенные функции.
да ты уж говорил это. Может я че в профиле не то отключил. Ща гляну
Стране нужны автобусы!
да нет там такого. Где то косяк. Раньше помню выгружал файлы, теперь фига
Стране нужны автобусы!
#301.
Casper
Off
(-1)
Модератор-невидимка
2008.05.18 00:12
трави имя переменной сессии, и какие переменные еще передаются важные?
Стране нужны автобусы!
ты это о чем?
)
да это я с призраками общаюсь...
Им надо к чату дополнение. Я аще сроду не лазил в чатах. Чем там авторизация передается?
Стране нужны автобусы!
Кто в английском много понимает?
здесь есть че ценное?
Стране нужны автобусы!
phpclasses.org отличный сайт. давно там зареган. регулярно смотрю что шлют мне на почту. в основном хлам конечно, но есть и очень интересные класссы. думаю в архиве скриптов сделаю раздел с классами всякими. далеко не все думаю знаю где нужно скачивать тот же PEAR.php или pclzip.php
#307.
Casper
Off
(-1)
Модератор-невидимка
2008.05.19 07:07
Там нет сессий. Вот файл регистрации
гг. Здорово. 2 вопроса.
номер юзера с паролем так и передаются в адресной строке на каждой странице?
Чето не понял, что за ref? точнее для чего он?
Стране нужны автобусы!
#309.
Gemor
Гость
2008.05.19 14:02
да, так и передаются
$ref нужна чтобы не кешировались страницы.
то есть она меняется на каждой странице?
Стране нужны автобусы!
#311.
Gemor
Гость
2008.05.19 15:03
да, там rand(xxx,xxxxxx); просто шняга кароч
сам не проверял, но возможно и работает : ) только создай отдельную папку для него, а таблицу кинь к базе чата.
Стране нужны автобусы!
ща джонцмс скачал. Надо будет глянуть че там за чудеса php классов. Поправите меня если что. Только это уже завтра...
Стране нужны автобусы!
итак, что то вроде dos атак...
Отредактировано Helqg (2008.05.20 10:10)
Стране нужны автобусы!
итак, перед классом идет проверка на константу. Я долго думал че это, решил чтобы файл не включали отдельно, только includom.///
так, переменные... Первая ip long. Че такое? Ща погуглю.
Стране нужны автобусы!
очень интересно, но мало понятно
здесьостальные вроде понятные. : )
Далее идет конструктор, понятия не имею чем он отличается от метода, ну да ладно.
Если человек пришел с прокси- то ip все равно будет его(у меня так написано : ) ), иначе Http_Via. че за виа хз... Ну тоже видно адрес. Иначе будет обычный remote_addr. либо умри...
Затем адрес превращается в длинный вариант, ща надо глянуть что за функция.
Стране нужны автобусы!
так и не понял зачем нужен этот длинный адрес, ну по ходу может пойму.
Стране нужны автобусы!
#318.
Caspеr
Гость
2008.05.20 10:10
А таблицы изменены или старые можно оставить? Я их раньше залил в базу чата.
так, дальше. Если включен антифлуд: вызываем метод проверки на флуд. Если флудят- срочно Die().
Стране нужны автобусы!
так, дальше метод reqcount. Объявляем директорию выше в глобальную переменную.
Создаем временный пустой массив.
Переменную запросов приравниваем к 1.
Открываем файл флудеров. Ставим его на недоступность для других. Зачем оно надо- непонятно.
Время. Цикл, читаем построчно файл. Unpack. Первый раз вижу. Гм.
Добавлено спустя 1 минуту : Caspеr написал:
А таблицы изменены или старые можно оставить? Я их раньше залил в базу чата.
таблицы не трогай. Должно все сойтись.
Стране нужны автобусы!
unpackвещь довольно непонятная.
здесьвроде более понятно, но опять я в ауте.
Я так понимаю получается массив с 2 частями адресом и временем.
Условие: если время- время последнего запроса больше заданного, то все нормально, смотрим следующую строку в файле.
Иначе сравниваем адреса, если они сходятся переменную плюсуем на 1.
записываем кусок в временный массив tmp.
Цикл заканчивается. Указатель файла находится в конце, перекидываем его в начало. Файл чистим.
затем весь список записываем. И в конце приписываем данные зашедшего юзера. Переменную метода превращаем в видимую для класса.
Стране нужны автобусы!
мда. Однако я никак не въеду в эти зашифрованые файлы...
Как это дело применяют. Гм. Создается объект, я так думаю при его создании уже идет проверка на флуд. Затем в core.php находится левый адрес и превращается в нормальный. :-/ как то так.
Стране нужны автобусы!
причем дело с адресом никак не связанно с проверкой на флуд...
Стране нужны автобусы!
#324.
Caspеr
Гость
2008.05.21 18:06
В индексе ошибка. Не хочет эта станица загружаться
может тебе дать доступ к директории с чатом?
да погодь. Ща я гляну че там. Я сам то скрипт не пробывал, переписал только пару строк.
Стране нужны автобусы!
в work.php в
Код:
$google=mysql_query("SELECT * FROM users WHERE user='".$_SESSION['gamer']."'"); |
вот так надо. Кавычку надо.
Стране нужны автобусы!
#327.
Casреr
Гость
2008.05.22 21:09
Теперь нормально, но при входе выдает: отсутствуют параметры для входа.
#328.
Caspеr
Гость
2008.05.22 21:09
А! Там, по чату в ссылках не пишется ник. Там id. Ссылка имеет вот такой вид: ...file.php?id=8&ps=password&ref=1234 Надо выяснить какой ник у пользователя с таким id
#329.
Casper
Off
(-1)
Модератор-невидимка
2008.05.22 22:10
Ещё файлик
Casреr написал:
Теперь нормально, но при входе выдает: отсутствуют параметры для входа.
я не знаю что ты там хочешь искать и выводить, но не работает так как скрипт ждет переменные id и pass.
Стране нужны автобусы!
то есть либо в скрипте править
Код:
$_GET['pass'] - $_GET['ps'] |
либо ссылка из чата должна выглядеть вот так:
Код:
echo '<a href="./papka_s_igroy/index.php?id='.$_GET['id'].'&pass='.$_GET['ps'].'">go!</a>'; |
Стране нужны автобусы!
привет чуваки подскажите как вот при запросе к мускул например поиска слова
Чайник мускул( в мускуле например у нас есть слова чайник но с маленьких букв или например ЧайНик) искал и выдавал его в любом регистре?
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
Вообще если сравнение таблицы
utf8_general_ci, то поиск должен быть регистронезависимый, но как это часто бывает, регистронезависимый он лишь в теории, на практике вылазят всякие траблы.
Во первых установи сравнение
utf8_general_ci и посмотри как выбираются данные, если не поможет, то есть другой вариант, делать следующий запрос:
Код:
SELECT * FROM `table` WHERE UPPER(`keywords`) = UPPER('4to_nado'); |
где
keywords - это имя таблицы в которой ищем запись
у меня вот такой запрос
Код:
$q = mysql_query("SELECT COUNT(*) FROM `main_table` WHERE `body` LIKE '%".$_GET['word']."%';"); |
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
Код:
$q = mysql_query('SELECT COUNT(*) FROM `main_table` WHERE UPPER(`body`) LIKE "%'.mysql_escape_string(strtoupper($_GET['word'])).'%";'); |
мля всё равно не выдает. слово например
Чайник не выдает а
чайник выдает
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
Проверил на локалхосте, работает. Проверь, правильно ли ты код записал?
UPPER(`body`) - есть такое?
strtoupper($_GET['word']) - тоже есть? В таком случае выдало бы по крайней мере в верхнем регистре.
всё что ты написал есть. короче у меня в базе есть слово
чат так вот при запросе
чат или
ЧАТ мускул дает ответ а при запросе слова
ЧаТ уже пишет что нет такого
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
#339.
Гемор
Гость
2008.05.26 01:01
Чудеса)
тип таблицы какой? И сравнение?
MyISAM utf8_unicode_ci .короче англиские слова находит в любом регистре
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
попробуй
utf8_unicode_ci замени на
utf8_general_ci
ставил! однохуйственно
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
это че было?
любой код можно заставить работать методом тыка. Если долго тыкать
я поняла... Это нашествие дятлов . Ииинах от сюда, а ? Уже 11 страниц мусора
любой код можно заставить работать методом тыка. Если долго тыкать
Лена, ты же модератор,это спам боты, удаляй и все.
а бан никак? Удаляла. Тут было 11 страниц этого
любой код можно заставить работать методом тыка. Если долго тыкать
Ну можешь бан) Я IP потом посмотрю и в .htaccess главный занесу все равно)
мля эт ужас!!! в баню айпи на 5 лет нах ггг
Я не Google,я не Yahho!!!Есть вопрос?Идите на ХУЙ!!!
#349.
Nikilod
Гость
2008.07.11 05:05
Привет. Я только что вышел из больницы. Простите за оффтоп, но я так рад снова быть здоровым.
Живите и радуйтесь жизни.
вопрос: таким способом принятые данные из формы можно записать в базу?
Код:
mysql_query("INSERT INTO `guest` SET `time` = '".$data['time']."', `name` = '".$data['nick']."', `mess` = '".$data['text']."', `mail` = '".$data['mail']."', `sity` = '".$data['sity']."', `ip` = '".$data['ip']."', `br` = '".$data['br']."';"); |
?????
ska ska ska
не пишет что ли?
Стране нужны автобусы!
белый экран) ну да я особо нестарался..
ska ska ska
#353.
Gemor
Гость
2008.07.20 16:04
Ну из формы данные приходят вероятнее всего в массиве $_POST, а тут $data. Может в этом проблема?
сверху ошибка, мол неожиданное подключение(подключаю файл где настройки и коннект к базе(вродь всё правильно написал)) и белый экран.. ну я попозжа посижу.. ща неохот чёт
ska ska ska
может неверное какое подключение? Ну там пароль-логин...
Стране нужны автобусы!
ну подключался я тавк:
Код:
|
<? |
$user = "denich"; |
$pass = "denich"; |
$base = "book"; |
$db = mysql_connect("localhost",$user,$pass)or die("Could not connect: ".mysql_error()); |
mysql_select_db ($base, $db);or die("Could not select database: ".mysql_error()); |
mysql_query('SET NAMES utf8'); |
?> |
ska ska ska
вопрос есть:
Код:
function psid(){ |
return (SID) ? ('?'.SID) : null; |
} |
вот SID я знаю чё такое, а вот чё обозначает
return (SID)
? ('?'.SID)
: null; а? что это: ? :
ska ska ska
тоже самое что
Код:
span style="color: #0000BB"><?phpfunction psid() { if (SID) { return '?' . SID; } else { return null; }}?> |
просто такая языковая конструкция.
можно ли на одной странице подключаться к двум разным базам? я на главную вывести хочу сколько файлов в загрузе(эт одна база) и сколько тем/постов в форуме(эт другая база)??
ska ska ska
всё разобралсо)
ska ska ska
все можно) я для таких целей, например, использую функции - удобно.
#363.
pda
Гость
2008.08.05 12:12
http://wapinet.ru
Отредактировано Gemorroj (2008.08.05 14:02)
pda, рекламишь?!?!?!?
__________________
неподелишся этой функцией? твоя иль где взял?
ели чё тож могу тут одну дать всмест mysql_query её использовать можн и нетолько(можн сказать работает как фильтровальщик, как ф-я mysql_query, и по принципу sprintf и printf)) гг b; книги взял
кстать уж всю прочёл) тЫща страниц..
ska ska ska
да обычная функция. что-то типа
Код:
span style="color: #0000BB"><?php// Всего постов в гостевойfunction gbs_all(){mysql_connect('localhost', 'user', 'pass');//mysql_query('SET NAMES `utf8`');mysql_select_db('db');$a = mysql_result(mysql_query('SELECT COUNT(*) FROM `table` WHERE `id` = 2 LIMIT 1'),0);mysql_close();return $a;}print gbs_all();?> |
Вот эта счтитает посты в гостевой у меня.
а, ясн)) слушай у меня херь какая то, на компе все ОК, а на хосте зделал и пишет мол неправильно чё то, а всё правильно...
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in /home/pkclub/public_html/index.php on line 12
Could not connect: Access denied for user 'root'@'localhost' (using password: NO)
юзера правильно написалд чё он хочет от меня?!
ska ska ska
блин)) ну ты прям неповериш) зделал всё таким же образом как ты зделал(ну вот этими функциями) и всё заработАЛО)) ПАЧму так?
ska ska ska
вероятно не передавал идентификатор соединения с базой.
передовал) может из за того что дома винда, а на хосте линукс? хотя наверн нет..
ska ska ska
блин peклaмлят уpoды!!
ТA НУ ЩO Я ТУТ НAПИШУ
#371.
Casper
Off
(-1)
Модератор-невидимка
2008.08.14 03:03
такой вот вопрос... прикрепляю в этом форуме к сообщению .txt файл и при кликании на него он скачивается, закидываю к себе на сайт, он открывается, как страница. Как сделать, чтоб с моего сайта он тоже скачивался?
здесь не прямая ссылка на txt файл. он отдается через скрипт.
#373.
Casper
Off
(-1)
Модератор-невидимка
2008.08.14 16:04
ясно
в загрузе sea пытаюсь скринШот вывести у тем .thm
Код:
lt;?if ($ext == 'thm') { include 'moduls/PEAR.php'; include 'moduls/Tar.php'; $theme = $file_info['path']; //$AF->loadFile($file_info['path']); $archive = & new Archive_Tar($theme); $deskside_file = $archive -> extractInString('Theme.xml'); $image_puth = simplexml_load_string($deskside_file)-> Standby_image['Source'] or simplexml_load_string($deskside_file)-> Desktop_image['Source']; $image_string = $archive -> extractInString($image_puth); //header( "Content-type:image/jpeg" ); print $image_string; }?> |
вот отдельно от скрипта работает)
а в скрипт сую и выводит одни каракули..
ska ska ska
#375.
endrj
Гость
2008.08.15 23:11
A нe htm?
еndrj, нет.
-----
блин неправильный код слегка дал, ща уж комп вырубил, а с телефона не весь текст закачивается...
завтра изменю..
и ошибку вродь уже понял в чём, но всё равно незнаю как её решить..
ska ska ska
Код:
lt;? if ($ext == 'thm') { include 'moduls/PEAR.php'; include 'moduls/Tar.php'; $theme = $file_info['path']; $archive = & new Archive_Tar($theme); $deskside_file = $archive -> extractInString('Theme.xml'); $image_puth = simplexml_load_string($deskside_file)-> Standby_image['Source'] or simplexml_load_string($deskside_file)-> Desktop_image['Source']; $image_string = $archive -> extractInString($image_puth); header('Content-type: image/jpeg'); print $image_string; }?> |
вот, я думаю ошибка у меня в том что, header('Content-type: image/jpeg'); вдруг посылаю прям посередь страници... как правильно сделать?!
вот если чё страница.
ska ska ska
никак, вывести картинку на другой странице.
#380.
Login
Гость
2008.08.16 18:06
http://lorras.wapn.ru/xak.php
pochemu ne robit ?!
#382.
endrj
Гость
2008.08.17 16:04
в eтoй cтpoкe
Код:
echo " < option value = 'guest' > Гостевая </ option >< option value = 'forum' > Форум :</ option > "; |
выдaeт тaкую oшибку:Ошибка: syntax error, unexpected T_STRING, expecting ',' or ';' Строка: 31 Страница: 3 кaк иcпpaвить?
#383.
endrj
Гость
2008.08.17 16:04
copи нeт тopмoзит.
никак, в той строке синтаксических ошибок нет.
#385.
endrj
Гость
2008.08.18 01:01
я пoмeнял фaйл,eт у мну бывaeт тaкoй глюк
вот делаю вывод даты новости на главную, и хочу ,что бы если дата новости сегодняшняя то выводилось Сегодня, если вчерашняя то Вчера,
я это все дело в функцию засунул, короче я додумать/доделать всё немогу...
Код:
lt;?function news_date(){mysql_connect('localhost', 'root', '');mysql_select_db('news');$qi = mysql_query("SELECT * FROM `news` order by id desc limit 1;");$row=mysql_fetch_array($qi); // итого в $row['stamp'] хранится дата$time = str_replace(date('d.m.Y', time()), 'Сегодня', $time); $time = str_replace(date('d.m.Y', time()-86400), 'Вчера', $time);mysql_close();return }?> |
ska ska ska
я делаю так
Код:
span style="color: #0000BB"><?phpfunction tm($time){if(date('Y.m.d',$time) == date('Y.m.d',time())){return 'Сегодня в '.date('H:i',$time);}elseif(date('Y.m.d',$time) == date('Y.m.d',time()-86400)){return 'Вчера в '.date('H:i',$time);}else{return date('Y.m.d H:i',$time);}}?> |
т.е. передаешь функции таймштамп, она возвращает отформатированную дату.
да я уж зделал, тож помогли маленько... но всё равно спасибо))
ska ska ska
вот посмотри:
Код:
lt;?case 2: { $id = trim($_GET["id"]); if(!is_numeric($id)) exit(); if (!isset($_REQUEST['Go'])) { $sql = "SELECT * FROM `guest` WHERE id='$id'"; $que = mysql_qw($sql) or die(mysql_error()); $res = mysql_fetch_array($que); echo '<form action="'.$_SERVER["PHP_SELF"].'?p='.$parol.'&do=2&id='.$id.'" method="get"> Редактировать ник:<br /> <input type="text" name="nick" value="'.$res["nick"].'"><br /><br /> Редактировать сообщение:<br /> <textarea name="text" cols="32" rows="6">'.$res["text"].'</textarea><br /> <input type="submit" class="button" name="Go" value="Изменить"> </form>'; }else { $nick = safe_var($_GET["nick"]); $text = safe_var($_GET["text"]); $sql = "UPDATE `guest` SET nick='$nick', text='$text' WHERE id='$id'"; mysql_query($sql) or die(mysql_error()); echo 'Сообщение изменено!<br /><br />'; } }?> |
где ошибка? вот форму выдаёт, я там всё изменяю жму на кнопку и меня выкидывает, т.е запись не изменяется в таблице.. вооющем где то после else у меня ошика.. немогу понять где..
Добавлено спустя 1 минуту 31 секунду: вроде всё правильно написал..
ska ska ska
тут не полный код. давай полный switch и функции safe_var и mysql_qw (если это описанная тобой функция, а не опечатка)
safe_var
Код:
lt;?function safe_var($str,$brl=false){ $str=trim(stripslashes(htmlspecialchars($str))); if($brl) $str=nl2br($str); $str=strtr($str,array("\r"=>' ',"\n"=>' ')); return $str;}?> |
а mysql_qw эт таже функция что и mysql_qeary прост из книжки взял..
------------------------------------------
я тут делаю админку для гости..
все действия у меня в switch(act) {
case 1: {
тута удаление сообщения, всё работает
} break;
case 2: {
здесь код который выше я написал, тоесть тут редактирование сообщения, всё там работает до того места как всё данные нужно заменить в таблице т.е
$nick = safe_var($_GET["nick"]); // это фильтрация
$text = safe_var($_GET["text"]); // это тож фильтрую
$sql = "UPDATE `guest` SET nick='$nick', text='$text' WHERE id='$id'"; // вставление данных обратно в бд
mysql_qw($sql) or die(mysql_error());
echo 'Сообщение изменено!<br /><br />'
}
неробит...
ska ska ska
denich написал:
а mysql_qw эт таже функция что и mysql_qeary прост из книжки взял..
фукции mysql_qw нету (mysql_qeary тоже нету,
) есть mysql_query и тебе нужна именно она.
mysql_qw испльзуется в библиотеке Котерова, забыл как называется, ты используешь эту библиотеку? Вероятно всего нет, а значит и описание этой функции в скрипте не указано.
после case скобки открывать не надо.
mysql_qw я взял именно из книги котерова, и библу тож, и всё поключено.. скобки убрал.. ничё не работает опять..
ska ska ska
fixed
вообщем проблема у меня с заменой дат, вот так вот работало, но поистечению 3-х дней выводит год и время прошедший с эпохи Unix т.е 01-01-70 3:30
Код:
lt;?function mcdate($date) { if(preg_match('/^[0-9]{0,4}+(-)+(.*?)$$/', $date)) { $arr_date = explode(" ", $date); list($y, $m, $d) = explode("-", $arr_date[0]); list($h, $i, $s) = explode(":", $arr_date[1]); $dateNow = $d; }$arrayText = array(date('d')-2=>'Позавчера в '.$h.':'.$i, date('d')-1 => 'Вчера в '.$h.':'.$i, date('d') => 'Сегодня в '.$h.':'.$i); if(isset($arrayText[$dateNow])) { return $arrayText[$dateNow]; }else return date('d.m.y в H.s', $date); }?> |
почему нехочет она возвращать поистечению 3-х дней это else return date('d.m.y в H.s', $date);
ska ska ska
есть такая замечательная функция
strtotime...
модифицируй функцию которую я тебе давал таким образом и пользуйся ей.
Код:
span style="color: #0000BB"><?phpfunction tm($time){// переводим строку в таймштамп$time = strtotime($time);if(date('Y.m.d',$time) == date('Y.m.d',time())){return 'Сегодня в '.date('H:i',$time);}elseif(date('Y.m.d',$time) == date('Y.m.d',time()-86400)){return 'Вчера в '.date('H:i',$time);}else{return date('Y.m.d H:i',$time);}}?> |
что в header означают 2 и 3 параметры?
Код:
lt;?header('Location: index.php', true, 301); ?> |
ska ska ska
подмена кода ответа. по умолчанию отдается 302. а 302 не любят поисковики. соответственно меняем на 301.
как проверить, в названии файла, есть ли мол в нём(имени файла) несколько точек?
ska ska ska
Код:
span style="color: #0000BB"><?php$str = 'имя фаела с точкой .';if(substr_count($str, '.')){// точки есть}else{// нема}?> |
Доброго всем времени суток!Пожалуйста,если не трудно,напишите,где взять или как создать базу MySQL?Только, если можно,поподробнее и с самого начала!Я в программировании,как студент,пропустивший первые 5 лекции,пришедший ко второй паре и пытается понять,что к чему!
Отредактировано staryisv (2008.11.08 22:10)
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
в панели управления хостом)
Да был я там.Разобраться не могу.Захожу в базы данных.Создаю базу.База создается,а размер ее 0.00.И что дальше делать,никак не пойму.Паша,если не трудно,научи?!
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
нутаквот. базу ты создал. теперь нужно ее чем-то наполнить.
заходиш в phpmyadmin, где он находится спроси у хостера или посмотри опять же в панели управления хостом.
слева выбираеш созданную тобой базу.
далее жмеш "импорт" и заливаеш файл с таблицами. все.
или жмеш не импорт, а "SQL" и вручную пишешь требуемые SQL комманды.
Паш,пробовал я в панели управления нажимать phpMyAdmin.Выкидывает на мой сайт.Почему,не знаю.
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
сообщи об этом хостеру. кстати так же можно через
Gmanager работать с MySQL, хотя возможности PhpMyAdmin конечно куда шире
Паша,а через gmanager как?Там самому создавать надо?
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
В Gmanager типа консоли, нужно знать комманды. Но хостеры как правило не позволяют создавать новые БД скриптами, для этого нужно лезть в панель. Gmanager поможет залить таблицы в уже созданную БД.
Phpmyadmin нашел.Спасибо.Пойду разбираться,что к чему./Паша,загляни в каталог.По моему,там что то не так.Регистрировал в нем свой сайт,не так давно,а вчера не смог найти.Зарегистрировал еще раз.Перехожу по ссылке со своего сайта,а мне пишет-сайтов в каталоге еще нет,будь первым.Или типа этого.А может я чего не разобрался правильно./
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
MySQL сервер тупанул. Перезагрузил, терь ок.
Наверно последний вопрос.Где взять начальные таблицы,для базы?Не те,что в игре.Как импортировать,я разобрался,спасибо!Осталось узнать,что нужно импортировать!/Надеюсь ты не обижаешься,что я тебе об ошибках сообщаю?А то скажешь,что яйца курицу учат!
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
Что значит начальные? Таблицы они и есть таблицы.
А где их брать?
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
ты хочешь скрипт какой-то поставить? к скрипту как правило они прилагаются. посмотри файлы с расширением sql или всякие tables.txt, sql.txt, db.txt и т.п.
Ага,есть такие!И их надо заливать в базу?А так,ничего там создавать или заливать не надо?Правильно я понял?Даже если движок ставишь?/Мне на ссылке каталога какой номер ставить,тот который раньше был или который сейчас зарегистрировал?/
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
создай базу данных, залей таблицы. все.
ссылку ставь какую хочешь
Последний вопрос.Каждый раз нужно новую базу создавать или в одну заливать все убийцы?/Извини,что надоел уже!/
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
не волнуйся не надоел) на форуме я могу отвечать когда у меня есть свободное время для ответов. а вот в асе бывают достают...)
да, нужно создавать каждый раз новую БД.
Спасибо Паша!Ты настоящий друг!
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
Привет Паша!Это снова я!Есть вопрос!Подскажи пожалуйста,где и как вставить счетчик или файл,чтобы он на каждой странице отображался?Что то не могу разобраться!
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
инклудом.
пишешь данные 1 раз в файле, потом во все где тебе нужен счтчик его инклудиш.
И копирайт так же прописан?А можно его прописать в одном файле,который отвечает за низ всех станиц?
Добавлено спустя 1 минуту 20 секунд: И если можно,напиши подробно?!
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
вероятно нет, что-то должно быть в любом случае проинклужено.
Паш,а можешь пример вставки привести?Есть ссылка <a href.../a>.Как ее нужно вставлять в файл?Я пробовал,у меня низ страницы пропадает!
Добавлено спустя 3 минуты 8 секунд: Кстати,я тут пытался добавить 3 скрипта,в ответ получил сообщение,что они появятся после проверки!И что то так и не появились!Не в курсе?
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
я не проверял))
Код:
span style="color: #0000BB"><?php// файл include.php// лежит в DOCUMENT_ROOTecho '<a href="">Ссылка</a>';?> |
Код:
span style="color: #0000BB"><?php// файл в котором отображается наша ссылка// тут всякая шнягаecho 'Привет мир'!;// а тут вставляем файл со ссылкой// путь прописываем от DOCUMENT_ROOT чтобы не путатьсяinclude $_SERVER['DOCUMENT_ROOT'].'/include.php';?> |
Ага,сейчас попробую!Спасибо!
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
Чего то у меня не так все?!Ты wap-motor 18 не знаешь случайно?Может кинуть тебе пару файлов,которые за низ всех страниц отвечают?Посмотришь,если время будет?
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
Паша,спасибо,помогло!Сначала файл создал,потом его проинклудил в файле,который,за низ всех страниц отвечает и все заработало!Спасибо,еще раз!/Паша,на форуме опять что то не работает!
Спорт - есть молодость,движенье - это жизнь!Лег,значит умер!
очень позновательно. что именно не работает, не конкретизируш?
что это за регулярка? можт её как то укоротить?
Код:
lt;?if(!eregi("^((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z;]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%&'_\+=:;\?\.-]*)*)\$", $link1)) $link1="";?> |
Добавлено спустя 1 минуту 13 секунд: ---------------
p.s уж слишком мелкий шрифт в форуме, кода савсем невидать (ps с компа)
ska ska ska
ммм.. это на сколько я понимаю проверка на URI
[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z;]{2,3}) - проверка на домен (не совсем корректная)
[0-9]{1,3}\.){3}([0-9]{1,3} - IP
((/|\?)[a-z0-9~#%&'_\+=:;\?\.-]*)*) - строка запроса (QUERY_STRING)
не вижу особо в ней надобности где-бы то нибыло)
а вот что то в чате она делала)
ska ska ska
вот такой запрос реален? могет быть?
Код:
lt;?$r = mysql_qw("SELECT * FROM `koment` WHERE id_us='".$usid."' ORDER BY `id` DESC LIMIT $o,$do");?> |
у мене он что та неработает..
ska ska ska
Код:
span style="color: #0000BB"><?php$r = mysql_qw('SELECT * FROM `koment` WHERE `id_us`='.$usid.' ORDER BY `id` DESC LIMIT '.$o.','.$do);// проблема в переменных// либо $usid не тот// либо $o или $do не корректныеprint mysql_error();// что пишет тут??> |
пишет
Код:
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 |
Добавлено спустя 2 минуты 40 секунд: с переменными
$o $do $usid всё пучком.
ska ska ska
что в них конкретно напиши.
echo 'SELECT * FROM `koment` WHERE `id_us`='.$usid.' ORDER BY `id` DESC LIMIT '.$o.','.$do;
напиши после запроса.
результат:
SELECT * FROM `koment` WHERE `id_us`=12 ORDER BY `id` DESC LIMIT 0,
ska ska ska
ну вот.
denich написал:
LIMIT 0,
Не знаю, может не совсем в тему, но вроде эта самая близкая к моему вопросу))
Хотел вот что спросить...
такой вот из себя "ilichat" в плане безопасности как?
А то не хотелось бы, что б взломали нафик)
что мешает создать новую тему? по поводу вопроса. как и у всех чатов в WAP'е безопасность и уровень кода ниже плинтуса.
не хотел забивать форум лишней темой, такие темы думаю долго не живут)
Вот это огорчает...
Ну я надеюсь, что кто попало взломать такой скрипт не может?
Если это по способностям только зело опытным программистам, та оно и ладно, а если кому попадя, то не радует)
я не знаю, не особо интересуюсь чатами. по-моему их время ушло.
проблема, вместо буквы
Ш выводится
�?таблица с кодировкой
utf8_general_ci, в чём проблема?
ska ska ska
По-моему там еще с
Й должна быть проблема. Где-то всет-таки не UTF-8.
Добавлено спустя 2 минуты 47 секунд: соединение с БД как происходит? после mysql_connect еще вставь
mysql_query('SET NAMES `utf8`');
нет, ток с
Ш такая фигня, была)
терь норм)
ska ska ska
CREATE TABLE IF NOT EXISTS `ban` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(255) NOT NULL,
`ua` varchar(255) NOT NULL,
`time` int(11) NOT NULL default '0',
`pri` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=36 ;
Что означает это AUTO_INCREMENT=36 ;
`id` int(11) NOT NULL auto_increment,
здесь указывается, что при каждой новой записи в`id` это поле будет автоматически увеличиваться на 1.
AUTO_INCREMENT=36 ;
это значит, что отсчет начнется с 36.
Скорее всего тот, кто делал дамп этой таблицы просто поленился навести в ней порядок.
Вероятнее всего лучше будет поставить AUTO_INCREMENT=1, а так же заменить CHARSET=cp1251 на CHARSET=utf8
Gemorroj написал:`id` int(11) NOT NULL auto_increment,
здесь указывается, что при каждой новой записи в`id` это поле будет автоматически увеличиваться на 1.
AUTO_INCREMENT=36 ;
это значит, что отсчет начнется с 36.
Скорее всего тот, кто делал дамп этой таблицы просто поленился навести в ней порядок.
Вероятнее всего лучше будет поставить AUTO_INCREMENT=1, а так же заменить CHARSET=cp1251 на CHARSET=utf8
Да я вот решил перебороть свою лень относительно практики и решил попрактиковаться и поковыряться в скриптах. Взял магазин асек. Он оказывается на регистр глобалс он. Вот буду разбираться. .И переделывать на оф.
вот это
Код:
lt;?if(isset($_GET['n'])) $needle = intval($_GET['n']); else $needle = '';?> |
можно сократить ведь, да?
там с
? и
: каг зделать?
ska ska ska
Код:
span style="color: #0000BB"><?php$needle = (isset($_GET['n']) ? intval($_GET['n']) : '');?> |
Добавлено спустя 1 минуту 21 секунду: это называатся тернарный оператор.
угу, спасибо
ska ska ska
Где ошибка?
Почему то данные из формы не все корректно приходят servis = 0 и сайт = 0
Хотя print_r($_POST); показывает что всё пучком
ska ska ska
$servis = intval($_POST['servis']);
$site = intval($_POST['site']);
ты же их сам к числу приводишь
оу.. я видать незнаю до конца функцию intval, хм.. я думал она фильтрует, но никогда её не использовал..
ska ska ska
она приводит значение к целочисленному типу. т.е. после обработки ей получится по любому число.
integer value
И как ты этим 'фильтровал'? По твоему
ДАУН-Данная Аватара Унаследована Незнайкой
нужно ли использовать htmlspecialchars если у меня поле обрабатывается регуляркой, согласно которой поле должно содержать только латинские буквы? Я понимаю что можно и то и то сделать но зачем лишний код если регулятка выполнит все.
Также по поводу mysql_real_escape_string если я опять же обработаю регуляркой, обязательно ее обрабатывать?
если только латинские символы [a-z], то не надо больше ничего.
Gemorroj написал:
если только латинские символы [a-z], то не надо больше ничего.
ну я думаю еще 0-9 можно. Да?
session_start();
$_SESSION['id']=mysql_insert_id;
$_SESSION['pass']=$pass;
echo'<div class="a">Вы успешно зарегистрированы! Ваш ид: '.mysql_insert_id($q).'Пароль: '.$pass.'</div><div class="b"><a href="cabinet.php">В кабинет</a></div>';
правильно я сессию создал?
Код:
span style="color: #0000BB"><?phpsession_start();$id = mysql_insert_id();$_SESSION['id'] = $id;$_SESSION['pass'] = $pass;echo '<div class="a">Вы успешно зарегистрированы! Ваш ид: '.$id.' Пароль: '.$pass.'</div><div class="b"><a href="cabinet.php">В кабинет</a></div>';?> |
я так хотел сделать а потом передумал
Код:
CREATE TABLE user(id int(11) NOT NULL auto_increment, |
name varchar(20), |
pass varchar(20), |
vremyareg varchar(15), |
url varchar(50), |
email varchar(50), |
wmr varchar(15), |
money varchar(15), |
vsego varchar(15), |
perehod varchar(15), |
neschit varchar(15), |
lastperehod varchar(15)) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
|
-- |
|
CREATE TABLE ban(id int(11), |
vremya varchar(15), |
prichina varchar(200)) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
|
-- |
|
CREATE TABLE news(id int(11) NOT NULL auto_increment, |
namenews varchar(100), |
novost varchar(500), |
vremyanews)) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
в чем ошибка?
если ты ставиш auto_increment, то на это поле нужно поставить PRYMARY KEY
так же в таблице news в конце не корректно записано vremyanews.
Код:
CREATE TABLE `user`( |
`id` int(11) NOT NULL auto_increment, |
`name` varchar(20), |
`pass` varchar(20), |
`vremyareg` varchar(15), |
`url` varchar(50), |
`email` varchar(50), |
`wmr` varchar(15), |
`money` varchar(15), |
`vsego` varchar(15), |
`perehod` varchar(15), |
`neschit` varchar(15), |
`lastperehod` varchar(15), |
PRIMARY KEY (`id`) |
) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
|
-- |
|
CREATE TABLE `ban`( |
`id` int(11), |
`vremya` varchar(15), |
`prichina` varchar(200) |
) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
|
-- |
|
CREATE TABLE `news`( |
`id` int(11) NOT NULL auto_increment, |
`namenews` varchar(100), |
`novost` varchar(255), |
`vremyanews` int(11), |
PRIMARY KEY (`id`) |
) ENGINE=MyISAM DEFAULT CHARSET=utf8; |
Добавлено спустя 1 минуту 3 секунды: а, еще масимальное кол-во символов помещающееся в varchar - 255
ну и вообще, пока что не оч оптимизировано (нет ключей)
я пока ответа ждал проблему решил
похожим образом. Ключи ты имеешь ввиду индексы?
ну они мне пока не нужны. Это мой первый скрипт. И там не предполагается такая большая посещалка, чтобы индексы были. Точнее посещалка там вообще пока не планируется. Мне лишь бы работало и было не дырявое. Над этим я работаю
у меня будут позже возможно рулить
сейчас решаю проблему с mysql_insert_id
Что то не работает
она возвращает номер последней вставленной записи. в чем конкретно проблема?
сначала была проблема что я нечаянно переменную в скобках в ней вставил. А теперь проблема в том что она постоянно 0 возвращает.
все разобрался. Я пока пил чай вспомнил что я запрос на запись данных в базу составил а выполнить его забыл. Я обычно сразу запрос в mysql_query составляю а это в отдельной переменной составил и забыл выполнить.
как проверить есть ли введенные данные в базе. Нужно проверить 3 поля email,url,wmr из базы user
Код:
SELECT 1 FROM `user` WHERE `email` <> '' AND `url` <> '' AND `wmr` <> '' |
что означает 1 в этом коде? И кавычки одинарные или двойные?
если email, url и wmr не пустые, вернет 1
блин, я немного не так вопрос задал вчера.
Пришли данные из формы $email='job@do.la' $url='site.ru' $wmr='558236852369' и вот надо проверить есть ли в базе хотя бы одно и введенных данных. Это значит надо проверить если есть хотя бы одно совпадение то вывести соответственное предупреждние. Типа извините но такие данные уже есть. Как будет выглядеть код? Поля теже самые. Я понимаю что надо пройтись по этим полям и посмотреть но как не пойму. Я select еще не освоил толком.
Код:
span style="color: #0000BB"><?phpif(mysql_query("SELECT 1 FROM `user` WHERE `email` = '$email' OR `url` = '$url' OR `wmr` = '$wmr'")){ // пользователь с такоми занными уже есть}else{ // пользователя с такими данными нет}?> |
вот спасибо
а то я застрял на этом. Вечером попробую.
Разъясните что такое глобальные переменные плиз. Сколько ни листал литературу ничего не понимаю по этому поводу. Желательно приведите пример кода с глобальнымы переменными и локальными. Я вообще не пойму почему до сих пор не убрали регистр глобалс
вот один из вопросов тестирования на нашей работе
Код:
span style="color: #0000BB"><?php$num = 10;function multiply(){ $num = $num*10;}multiply();echo $num;?> |
что выведет?
так вот $num = 10; находится в локальной области видимости. в функции multiply она не видна, там ее нет. $num которая находится в функции myltiply совершенно независима от $num, которая находится вне функции multipy.
A как это будет выглядеть но уже с глобальными?
Код:
span style="color: #0000BB"><?php$num = 10;function multiply(){// чтобы сделать переменную $num видимой (глобальной) в этой функции// следует оъявить ее таковой с помощью специального слова globalglobal $num; $num = $num*10;}multiply();echo $num;?> |
Привет
Gemorroj,Admin,Gemor.На кануне нашел скрипт мыла.Типа mail@wapinet.ru Установил,таблицы залил,проверил почти все работает.Когда попытался зайти в админ панель пришлось вводить логин и пароль.Пошел посмотрел таблицу,там написано:
CREATE TABLE `settings` (
`login` varchar(250) NOT NULL default 'admin',
`pass` varchar(250) NOT NULL default '21232f297a57a5a743894a0e4a801fc3',
`quota` int(11) NOT NULL default '1',
`quota_disk` int(11) NOT NULL default '1',
`sh_cnt` int(11) NOT NULL default '12',
`rsort` tinyint(1) NOT NULL default '1',
`sh_quota` tinyint(1) NOT NULL default '1'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `settings` VALUES ('admin', '
21232f297a57a5a743894a0e4a801fc3', 1, 1, 10, 1, 1);
Ввел пароль
21232f297a57a5a743894a0e4a801fc3 но почему то не заходит.Потом пытался исправлять таблицу и все равно не получилось.Помогите исправить плиз.Что бы логин был Admin a пароль password
Вот сам скрипт.За ранее спасибо.
это не пароль,скорее всего это хэш пароля. скорее всего md5 хэш
выполняем следующий код echo md5('1234');
получаем хэш: 81dc9bdb52d04dc20036dbd8313ed055
теперь замени в таблице предыдущее значение хэша, на это. в таком случае пароль будет 1234
Gemorroj написал:Код:
span style="color: #0000BB"><?php$num = 10;function multiply(){// чтобы сделать переменную $num видимой (глобальной) в этой функции// следует оъявить ее таковой с помощью специального слова globalglobal $num; $num = $num*10;}multiply();echo $num;?> |
и все что ли? Только различие в глобал объявлений?
Gemorroj написал:
в данном случае все.
а что есть еще другие случаи ? Признаки глобальных переменных я имею ввиду
Gemorroj,а где мне писать echo md5('1234');
?
AGENT, ну самый распространенный - прием данных из форм или из URI.
соответственно данные попадают в суперглобальные массивы $_GET $_POST $_REQUEST
тоже с сессиями, кукисами.
Область видимости в классах тоже имеет свои особенности.
Ywan написал:
Gemorroj,а где мне писать echo md5('1234');
?
создай файл и вставь это <php
echo md5('1234');
?>
Ywan, это просто php код.
Добавлено спустя 1 минуту 1 секунду: я лично в gmanager в EVAL делал.
Gemorroj написал:
AGENT, ну самый распространенный - прием данных из форм или из URI.
соответственно данные попадают в суперглобальные массивы $_GET $_POST $_REQUEST
тоже с сессиями, кукисами.
Область видимости в классах тоже имеет свои особенности.
на сколько я знаю,суперглобальные это не глобальные переменные. Или я ошибаюсь?
они как раз СУПЕР глобальные. Т.е. видны ВЕЗДЕ.
в нашем примере если бы вместо $num была к примеру переменная $_REQUEST['num'], то обьявлять ее как global было бы не обязательно, этот массив и так виден.
Gemorroj написал:
они как раз СУПЕР глобальные. Т.е. видны ВЕЗДЕ.
в нашем примере если бы вместо $num была к примеру переменная $_REQUEST['num'], то обьявлять ее как global было бы не обязательно, этот массив и так виден.
пока понятно. Нужно переварить гг . Спасибо
Добавлено спустя 2 минуты 42 секунды: Gemorroj написал:
AGENT, ну самый распространенный - прием данных из форм или из URI.
соответственно данные попадают в суперглобальные массивы $_GET $_POST $_REQUEST
тоже с сессиями, кукисами.
Область видимости в классах тоже имеет свои особенности.
а как обойтись в данном варианте без суперглобальных ?
Добавлено спустя 4 минуты 3 секунды: Дело в том,что у меня нет желания начинать писать с минимальными знаниями и ошибками. Поэтому нужно сначало получить знания. Это лучше чем тебя будут ломать из за ошибок.
хм... во первых замем обходиться без них?
ну есть еще переменные $argc и $argv, в них тоже попадают данные переданные через GET и POST. Но их лучше не использовать просто из-за совместимости и читаемости кода.
Добавлено спустя 37 секунд: AGENT написал:
Поэтому нужно сначало получить знания.
это конечно правильно)
Gemorroj написал:
Ywan, это просто php код.
Добавлено спустя 1 минуту 1 секунду:
я лично в gmanager в EVAL делал.
Значит мне это надо написать в apanel.php?(страница для входа в админ панель)
#505.
Gemor
Гость
2009.01.17 10:10
Забудь, нигде это писать не надо
Паша,смотри. Вот тут же используются глобальные переменные?
Код:
span style="color: #0000BB"><?php$file=glob("load/$sd/*.".'{'."$allfiler}",GLOB_BRACE); function mysort($b,$a) { $ra=r($a); $rb=r($b); if(($ra=='gif' or $ra=='jpg' or $ra=='png') and $rb!='gif' and $rb!='jpg' and $rb!='png') return -1; elseif(($rb=='gif' or $rb=='jpg' or $rb=='png') and $ra!='gif' and $ra!='jpg' and $ra!='png') return 1; else return 0; } usort($file,"mysort"); $page=intval(@$_GET['page']); if(!$page) $page=1; $pag=$page-1; $start=$pag*$kolf; $count=count($file)-count(glob("load/$sd/*.".'{'."$allfiler}.{jpg,gif,png}",GLOB_BRACE));?> |
Отредактировано Gemorroj (2009.01.17 17:05)
конкретизируй пожалуйста вопрос.
Gemorroj написал:
конкретизируй пожалуйста вопрос.
да вроде конкретно написал. В данном куске кода используются глобальные переменные? Glob я вижу
нет, это не имеет никакого отношения к глобальным переменным
это функция glob
http://ru2.php.net/glob для работы с файлами
Код:
lt;?echo '<form method="post" action="'.$chataddr.'/herak/'.$CHATses.'" name="auth">';?> |
вот это
name="auth" тоже придёт в $_POST['auth'] да?
ska ska ska
да. придет пустой элемент $_POST['auth']
Вывел описания под именами файлов что бы юзерам было удобнее выбирать файлы. Выборка идет и текстовых файлов,файлы в utf-8. Так вот при этой выборке в 70 символов иногда появляются квадратики которые приводят к ошибке (если смотреть с опера мини 4.2). При нажатии на файл,там есть полное описание и ни каких квадратов нет. Как можно исправить данную ситуацию с квадратиками? Вот скрин куда я вывел часть описания и сам квадратик там видно.
проблему решил интересным образом. echo iconv("UTF-8", "UTF-8", "$opis ...<br/>");
Но тут есть интересность,судя по всему где выводились "квадратики" теперь похоже обрезается это ...<br/> . Как можно решить данную проблему и почему мне приходится перекодировать юникод в юникод для исправления ошибок,ведь на расширенной странице выводится точно такое же описание ,только без вырезания и без ошибок?
нет, способ совсем не интересный и не правильный) используй mb_substr
Gemorroj написал:
нет, способ совсем не интересный и не правильный) используй mb_substr
опробовал. И не вижу различий. Пробовал так $opis=@file_get_contents($files.'.dat');
$opis=mb_substr($opis,0,140);
if($opis)
echo iconv("UTF-8", "UTF-8", "$opis ...");
echo '<br/>'; и тоже самое. Попробовал так $opis=@file_get_contents($files.'.dat');
$opis=mb_substr($opis,0,140);
if($opis)
echo "$opis ...");
echo '<br/>'; и ошибки снова с появлением этих "квадратиков". Без iconv() вообще ошибок убрать не могу. Может есть другой способ?
mb_substr у тебя работал со строкой в однобайтовой кодировке. поставь локаль utf-8 или явно указывай какую кодировку использовать
Код:
span style="color: #0000BB"><?php$opis = file_get_contents($files.'.dat');$opis = mb_substr($opis, 0, 140, 'utf-8');echo $opis;?> |
Gemorroj написал:mb_substr у тебя работал со строкой в однобайтовой кодировке. поставь локаль utf-8 или явно указывай какую кодировку использовать
Код:
span style="color: #0000BB"><?php$opis = file_get_contents($files.'.dat');$opis = mb_substr($opis, 0, 140, 'utf-8');echo $opis;?> |
спасибо. Именно так работает отлично.
Безопасная ли такая форма? Это форму я сделал для загруз центра. Обычно на других сайтах если нажать "ок" из формы то страница перегружается. У меня нет. echo "<input type=\"text\" value=\"http://".$_SERVER['HTTP_HOST']."/dn/".$file."\" name=\"url\"/>";
Отредактировано AGENT (2009.01.22 16:04)
используй одинарные кавычки.
$file достаточно отфильтровать с помощью htmlspecialchars
#520.
Agent1
Гость
2009.01.23 06:06
Так если я буду использовать одинарные кавычки,то переменные обрабатываться не будут. Данная переменная отфильтрована в начале.
Код:
span style="color: #0000BB"><?phpecho '<input type="text" value="http://'.$_SERVER['HTTP_HOST'].'/dn/'.$file.'" name="url"/>';?> |
Gemorroj написал:Код:
span style="color: #0000BB"><?phpecho '<input type="text" value="http://'.$_SERVER['HTTP_HOST'].'/dn/'.$file.'" name="url"/>';?> |
подобная форма обязана вызвать ошибку. Обратные косые ты убрал.
проверь) это базовый синтаксис PHP
Gemorroj написал:
проверь) это базовый синтаксис PHP
проверил. Ошибка. Белый экран. Тут даже и проверять не нужно было когда ошибку сразу следовало ожидать.
лучше не спорь, сходи на форум джона, да спроси, если мне не веришь.
Gemorroj написал:
лучше не спорь, сходи на форум джона, да спроси, если мне не веришь.
блин . Это мой косяк был. Я двойную кавычку в конце поставил. Теперь работает. Символов сыкономили гг. И вот особо не пойму почему мы не экранизировали двойные кавычки?
правильно писать именно с одинарными, т.к. это быстрее, красивее и просто так рекомендуют разработчики PHP. обратные слеши нужны только на те символы, с помощью которых мы записываем строку. ну т.е. в случае с одинарными кавычками нужно слешировать одинарные кавычки, но не нужно двойные, и наоборот, если строка записывалась в двойных кавычках, то следовало бы слешировать двойные кавычки, но не нужно было бы слешировать одинарные.
Ужс. Ладн. Пойду дальше конспект писать. Нужно до баз добраться. Думаю через месяц уже напишу простой скрипт новостей или гостевой.
З.Ы. Если руки кривыми не будут))
Вот значит я юзаю сайт php.su и не особо понимаю зачем нужны всякие переводы строк и каретки с табуляциями. Что это за ерунда ? И можно ли их вообще не использовать?
это символ разметки. смотря в каких случаях, иногда они требуются для корректной переедачи данных.
Gemorroj написал:
это символ разметки. смотря в каких случаях, иногда они требуются для корректной переедачи данных.
вот щас смотрю скрипты свои и не вижу этого. Значит необязательно их использовать. Если можно то объясни по подробнее что и для чего.
передача заголовков в основном, иногда форматирование текста на странице.
Щас вот скачал дцмс 6.1 и посмотрел код. Весь код в этих \n . Двойные кавычки везде.и генерация доходит до 15 секунд при 3х онлайн. Жесть
) ну это плохой стиль просто)
конечно, чем писать так
Код:
span style="color: #0000BB"><?phpecho "текст\n";echo "еще текст\n";?> |
лучше было бы написать так
Код:
span style="color: #0000BB"><?phpecho 'текстеще текст';?> |
Я щас почистил весь двиг от ерунды. Убрал все лишнее и работает нормально. Пошел к аффтару поделиться а меня забанили гг
Добавлено спустя 2 минуты 5 секунд: Кстати у меня вот такой вопрос не стандартный. В .htaccess глобальные выключены. А скрипт показывает что они включены. Что это может быть? Пых как модуль 5. А на 4 пыхе показывал скрипт что выключены глобальные
php как cgi модуль?
я хз, не очень силен в этих настройках серверных.
Gemorroj написал:
php как cgi модуль?
я хз, не очень силен в этих настройках серверных.
ага.
Ура! Перенес все на другой сервер с пых 5.1.9 в качестве модуля пыха. Гг
Павел,ты не подскажешь что это за код?
Код:
lt;?function links($msg){$msg= eregi_replace("((https?|ftp)://[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/~%#]*(\\?[[:alnum:]?+&_=/%#]*)?)?)", "<a href=\"\\1\" target=\"_blank\">\\1</a>", $msg);return $msg;}?> |
Добавлено спустя 1 минуту 7 секунд: Что то мне он не нравится .
замена адресов на ссылки
Код:
span style="color: #0000BB"><?phpfunction links($msg){return preg_replace("~((https?|ftp)/[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/~%#]*(\\?[[:alnum:]?+&_=/%#]*)?)?)~i", '<a href="$1" target="_blank">$1</a>', $msg);}?> |
Gemorroj написал:замена адресов на ссылки
Код:
span style="color: #0000BB"><?phpfunction links($msg){return preg_replace("~((https?|ftp)/[[:alnum:]_=/-]+(\\.[[:alnum:]_=/-]+)*(/[[:alnum:]+&._=/~%#]*(\\?[[:alnum:]?+&_=/%#]*)?)?)~i", '<a href="$1" target="_blank">$1</a>', $msg);}?> |
а адрес и ссылка это разные вещи что ли? Гг
и кстати код у него весь именно такой. То есть нет <?php
?>
просто <? ?>
Адрес поидее хттп
/... А ссылка на адрес <а хреф... <?...?> это тоже будет работать, но как сценарий SGML
ДАУН-Данная Аватара Унаследована Незнайкой
PHP код на данный момент можно обозначать следующими конструкциями
Код:
span style="color: #0000BB"><?php// рекомендуемый стиль?><?// сокращенный не рекомендуемый стиль?><%// сильно не рекомендуемый стиль ASP%> |
да, я имел ввиду автоматическую замену http://xxx.ru на <a href="http://xxx.ru">http://xxx.ru</a>
А для чего там https и ftp? Кстати в скрипте меня насторожил такой момент. При инсталяции,в форме ввода мыла,оказалось мыло,которое я указывал в панеле управления хостингом. Что это может значить?
ну эти протоколы не хуже обычного http, мыло твое и так можно получить в переменной $_SERVER['SERVER_ADMIN']
Ага. Вот еще такой вопрос. Можно ли написать такой код,который запрещает скуль иньекцию?
Меня уверяют ,что данная функция есть. Я тебе позже покажу ее
бред. нету такой. все зависит от того что нам надо получить.
Я неправильно выразился. Не функция,а скорее алгоритм или типо того. Вот код
foreach ($HTTP_GET_VARS as $key => $val)
{
$val = htmlspecialchars($val, ENT_QUOTES);
$$key = $val;
}
;
foreach ($HTTP_POST_VARS as $key => $val)
{
$val = htmlspecialchars($val, ENT_QUOTES);
$$key = $val;
}
)) глупость это, а не функция)
с помощью этой функции когда-то переводили старые скрипты, которые написаны с расчетом под включенные глобальные переменные, на выключенные глобальные переменные. от SQL она никак не защищает. и к применению никак не рекомендована.
#552.
AND
Off
(11)
Участник
2009.03.03 18:06
if(($_GET['s']) == 'off') $s = '0'; else $s= '1';
Здесь $_GET['s'] не надо фильтровать?
Все входящие фильтруй. Можно ведь подставить значение другое. Не расчитывай на запланированную правильность
ДАУН-Данная Аватара Унаследована Незнайкой
если в дальнейшем переменная $_GET['s'] не используется, то не надо.
Добавлено спустя 2 минуты 31 секунду: еще желательно использовать фигурные скобки
{}Код:
span style="color: #0000BB"><?phpif ($_GET['s'] == 'off') { $s = 0;} else { $s = 1;}?> |
#555.
AND
Off
(11)
Участник
2009.03.03 22:10
Есть таблица stat, в ней поля id,ip,link_id
Оператор определяется функцией GetOperator()
Нужно вывести статистику по операторам для определенного link_id
в таком виде:
Мегафон: xx
Билайн: xx
МТС: xx
...
Как это сделать? Хотя бы примерно, а то сам не додумаюсь
статистику чего? что такое хх?
#557.
AND
Off
(11)
Участник
2009.03.03 22:10
xx - количество переходов
статистику переходов по операторам
ну тут бд нужно переделывать. пару строчками не отделаться.
#559.
AND
Off
(11)
Участник
2009.03.03 22:10
Добавить поле opsos и записывать туда оператора при переходе по ссылке?
2 поля. поле с именем оператора и счетчик переходов.
#561.
AND
Off
(11)
Участник
2009.03.04 22:10
Практически дописал скрипт управления рекламой и столкнулся с такой проблемой:
После инклуда в скрипт работающий с БД, файла link.php (в нем рекламные ссылки)
перестает работать скрипт, либо не показываются рекламные ссылки.
В чем может быть проблема?
#563.
AND
Off
(11)
Участник
2009.03.04 22:10
...
Отредактировано AND (2009.03.06 20:08)
ну синтаксических ошибок нет. надо искать в файлах, которые инклудятся.
#565.
AND
Off
(11)
Участник
2009.03.04 23:11
Файл ini.php
...
Файл opsos.php - скрипт определения оператора с этого сайта
Отредактировано AND (2009.03.06 20:08)
#566.
Vadik
Гость
2010.03.11 02:02
Всем привет! Небольшой вопрос по php. Как открыть этот массив закрывая коокие if ($b) { } чтоб там где $b можно было закрыть $_COOKIE['abc'] и открылась if ($b)? буду очень признателень
#567.
Vadik
Гость
2010.03.13 02:02
кодеры, вы шо спите? Или я попал не в темку. Дайте ответа...
здравствуйте, нужна функция постраничной навигации
Escos написал:
здравствуйте, нужна функция постраничной навигации
скрипт на SQL или на файлах?
datua написал:Escos написал:
здравствуйте, нужна функция постраничной навигации
скрипт на SQL или на файлах?
скрипт на базе MySQL
#572.
User
Гость
2010.03.22 14:02
Привет всем! Как сделать так чтоб этот код echo stripslashes($msg); пропускал только бб коды а не теги html? Вставил это echo htmlspecialchars($msg, ENT_QUOTES) но этот пропускает ни теги ни бб кодов..
#574.
User
Гость
2010.03.22 17:05
bb коды пропускает и к тому же теги тоже (<font ...></font> <div>..) Что нужно сделать чтобы html просто выводилса как текст?
помогите извлечь ip из 2 таблицы в соответствии с полем из первой.
Пробую так
SELECT table1.*,table2.*
FROM `online_stat` AS table1
LEFT JOIN `ip` AS table2 ON(table2.min<=table1.ip and table2.max>=table1.ip)
чет не выходит
что в table1.ip, table2.max и table2.min?
table1.ip - конвертированный ip в цыфры
table2.max, table2.min диапазоны ip
Код:
SELECT `online_stat`.*, `ip`.* |
FROM `online_stat`, `ip` |
WHERE `online_stat`.`ip` >= `ip`.`min` |
AND `online_stat`.`ip` <= `ip`.`max` |
Тип столбца : tinytext.
При вставки записи, значение урезается до 142байт.
Кодировка ютф8_бин.
Почему значение укорачивается?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Потому что без бин нету
Натан ротшильд :
Кто владеет информацией, тот владеет миром
utf8_general_ci чем не устраивает? в данном случае сказать ничего тольком не могу, нужен пример реально некорректно работающего кода и структуры БД
#585.
Pure
Гость
2010.03.29 17:05
Как конвертировать doc в txt на Linux хостинге ?обясните на пальцах или дайте лучше кусочек кода как ето делаеться)
поищи библиотеки в гугле, стандартными средствами это не сделать.
Какая разница между utf8_bin , utf8_general_ci и utf8_unicode ?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
_bin - регистрозависимый, _ci - регистронезависимый.
разницы между unicode и general так сходу не скажу, нужно гуглить.
Гугл сказал что юникод лучше сортирует данные, но дольше.
// спасиб, буду знать
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#590.
Hek
Гость
2010.04.02 01:01
Привет всем! Граблю загруз но при скачивании не загружается файл а просто текст типа код файла, что нужно прописать в htaccess чтоб избежать это?
#592.
Roby
Гость
2010.04.02 14:02
Как сделать зеркало сайта?
поствить модуль mod_proxy
#594.
Димa
Гость
2010.04.03 23:11
Гемор, Не помогает(. Я грабил загруз, когда начинаю через него скачать картинку допустим, скачивается не картинка а какой то текст вместо картинки (с тем же размерам), и с любого файла так. Граблю загруз от сеа который у тебя платный, через file_get_contents. Что делать чтоб файлы скачивались нормально?
#595.
Димa
Гость
2010.04.03 23:11
Т.е. я Hek случайно написал свое имя вместо Hek'a. Пожалуйста ответь
Димa, создай отдельную тему и выложи свой код.
#597.
Go_chat
Гость
2010.04.04 21:09
Привет. У меня проблема. Мне нужна wаp скрипт чата. Uzchat.chаt.dj/dchаt почему не регистратсия
SQL запрос :
Код:
SELECT COUNT(*) FROM table GROUP BY `aid` |
- нормально
Код:
SELECT COUNT(*) FROM table GROUP BY `aid` WHERE COUNT(*) > 1 |
- ошибка
нужно выбрать только если количество сгруппированных значений больше 1го
Натан ротшильд :
Кто владеет информацией, тот владеет миром
все, HAVING помог))
Натан ротшильд :
Кто владеет информацией, тот владеет миром
ну да.
Код:
SELECT COUNT(1) AS cnt FROM table GROUP BY `aid` HAVING cnt > 1 |
#601.
Саша
Гость
2010.04.09 00:12
Как обьеденить следующие запросы
SELECT * FROM `forum` WHERE `id`= 5 LIMIT 10
дальше в цикле при выводе значений
SELECT `gender` FROM `users` WHERE `id` = `forum`.`author`
, чтобы при выводе в цикле в ячейке gender массива с результатом запроса был результат второго запроса?
Код:
SELECT `forum`.*, `users`.`gender` |
FROM `forum` AS `forum` |
LEFT JOIN `users` AS `users` ON `users`.`id` = `forum`.`author` |
WHERE `forum`.`id`= 5 |
LIMIT 10 |
что выбрать: использовать объединенный запрос или в цикле делать кэшируемый запрос (если этот пользователь уже был в списке то запрос не делается)
в обоих таблицах будет много записей (> 100 000)
что имеется ввиду под "кэширующим" запросом?
запрос делается через фукц user
static $users;
if(!isset($users[$id]))
{
запрос ($users[$id] = результат)
}
return $users[$id];
ну так все зависит от того, будет ли использоваться кэш. если в цикле будет более 2 запросов в бд, то скорее всего, следует смотреть в сторону 1 запроса к нескольким таблицам.
Добавлено спустя 2 минуты 38 секунд: еще, если предпологается работа с большими объемами данных, можно посмотреть в сторону денормализации. т.е. продублировать нужные данные, чтобы к ним можно было легко получить доступ.
#608.
willi
Гость
2010.04.11 13:01
Вот такая у меня заморочка. Поставил скрипт, super sea, если создавать папки и лить файлы через админ панель они нормально отображаются, а когда создаю папку или файл с акка их на сайте нет.. Объясните, пожалуйста, как можно это исправить..
что за super sea, мне не ведомо, если это форк сеа с вапинета, то тебе нужно обновить БД. т.к. инфа о файлах берется оттуда, а не напрямую из файловой системы.
#610.
willi
Гость
2010.04.11 14:02
Я незнаю можно ли здесь давать ссылки но я вот здесь скачевал http://4mas.ru/download/index.php?act=view&file=6665&SESID=964e711c6366cab731e8f69f59087320
#612.
willi
Гость
2010.04.11 14:02
Эта версия очень старая да?
#613.
willi
Гость
2010.04.11 14:02
Спасибо.
#614.
willi
Гость
2010.04.12 12:12
Админ, та-же самая проблема. Файлы загруженые на сайт не отображаются..
#616.
willi
Гость
2010.04.12 12:12
Что тот-же самый скрипт? Нет, этот я уже отсюда скачал http://wapinet.ru/script/show.php?d=%2FZagruzki%2Fsea_downloads2.zip
#617.
willi
Гость
2010.04.12 14:02
Все, спасибо, я допёр
#618.
Саша
Гость
2010.04.14 23:11
А с обратной сортировкой по полю `forum`.`time` как будет?
Спасибо
#619.
Саша
Гость
2010.04.14 23:11
Это к #602
#621.
willi
Гость
2010.04.16 08:08
Привет. Я хочу поставить скрипт 'случайной графической ссылки (баннер)' как защитить картинку от скачкавния?
#623.
willi
Гость
2010.04.16 08:08
Жаль. Спасибо.
#624.
willi
Гость
2010.04.21 10:10
админ, привет. вот я в файл foot.php вставил код <? $r = "1";
include("random.php");
?> для вывода графической ссылки. в результате, в целом, файл выглядит вот так <?php
echo round(microtime(true) - $HeadTime,4) . 'с.<br>
<? $r = "1";
include("random.php");
?><a href="http://wapinet.ru/shop.php?sea">.</a>
</body>
</html>';
?>
Но баннер не отображается.. Почему?
P.S. Все файлы лежат в одной папке
Код:
span style="color: #0000BB"><?phpecho round(microtime(true) - $HeadTime, 4) . 'с. <br/>';$r = 1;include 'random.php';?><a href="http://wapinet.ru/shop.php?sea">.</a></body></html> |
#626.
willi
Гость
2010.04.21 12:12
Спасибо
ребята вот такая проблема не могу по голосам отсортировать чтобы у кого больше голосов тот на первом месте стоял вот в низу сам скрипт
вот в утф не могу уже сделать ни чего уже неделю мучаюсь
я просто учусь 3й месяц зато работает на половину
Поскажите пожалуйста как сделать. Есть таблица привата:
`id` int(11) NOT NULL auto_increment,
`user` int(11) NOT NULL,
`author` int(11) NOT NULL,
`text` varchar(1024) NOT NULL,
`chit` set('0','1') NOT NULL default '0',
`time` varchar(25) NOT NULL default '',
Нужно вывести список моих сообщений как на картинке.
Отредактировано Mark (2010.07.24 10:10)
Таблица с юзерами вот:
`id` int(9) NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`password` varchar(20) NOT NULL default '',
`sex` varchar(4) NOT NULL default '',
`live` varchar(50) NOT NULL default '',
`avatar` int(10) NOT NULL default '0',
`about` text NOT NULL,
`browser` text NOT NULL,
`ip` varchar(30) NOT NULL default '',
Код:
SELECT privat.id, |
users.name, |
(SELECT COUNT(1) FROM privat WHERE author = users.id) AS cnt |
FROM privat |
LEFT JOIN users ON users.id = privat.author |
WHERE privat.user = 1234 |
GROUP BY privat.author |
ORDER BY privat.id DESC |
ребята обясните пожалуйста
вот есть 2 таблици
в 1й данные юзера
как мне сделать чтобы юзеру присваивалось со втарой таблице?
например во второй таблице баланс и этот баланс присвоеть в первую таблицу юзерам сколько каждый заработал игравого баланса
спасибо за внимание! не получаеться это делать
Gemorroj написал:
LEFT JOIN
а можно пример если не трудно буду очень благодарен
Gemorroj написал:
несколько постами выше)
я просто не пойму что такое as и left join on
AS - это алиас, просто то что слева AS будет иметь имя которое написано справа AS
LEFT JOIN - это связь с таблицей. Т.е. мы добавляем к нашему запросу еще одну таблицу.
ON - это равнозначно WHERE, только используется в случае с джоинами (JOIN)
Gemorroj написал:
AS - это алиас, просто то что слева AS будет иметь имя которое написано справа AS
LEFT JOIN - это связь с таблицей. Т.е. мы добавляем к нашему запросу еще одну таблицу.
ON - это равнозначно WHERE, только используется в случае с джоинами (JOIN)
спасибо доступно обясняешь
привет , ребята а как сделать постраничную навигацию чтобы я в папку закидывал картинки и они вывозились постранично?
нужно оптимизировать запросы.
первый запрос :
второй (уже при обработке результатов первого)
Код:
SELECT COUNT(*) FROM posts WHERE id = $post['someid'] |
можно ли как то это всунуть в один?
пробовал так
Код:
SELECT id,(SELECT COUNT(*) FROM posts WHERE posts.id = posts.someid) AS is_someid FROM posts |
но возвращает всегда is_someid = 0
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Morgan просто у тя оба posts, думаю из-за него
попробуй основной через альянс
SELECT id,(SELECT COUNT(*) FROM posts WHERE posts.id = main.someid) AS is_someid FROM posts AS main
или
SELECT id,(SELECT COUNT(*) FROM posts WHERE id = posts.someid) AS is_someid FROM posts
Отредактировано xits (2010.08.05 21:09)
xits, спасибо!
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Morgan написал:xits, спасибо!
не за что))
Код:
CREATE TABLE IF NOT EXISTS `categories` ( |
`id` tinyint(3) unsigned NOT NULL auto_increment, |
`position` tinyint(3) unsigned NOT NULL default '0', |
`name` tinytext character set utf8 collate utf8_unicode_ci NOT NULL default '', |
`description` tinytext character set utf8 collate utf8_unicode_ci NOT NULL default '', |
PRIMARY KEY (`id`) |
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
tam vsio provilno i xorosho dzelal? ) eto table dlia blog script
почему tinyint , у тебя максимум 255 записей может быть чтоли?
Gemorroj написал:
почему tinyint , у тебя максимум 255 записей может быть чтоли?
int(11) tak? naprimer menia nujno maximum 999 id kak eto dzelat? a eti default zachem vabshe nujno ili net? pokaji primer kak ti etovo dzelaesh pojolusto
щя сам посмотрел типы, по памяти вот ошибся) smallint нужен
Gemorroj написал:
щя сам посмотрел типы, по памяти вот ошибся) smallint нужен
ok = ))
что значит ZEROFILL ?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
подставить нули вначале для типов с фиксированной длиной.
где же такое применяется?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
На счёт работы Пирата.
Вот тут спор завязался.
/* Функция отфильтровки чисел */
function int($int)
{
return abs(intval($int));
}
я считаю, что нехорошо, что функция использует стандартное имя в php. Согласен или это я уже чудю?
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
если она вынесена в класс или использует неймспейс, то вроде как считается что все ок. если она в глобальной области видимости, то пхп кинет фатал еррор, т.к. переопределять функции в пхп нельзя. в данном случае, это функция int(), у пхп же языковая конструкция (int). как к этому относиться хз... в доках о таком не читал. лично мне это не нравится т.к. запутывает код.
Геморрой.
Форум Пирата->system/functions.php
тоже сказал, что это правильно, но не очень хорошо.
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
Akdmeh #660
если ты не заметил, у меня есть такая же функция, с таким же именем :\
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Morgan написал:
Akdmeh #660
если ты не заметил, у меня есть такая же функция, с таким же именем :\
Братья по несчастью
.
Сегодня гуглил по поводу внедрения этой функции в php 6, гугл сказал что не будет. Мы же её в конце концов не цифрой назвали, и с конца в конец не транслитом.
Отредактировано Pirate (2010.08.21 09:09)
Но это сбивает пользователя с толку.
Прочитав функцию int я ожидаю от неё поведение - очистку символов не зависимо от знака.
Поэтому у меня такая функция названа absint (абсолютное число, то есть, беззнаковое).
Ну это конечно ваши проблемы)
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
Pirateпочему же по несчастью.
Использование вполне оправданно.
Юзать abs(intval($var)); или abs((int)$var);
не хочу.
Akdmehтак быстрее писать, понятней, и удобней.
Вот к примеру функция, mysql_real_esace_string, гораздо удобнее использовать escape(), да и если что можно будет поменять алгорит обработчика только в одной функции
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Morgan, если бы ты этот свой int определил в классе, тебе бы никто ничего не сказал. А ты его вынес в глобальную область видимости.
На счёт mysql_real_escape_string согласен, он у меня давно уже называется
mes - для краткости. Но при этом документируется нормально, и не похож на название стандартного типа.
Это немного удивляет.
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
Morgan написал:
Pirate
почему же по несчастью.
Использование вполне оправданно.
Юзать abs(intval($var)); или abs((int)$var);
не хочу.
Akdmeh
так быстрее писать, понятней, и удобней.
Вот к примеру функция, mysql_real_esace_string, гораздо удобнее использовать escape(), да и если что можно будет поменять алгорит обработчика только в одной функции
По несчастью по отношению жюри ))).
Я например protect назвал.
Gemorroj написал:
Morgan, если бы ты этот свой int определил в классе, тебе бы никто ничего не сказал. А ты его вынес в глобальную область видимости.
Засунуть функции обработки в один статический класс?!
Натан ротшильд :
Кто владеет информацией, тот владеет миром
я скрипты все сегодня просмотрел. там на самом деле много чего в классы запихать нужно.
не обязательно статические.
Вопрос: как ты считаешь, переопределение mysql-класса для добавления дополнительного функционала - хорошо или нет? Падает ли от этого производительность?
Я говорю о функционале типа:
mysqli_additional extends mysqli{...
?
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
да. считаю что это нужно делать обязательно. тогда у нас есть всегда возможность посчитать запросы, задампить их, и вообще есть низкий уровень доступа - а это всегда полезно. скажем, можно в приватных свойствах еще пароли хранить и проч.
$query = mysql_query("select * from `posts` where `text` LIKE '%".urldecode(protect($_GET['query']))."%' order by `id` limit ".$page.",".$set['str']."");
$total = mysql_result(mysql_query("select count(*) from `posts` where `text` LIKE '%".urldecode(protect($_GET['query']))."%'"),0);
как в $total использовать SQL_CALC_FOUND_ROWS?
Код:
SELECT SQL_CALC_FOUND_ROWS * FROM `posts` WHERE `text` LIKE '%xxx%' ORDER BY `id` LIMIT 0, 10; |
SELECT FOUND_ROWS(); |
Gemorroj написал:Код:
SELECT SQL_CALC_FOUND_ROWS * FROM `posts` WHERE `text` LIKE '%xxx%' ORDER BY `id` LIMIT 0, 10; |
SELECT FOUND_ROWS(); |
$query = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `posts` where `text` LIKE '%".urldecode(protect($_GET['query']))."%' order by `id` limit ".$page.",".$set['str']."");
$total = SELECT_FOUND_ROWS($query);
так?
ппц..))
нет, не так)
Код:
span style="color: #0000BB"><?php$query = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `posts` where `text` LIKE '%" . protect($_GET['query']) . "%' ORDER BY `id` LIMIT " . $page . "," . $set['str']);$total = mysql_result(mysql_query('SELECT FOUND_ROWS()'), 0); |
убери urldecode. такой запрос уязвим. %27
Gemorroj написал:ппц..))
нет, не так)
Код:
span style="color: #0000BB"><?php$query = mysql_query("SELECT SQL_CALC_FOUND_ROWS * FROM `posts` where `text` LIKE '%" . protect($_GET['query']) . "%' ORDER BY `id` LIMIT " . $page . "," . $set['str']);$total = mysql_result(mysql_query('SELECT FOUND_ROWS()'), 0); |
убери urldecode. такой запрос уязвим. %27
спасибо, прикрыл дырочку )
<?php
class input {
public static function get($key){
return isset($_GET[$key]) ? $_GET[$key] : false;
}
public static function get_int($key){
return isset($_GET[$key]) ? abs(intval($_GET[$key])) : 0;
}
public static function get_post($key){
return isset($_POST[$key]) ? $_POST[$key] : false;
}
}
//usage:
$var=input::get('ololo');
это будет метод возвращения значений из поля $_GET без ошибок.
Как считаешь, стоит ли смотреть в эту сторону, или лучше каждый раз делать так:
$var=isset($_GET['ololo']) ? $_GET['ololo'] : false;
Ну в принципе класс можно вообще расширить и сделать что-то типу модуля защиты.
Плюс этого класса - не будет ошибок Notice, если переменную не определить.
Минусы - усложнения логики.
Твоё мнения?
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
думаю, если библиотека будет предостовлять помимо этих 3-х методов еще кучу всякого интересного, то вполне имеет право на жизнь. а если ограничиваться этими 3-мя методами, то пользы просто мало видно.
Думаю, задача класса будет именно в получении данных от пользователя, при чём получение без Notice'ов, а также начальная фильтрация этих данных, например,
input::get_bool input::get_array(это если вводить test[]=1&test[]=4, будет массив, а это вызывает ошибку, и метод get заодно будет проверять тип).
Какие-то ещё идеи будут?)
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
нотисы, по моему, второстепенны, т.к. всегда можно вместо тернарника использовать собаку. я, напимер, ей и пользуюсь обычно.
Ещё в чём минус, если передавать массив(я писал выше) - будут ошибки.
@ действительно довольно сильно тормозит работу, хотя в принципе это не важно)
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
Akdmeh, среди ченжлога php5.3 было и ускорение работы собаки. я лично уже все равно полностью пересел на php5.3)
Геморрой, у меня тоже давно стоит линейка 5.3
Вот я в бложеке ещё это смотрел, ну конечно бенчмарки сакс, тем не менее:
http://akdmeh.net/full_text.php?id=68
То есть, эта функция для меня ещё чисто выгодна проверкой переменной на наличие переменной - противная ошибка)))
Желание стать программистом из-за того, что вам нравляться компьютерные игры-это все равно, что желание стать гинекологом из-за того, что вам нравиться секс
вопрос по части оптимизации, нужно ли ставить индексы на поля по которым идет сортировка?
ORDER BY `field`
Натан ротшильд :
Кто владеет информацией, тот владеет миром
kagda nado ispolzivat eti funqcii vpdo? bindColumn, bindParam, bindValue. ne ponial opisanie na php.net
две таблицы, posts - сообщения и posts_files - файлы сообщений;
делаю вывод
Код:
$res = mysql_query('SELECT *, (SELECT COUNT(*) FROM `post_files` WHERE `post_id` = `posts`.`id`) AS `count_files` FROM `posts`'); |
while($post = mysql_fetch_array($res)) |
{ |
.... |
// если к посту приложены файлы |
if($post['count_files'] > 0) |
{ |
//здесь делаю запрос к таблице файлов и еще одним циклом вывожу файлы. |
} |
} |
возможно ли как то оптимизировать?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
добавь 1 запросу HAVING `count_files` > 0
нет, не обязательно что бы файлов небыло.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
а понял.
Код:
SELECT `posts`.*, |
`files`.* |
(SELECT COUNT(*) FROM `post_files` WHERE `post_id` = `posts`.`id`) AS `count_files` |
LEFT JOIN `files` ON `files`.`postId` = `posts`.`id` |
FROM `posts` |
это у меня 4 файла и 4 раза будет пост выведен ;/
немного не то.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
аа... да, там тогда подзапросом можно порпобовать и GROUP_CONCAT
Код:
DELETE `files`, `dirs` FROM `files`, `dirs` WHERE `files`.`in_dir_id` = '0' OR `dirs`.`in_dir_id` = '0' |
цель : удалить записи в таблицах files и dirs, в которых in_dir_id = 0.
удаляет только из таблицы dirs
Натан ротшильд :
Кто владеет информацией, тот владеет миром
)
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#697.
okissss
Гость
2010.10.01 16:04
не работает регистрация ICQ почему ? сколько не пробовал выдает ошибку!
#699.
okissss
Гость
2010.10.01 18:06
Ошибка!
Проверте правильность данных и попробуйте еще раз
и так не один раз
#700.
okissss
Гость
2010.10.01 21:09
обновил скрипт толку 0
okissss написал:
обновил скрипт толку 0
что значит обновил скрипт? ты про платную версию чтоли?
#702.
okissss
Гость
2010.10.02 17:05
да про нее
#704.
okissss
Гость
2010.10.02 21:09
переустановил не отображаеться картинка права на файл temp.jpg поставил как и написано 666
точно все файлы перезалил? пиши на email.
#706.
okissss
Гость
2010.10.03 17:05
сейчас попробую в отдельную папку с 0 поставить отпишусь о результате
Подскажите пожалуйста как организовать систему смены размера шрифта на сайте. Есть файл style.css и переменная $razmer=11-14. Файл стиля подключаетя к каждому файлу движка. Как сменить в файле стиля значение Font-size. Сейчас на многих сайтах есть такая фишка в личных настройках.Если можна подскажите приблизительный код.
Отредактировано Mark (2010.10.11 17:05)
Gemorroj, привет))) можешь немного помочь? решил написать небльшой скрипт, считающий количество переходов с определённых сайтов на мой.есть база, в которой записаны эти сайты. вытягиваю реферрер - $ref = $_SERVER['HTTP_REFERER']; а дальше туплю - не могу догнать, как сделать, чтоб если такой адрес в базе есть, то + переход, а если нет - ничего не делаем.
if{
$ref = 'http://site1.ru/';
$sql = mysql_query('UPDATE 'ref' SET 'hits' = ('hits' + 1) WHERE 'id' = '1'');
}elseif{
$ref = 'http://site2.ru/';
$sql = mysql_query('UPDATE 'ref' SET 'hits' = ('hits' + 1) WHERE 'id' = '1'');
}
вот так пытаюсь проверить, но не выходит - сервер не доступен...убираю это - доступен...кароч туплю(((
вот база если что
CREATE TABLE IF NOT EXISTS `ref` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`ref` char(30) NOT NULL default '',
`hits` char(30) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
INSERT INTO `ref` (`id`, `ref`, `hits`) VALUES
(1, 'http://site1.ru/', ''),
(2, 'http://site2.ru/', '');
заранее благодарю)))
if (isset($_SERVER['HTTP_REFERER'])) {
$q = mysql_query("SELECT * FROM `ref` WHERE `ref` = '".$ref."';");
if (mysql_num_rows($q)) {
mysql_query('UPDATE `ref` SET `hits` = hits+1 WHERE `ref` = '".$ref."';");
} else {
mysql_query("INSERT INTO `ref` SET `ref` = '".$ref."';");
}
}
Это как пример... Не стоит использовать его у себя...
Отредактировано Nu3oN (2010.10.13 13:01)
Я буду лучше голоден, но между креслом и рулем и на дороге.
#710.
dol@r
Гость
2010.10.14 18:06
как прописывать бд на хостинге h2m.ru.....помогите ....подскажите
Nu3oN, почему? отфильтровать ток надо))
foreign key (itemname) references AuthItem (name) on delete cascade on update cascade
что значит on delete cascade on update cascade? т.е. как оно работает? если я удалю запись из 1 таблицы, то и связаная запись с другой таблицы удалится? что происходит когда on update cascade??
на хую вас вертів
1) да, удалится.
2) при обновлении родительской таблицы произойдет действие указанное в ON UPDATE. CASCADE значит обновить инфу у детей в соответствии с данными у родителя.
Т.е, значения полей с одинаковыми названиями будут изменятся в 2 таблицах?
Отредактировано Fuelen (2010.10.19 13:01)
на хую вас вертів
ага, те, на которые поставлен внешний ключ с соответствующей связью.
у меня только ид связан. остальные поля разные.
ид изменять не буду, значит on update cascade не обязательно. так я понимаю?
на хую вас вертів
Fuelen, если ты делаешь связь, то в любом случае нужно указать действие и на удаление, и на обновление. Просто по дефолту они RESTRICT
http://dev.mysql.com/doc/refman/5.1/en/ … aints.htmlIf ON DELETE or ON UPDATE are not specified, the default action is RESTRICT.
ясно, спасибо))
на хую вас вертів
есть таблица users (есть поле id) и таблица friends ( поля id, user1_id, user2_id). какой внешний ключ должен быть, чтобы при удалении записи из users, удалялась запись из friends, где user1_id или user2_id = user.id?
на хую вас вертів
У меня проблемма с запросом!
Сам запрос:
Код:
mysql_query("SELECT `f`.*, `s`.`time` FROM `table` AS `f` |
JOIN `table` AS `s` |
WHERE `f`.`id` = `s`.`cid` GROUP BY `f`.`id` ORDER BY `s`.`time` DESC LIMIT 0,10"); |
Что надо:
Мне надо чтобы со второй таблицы смотрело последнее время совсем(ну там последнее сообщение в форуме например(а именно время)), а первую таблицу выводило с лимитом 0,10 (это постраничная навигация)... Две таблицы одинаковые... Недавно начал склеивать таблицы, чтобы не уменьшать производительность скриптов...
Если такое было, прошу кинуть ссылочку
Отредактировано FireStorm (2010.10.27 13:01)
Правильно сформулированный вопрос содержит в себе половину ответа!
я не совсем вопрос понял.
FireStorm написал:
Две таблицы одинаковые
если они одинаковые, то time есть и у первой?
Ну да... Но мне time со второго запроса надо.... Запрос несколько иной у меня, но суть такова как написала
Отредактировано FireStorm (2010.11.10 08:08)
Правильно сформулированный вопрос содержит в себе половину ответа!
ну, по идее должно работать.
Если убрать GROUP BY `f`.`id` то первый результат выдачи, тот который мне нужен...
Добавлено спустя 3 минуты 14 секунд: Мне так кажется, что лучше добавить в базе еще одно поле(updatetime)... Ну если другого способа не найду
Правильно сформулированный вопрос содержит в себе половину ответа!
в чем проявляется некорректность?
Вопрос по SQL:
Есть таблица с постами и темами в форуме, нужно для цикличного вывода тем подсчитать посты в выводимой теме что-то типа этого:
$query = mysql_query("SELECT topics.*,COUNT(*) FROM topics,posts WHERE topic_id=topics.id LIMIT 0,10");
Отредактировано Pirate (2010.10.27 15:03)
Код:
SELECT topics.*, COUNT(posts.id) AS cnt |
LEFT JOIN posts ON posts.topic_id = topics.id |
LIMIT , 10 |
Gemorroj написал:Код:
SELECT topics.*, COUNT(posts.id) AS cnt |
LEFT JOIN posts ON posts.topic_id = topics.id |
LIMIT , 10 |
Спасибо
.
Gemorroj написал:Код:
SELECT topics.*, COUNT(posts.id) AS cnt |
LEFT JOIN posts ON posts.topic_id = topics.id |
LIMIT , 10 |
Если не сложно, можешь расписать запрос? Ибо я JOIN плохо понимаю.
Gemorroj написал:
в чем проявляется некорректность?
Идея в том, что я пишу форум, для него сделана одна таблица, и мне надо было, чтобы тема где последний пост выводилось само выше..
Добавлено спустя 3 минуты 25 секунд: Pirate написал:Gemorroj написал:Код:
SELECT topics.*, COUNT(posts.id) AS cnt |
LEFT JOIN posts ON posts.topic_id = topics.id |
LIMIT , 10 |
Если не сложно, можешь расписать запрос? Ибо я JOIN плохо понимаю.
Описание JOIN
Отредактировано FireStorm (2010.10.27 17:05)
Правильно сформулированный вопрос содержит в себе половину ответа!
FireStorm написал:Gemorroj написал:
в чем проявляется некорректность?
Идея в том, что я пишу форум, для него сделана одна таблица, и мне надо было, чтобы тема где последний пост выводилось само выше..
ORDER BY id DESC
Pirate написал:FireStorm написал:Gemorroj написал:
в чем проявляется некорректность?
Идея в том, что я пишу форум, для него сделана одна таблица, и мне надо было, чтобы тема где последний пост выводилось само выше..
ORDER BY id DESC
Это аналог того, что и я можно сказать написала выше(в самых первых постах. Я про вывод)... Проблему решила добавлением еще одного поля....
Отредактировано FireStorm (2010.11.10 08:08)
Правильно сформулированный вопрос содержит в себе половину ответа!
Возник еще один вопрос, играет ли особую роль в производительности при указывании в запросе, что нужен вывод всего лишь одного элемента(LIMIT 1)... И сразу же если да, то тогда следующий вопрос, а есть такое, где это необязательно(тоесть производительность от этого выше не станет)?
Правильно сформулированный вопрос содержит в себе половину ответа!
FireStorm написал:
Возник еще один вопрос, играет ли особую роль в производительности при указывании в запросе, что нужен вывод всего лишь одного элемента(LIMIT 1)... И сразу же если да, то тогда следующий вопрос, а есть такое, где это необязательно(тоесть производительность от этого выше не станет)?
Если в условии запроса указать ячейку с ключом, например: (id-primary key), то не играет, если это не ключ то лучше делать.
Добавлено спустя 1 минуту 51 секунду: и мой вопрос)
как сделать в регулярке типа (JAR|SISX)?
preg_match_all
FireStormкак мне кажется, конечно играет.
серверу приходится дергать все строки, а при указании "LIMIT 0,1" он вытянул первую строку и закончил
Натан ротшильд :
Кто владеет информацией, тот владеет миром
FireStorm, есть, если выборка строится на уникальных значениях. Т.е. если на id - PRIMARY KEY, то SELECT * FROM table WHERE id = 10 с лимитом или без, разницы нет.
Добавлено спустя 51 секунду: Pirate, не совсем понял. Объясно зачем preg_match_all и зачем именно регулярка.
спс, будем знать
хоть по идее и догадывалась
Отредактировано FireStorm (2010.11.10 08:08)
Правильно сформулированный вопрос содержит в себе половину ответа!
Gemorroj написал:
FireStorm, есть, если выборка строится на уникальных значениях. Т.е. если на id - PRIMARY KEY, то SELECT * FROM table WHERE id = 10 с лимитом или без, разницы нет.
Добавлено спустя 51 секунду:
Pirate, не совсем понял. Объясно зачем preg_match_all и зачем именно регулярка.
Уже разобрался, спасибо.
PirateSELECT `type` FROM `table` WHERE `type` REGEXP '^(jar|sisx)$'
хотя наверно было бы лучше
SELECT `type` FROM `table` WHERE `type` = 'jar' OR `type` = 'sisx'
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Morgan, вместо REGEXP тут лучше LIKE подошел бы. Но в принципе и так и так неправильно)
Morgan написал:
Pirate
SELECT `type` FROM `table` WHERE `type` REGEXP '^(jar|sisx)$'
хотя наверно было бы лучше
SELECT `type` FROM `table` WHERE `type` = 'jar' OR `type` = 'sisx'
Эм, а mysql зачем?
PirateГлавная » PHP/MySQL » PHP+
MySQLДобавлено спустя 46 секунд: вместо REGEXP тут лучше LIKE подошел бы.
LIK'ом можно также сделать?
Но в принципе и так и так неправильно)
как так?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
MorganГлавная » PHP/MySQL »
PHP+MySQL
preg_match_all
Отредактировано Pirate (2010.10.28 20:08)
Morgan, эм, посмотрел внимательнее регулярку, я имел ввиду это)
Код:
SELECT `type` FROM `table` WHERE `type` LIKE '%sisx' OR `type` LIKE '%jar' |
т.к. вероятно, нужно-таки проверять только расширение.
есть такой массив:
[ids] => Array (
[0] => 35704
[1] => 34552
[2] => 35705
[3] => 35710
[4] => 36700
[5] => 35708
[6] => 35707
[7] => 36699
[8] => 35706
[9] => 35709
[10] => 36701 )
Нужно записать данные в ячейку вот так: 35704|34552|35705|35710|36700|35708|35707|36699|35706|35709|36701|
Количество элементов в массиве может быть разное
и в чем вопрос?
implode('|', $ids)
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Morgan написал:
и в чем вопрос?
implode('|', $ids)
Спасибо, я забыл что она "склеивает" массив. Либо с телефона башка не варит, либо склероз.
на сколько данное решение гомнисто?
Код:
span style="color: #0000BB"><?phpfunction x_date($time) { $labelTime = date('d.m.Y', $time); $arrM = array( '01'=>'янв', '02'=>'фев', '03'=>'мар', '04'=>'апр', '05'=>'май', '06'=>'июн', '07'=>'июл', '08'=>'авг', '09'=>'сен', '10'=>'окт', '11'=>'ноя', '12'=>'дек' ); if ($labelTime == date('d.m.Y')) { return 'Сегодня в '.date('H:i', $time); } elseif ($labelTime == (date('d') - 1).'.'.date('m.Y')) { return 'Вчера в '.date('H:i', $time); } else { return date('d', $time).' '.$arrM[date('m', $time)].' '.date('Y', $time).' в '.date('H:i', $time); }}?> |
Я буду лучше голоден, но между креслом и рулем и на дороге.
есть ли более лояльные подходы?
Я буду лучше голоден, но между креслом и рулем и на дороге.
1) до идее должно нотис на labelTime выдать.
2) $labelTime[2] и $labelTime[3] вычисляются и "сегодня", и "вчера", хотя ни там, ни там не используются.
ну а так норм, единственное что лучше уже переползать на класс
DateTime. В последнем своем проекте на работе огребли кучу проблем со стандартными php функциями для работы с датой.
включен полный вывод ошибок, ничего не вывело...
labelTime во всех трех случаях используется...
З.ы я его и так юзаю, просто в данный момент лучше юзать ”это”
Добавлено спустя 7 минут 29 секунд: поправил немного...
Я буду лучше голоден, но между креслом и рулем и на дороге.
Кто нить дайте FAQ по загрузке файлов с Мини Опера
Правильно сформулированный вопрос содержит в себе половину ответа!
Уже сам нашел: http://maxmessage.ru/r/1902
Правильно сформулированный вопрос содержит в себе половину ответа!
Проблемы какие-то с запросам.
Такой запрос
"SELECT COUNT(*) FROM `forum_topics` WHERE `last_date` > '1288607120' AND `last_date` < '1288615359'"
Сжирает 122 мсек времени, хотя все другие (и более сложные) не больше 1й мсек.
Кто в этом виноват?
MySQL сервер?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Код:
SELECT COUNT(1) FROM `forum_topics` WHERE `last_date` BETWEEN 1288607120 AND 1288615359 |
а так?
да не в этом дело(
при повторном запросе уже время в пределах разумного.
Натан ротшильд :
Кто владеет информацией, тот владеет миром
и что за тип таблицы? не InnoDB случайно?
вобщем, в случае с myisam количество записей берется из метаданных - это очень быстро, никаких подсчетов не ведется, в случае же с InnoDB COUNT реально высчитывается.
MyISAM
Натан ротшильд :
Кто владеет информацией, тот владеет миром
блин, а я только InnoDB заюзал...
Так что же все таки выбрать?
Я буду лучше голоден, но между креслом и рулем и на дороге.
InnoDB
)) при чем однозначно)) преимущества транзакций и внешних ключей с головой покрывают некоторые недостатки.
ну да... Меняем скорость на надежность+удобство
Я буду лучше голоден, но между креслом и рулем и на дороге.
оппа, что это у тебя за аватарка,
Nu3oN? сертификат у зенда получил?
Gemorroj написал:
оппа, что это у тебя за аватарка, Nu3oN? сертификат у зенда получил?
ну нафиг гг так, поржать гг
Я слишком жадный что бы 20к отдавать...
Я буду лучше голоден, но между креслом и рулем и на дороге.
Nu3oN, насчет цены - это да, дорого штопесдец.
я бы в принципе сертифицировался если бы знал что буду работать в области разработки... Но нет такой возможности, и тем более я даже не знаю где это востребованно у нас в области
Добавлено спустя 51 секунду: в общем говоря мне оно не надо
Я буду лучше голоден, но между креслом и рулем и на дороге.
#767.
match
Гость
2010.11.06 19:07
Даброй ночи, подскажите пожалуйста как с помощю preg_match выделить айди в ссылке, допустим есть страница со ссылками типа
<a href="http://sait.ru/dog/?newsid=43">Фильмы</a>
Я хочу загнать страницу в цыкл и через preg_match выделять чило, в даном примере 43.
Как мне это сделать, Вот начал запрос а как продолжыть хз preg_match_all('/<a href="\/dog\/([a-z0-9\_\-\/\.\(\)]+)
Код:
$str = '<a href="http://sait.ru/dog/?newsid=43">Фильмы</a> |
s |
s<a href="http://sait.ru/dog/?newsid=43">Фильмыd</a>df<a href="http://sait.ru/dog/?newsid=45">Фильмы</a>'; |
preg_match_all('/\?newsid=([0-9]+)">/', $str, $arr); |
print_r($arr); |
#769.
match
Гость
2010.11.07 13:01
Спасибо за помощь. Если есть возможность подскажите как найти выход из ситуации, использовал код который вы дали и возникла проблема как с текста вырезать ненужный блок текста <!-- Archive-Start --><div id='news-id-46'><b>Вид</b>: Фильм<br /><br /> , проблема в том что чило ( в news-id- ) меняется и оно помещено в переменную $val . Пробовал с помощью substr но не получилось.
привет))) вот у меня есть папка, в ней ещё папки и файлы..а можно её очистить через fopen?
Profiрекурсивный unlink и rmdir тебе поможет
Натан ротшильд :
Кто владеет информацией, тот владеет миром
Morgan, можно подробней, а то я с этим не сталкивался никогда. мне надо просто удалять содержимое папки...
Код:
span style="color: #0000BB"><?phpfunction del_dir($directory){ //exec('rm -r ' . escapeshellarg(realpath($directory))); $dir = opendir($directory); while (($file = readdir($dir)) !== false) { if (is_dir($directory . '/' . $file) && ($file != '.') && ($file != '..')) { del_dir($directory . '/' . $file); } else { unlink($directory . '/' . $file); } } closedir($dir); return rmdir($directory);} |
спасибо))) ток всё равно не вкурил..(((
а что тут вкуривать?
Пишешь del_dir('./папка_которую необходимо_удалить/');
Я буду лучше голоден, но между креслом и рулем и на дороге.
всё, разобрался))) тока пока разбирался, раз 5 денвер удалил((( у меня такая структура папок:
папка 1/
в ней этот файл и папка 2, в которой создаются другие файлы и папки...так вот, мне надо, чтоб удалялось содержимое папки 2, а она сама оставалась...а у меня или удаляется всё с папкой, или ваще вся папка home на денвере оО
тогда ничего не удаляеится..
блиииин(((
Код:
span style="color: #0000BB"><?phpfunction del_dir($directory){ //exec('rm -r ' . escapeshellarg(realpath($directory))); $dir = opendir($directory); while (($file = readdir($dir)) !== false) { if (is_dir($directory . '/' . $file) && ($file != '.') && ($file != '..')) { del_dir($directory . '/' . $file); } else { unlink($directory . '/' . $file); } } closedir($dir); return rmdir($directory);}del_dir('./111/');?> |
сама папка 111 должна остаться, а всё содержимое - удалиться....но у меня всё удаляется...rmdir убираю - вообще ничего((
Код:
span style="color: #0000BB"><?phpfunction del_dir($directory){ $dir = opendir($directory); while (($file = readdir($dir)) !== false) { if (is_dir($directory . '/' . $file) && ($file != '.') && ($file != '..')) { del_dir($directory . '/' . $file); rmdir($directory . '/' . $file); } else { unlink($directory . '/' . $file); } } closedir($dir); return;}del_dir('./111/'); |
Здравствуйте.
У меня проблемы с проверкой существования такого же файла. Реализовал структуру:
по ид определяет в какую папку ложить файл(с 1 по 1000 - папка 0; 1001 по 2000 - папка 1 и тд)
добовляет к имени файла ид
Вот так проверял при обычной структуре папок
$pat='../gruz/files/'.$dir_id.'/'.$iden.'_'.$exf[0].'.'.$ext;
$res=mysql_result(mysql_query("SELECT `id` FROM `files` WHERE `path`='$pat' LIMIT 1"),0);
if (mysql_num_rows($res)>0)
{$error=$error.'Такой файл уже существует в БД!';}
Но теперь $pat будет разное....и почему то это еще и варнинг выдает. Как же все таки правильно проверить? Заранее благодарен
Код:
span style="color: #0000BB"><?php$pat = '../gruz/files/' . $dir_id . '/' . $iden . '_' . $exf[0] . '.' . $ext;$q = mysql_query("SELECT `id` FROM `files` WHERE `path`='" . mysql_real_escape_string($pat) . "' LIMIT 1");if (!$q) { $error .= 'Ошибка запроса';} else if (mysql_num_rows($q) > 0) { $error .= 'Такой файл уже существует в БД!';} else { $res = mysql_result($q, 0);} |
это по поводу варнинга. а в целом вопроса не понял.
Мне нужно чтоб один и тот же файл не возможно было загрузить. При такой структуре остается наверно только по имени в бд проверять
Отредактировано LooK (2010.11.11 16:04)
хз... храни md5 сумму от файла в бд, если нужно проверять конкретно данные в файле. если же одинаковое имя файла, то либо в БД проверяй, если там нету, то file_exists
всё равно папка 111 удаляется, а она должна остаться...
Привет всем! у меня есть функция уменьшения изображений! мне мадо функцию которая уменьшеные изображения выводит с хорошим качеством!
нужно узнать сколько успешных записей произошло при использовании INSERT IGNORE.
Че та уже час втыкаю, и нихрена не пойму о_О
Вот таблица
Код:
-- -------------------------------------------------------- |
|
-- |
-- Table structure for table `o]dEa_online` |
-- |
|
CREATE TABLE IF NOT EXISTS `o]dEa_online` ( |
`id` int(11) NOT NULL AUTO_INCREMENT, |
`user_type` int(11) NOT NULL, |
`time_click` int(11) NOT NULL, |
`user_agent` text NOT NULL, |
`user_ip` varchar(150) NOT NULL, |
`user_login` varchar(50) NOT NULL, |
`user_id` int(11) NOT NULL, |
PRIMARY KEY (`id`), |
KEY `id` (`id`) |
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ; |
|
-- |
-- Dumping data for table `o]dEa_online` |
-- |
|
INSERT INTO `o]dEa_online` (`id`, `user_type`, `time_click`, `user_agent`, `user_ip`, `user_login`, `user_id`) VALUES |
(1, 0, 1290290732, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63', '127.0.0.1', '', 0); |
отправляю такой запрос
Код:
UPDATE `o]dEa_online` SET |
`user_type` = '1', |
`time_click` = '1290290732', |
`user_login` = 'Nu3oN', |
`user_id` = '1' |
WHERE `user_ip` = '127.0.0.1' |
AND `user_agent` = 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63' |
time_click обновляется, а все остальное с нулевым значением...
Добавлено спустя 38 секунд: тоже самое и при записи
З.ы это mysqli
Я буду лучше голоден, но между креслом и рулем и на дороге.
ооо блин... теперь еще хлеще история
пишу так
Код:
span style="color: #0000BB"><?php $mysqli -> query("INSERT INTO `online` SET `user_type` = '".$setOnline['type']."', `time_click` = '".SITE_TIME_SHIFT."', `user_agent` = '".$mConnect -> user_header('ua')."', `user_ip` = '".$mConnect -> user_header('ip')."', `user_login` = '".$setOnline['login']."', `user_id` = '".$setOnline['id']."'; ");?> |
всего один запрос, а вот что выходит в итоге
Код:
INSERT INTO `o]dEa_online` (`id`, `user_type`, `time_click`, `user_agent`, `user_ip`, `user_login`, `user_id`) VALUES |
(1, 1, 1290292681, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63', '127.0.0.1', 'Nu3oN', 1), |
(2, 1, 1290292681, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63', '127.0.0.1', '', 0); |
отправляю один запрос, а записывается дважды о_О
Я буду лучше голоден, но между креслом и рулем и на дороге.
воспроизвести не удалось (php 5.3.3). вероятно, тут нужно копать в сторону некорректного php кода, а не sql
ошибка разрешилась сама... думаю надо удалять денвер и ставить топ сервер о_О
то при запуске еще требует какую то библиотеку avicodec.dll вроде...
Добавлено спустя 3 минуты 5 секунд: Gemorroj написал:
воспроизвести не удалось (php 5.3.3). вероятно, тут нужно копать в сторону некорректного php кода, а не sql
нет... этот запрос отправляется в том виде, что я показал!
я специально писал такую фигню
Код:
span style="color: #0000BB"><?phpclass SQL extends MySQLi { public function sqlQuery($q) { if ($this -> real_query($q)) { echo $q.'<br />'; return new SQLResult($this); } else { return false; } }}class SQLResult extends MySQLi_Result {////}?> |
Я буду лучше голоден, но между креслом и рулем и на дороге.
Nu3oN, так а что денвер? от него по сути только автосоздание хостов. php, apache, mysql можно руками самому обновлять из noinstall версий (ссылки могу дать, если надо). avicodec.dll для php_ffmpeg нужен вроде.
#797.
Voron
Гость
2010.11.24 14:02
Подскажите пожалуйста как сделать вывод картинки. Есть файл img.php которий подключается на страницу
test.php через echo'<img src="image.php" alt="+"/>'; В файле img.php подключается файл-картинка c адресом http://sait.ru/AAAAAAAAAAAA . Мне нужно чтоб при запросе <img src="image.php" alt="+"/> выводилась картинка с адресом http://sait.ru/AAAAAAAAAAAA .
Пробывал так,для файла image.php, но не фурычит(
Код:
$url = 'http://sait.ru/AAAAAAAAAAAA'; |
|
$ooo = imageCreateFrompng("$url"); |
header("Content-type: image/png"); |
Imagepng($ooo); |
Если просто выводить в файле test.php картинку через echo '<img src="http://sait.ru/AAAAAAAAAAAA"/>'; то нормально отображает ее только Opera a Google Chrome и Internet Explorer нет.
Если она в HTML не отображается, то врядли с PHP все наладится
ДАУН-Данная Аватара Унаследована Незнайкой
Вообщем такая проблема:
С этой http://mobjar.ru/games/8433 (к ресурсу отношения не имею), надо с неё регулярками вырезать экраны, да так чтоб список экранов соответствовал джар файлу. То есть я парсю данную страницу, и записываю в бд. Есть поле с экранами и надо записывать так:
176x220: MOT E398,E770,L7,E1,V3i,Vxxx\n|\n240x320: S40 3ed.\n240x320: S60 3ed.: Symbian 9.1\n
Я смог сделать только чтобы по одной строке с каждого джар файла писалось, а ведь где одна строка, а где-то две, три, и при чем все это к одной игре относится.
Код:
span style="color: #0000BB"><?php$str = file_get_contents('http://mobjar.ru/games/8433');$str = explode('</table>', $str);$arr = array();for ($i = 1, $all = sizeof($str); $i < $all; ++$i) { $ex = explode('</div>', $str[$i]); $arr[] = trim($ex[0]);}print_r($arr); |
Gemorroj большой спс.
Вот еще небольшой вопрос созрел. Вот как устроена (организованна) страница типа: "Файл подготавливается к скачиванию, подождите 0%. Обновить"
Я так думаю буферизацию надо использовать, а вот что именно в этот момент происходит пока юзер ждет, не догоняю. Ну думаю копирование файлов, а еще что? И вообще как она устроена? Благодарю.
это js. просто в фоне скачивается файл.
#802 неа только что смотрел, js'a в странице нету
#802, наверное ты меня не понял немного. Вот к примеру на вап сайтах поиск музыки с вконтакта, и там такая страница присутствует. Вот я сам поиск с навигацией написал, теперь над этим думаю
Напиши там в поиске че нибудь и нажми инфо
а, ну так в фоне запускается скрипт, который скачивает файл.
Ну это я понял, а вот сам процесс (0%) с помощью чего выводить, ведь он изменяется
там перезагрузка страницы стоит.
получаешь размер файла через get_headers, например. скачиваешь. смотришь размер скачанных данных и сравниваешь с размером из get_headers
Неплохая идея спс, и еще надо функцию flush заюзать, чтоб отдать результат, но при этом продолжая работу)
телефоны не поймут. перезагружай целиком страницу.
#812.
Sitov
Гость
2010.12.05 20:08
Подскажите, как в Sеа идет подсчет файлов в отдельной папке, хочу на главную вывести, а как не пойму
#814.
Sitov
Гость
2010.12.05 21:09
Не получается!... пишу так
require 'moduls/ini.php';
require 'moduls/fun.php';
require 'moduls/connect.php';
print mysql_result(mysql_query('SELECT COUNT(`id`) FROM `files` WHERE `infolder`="files/!Simbian_9.4" LIMIT 1'),0);
#815.
Sitov
Гость
2010.12.05 21:09
вот щас заработал, но показывает только новые файлы
значит работает не написанный выше sql запрос.
#817.
Sitov
Гость
2010.12.05 21:09
Блин.. этот код папки щитает))
#818.
Sitov
Гость
2010.12.05 21:09
А есть ведь код, где просто указываеш id папки!
#819.
Sitov
Гость
2010.12.05 21:09
вот нащел в index
Код:
//Кол-во новых файлов в папке |
$new_all=""; |
$stime=$time-(3600*24*$setup['day_new']); |
//NOT USE//$new_all = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `timeupload` > "'.$stime.'" AND `infolder` REGEXP "'.$file_info['path'].'*" AND `size` > "0";')); |
if($setup['day_new']!=0) $new_all = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `timeupload` > "'.$stime.'" AND `infolder` LIKE "'.$file_info['path'].'%" AND `size` > "0";')); |
if($new_all[0] and $setup['day_new']!=0) $new_all = '<font color="red">+'.$new_all[0].'</font>'; else $new_all=""; |
//Всего файлов в папке |
//NOT USE//$allinfolder = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `infolder` REGEXP "'.$file_info['path'].'*" AND `size` > "0";')); |
$allinfolder = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `infolder` LIKE "'.$file_info['path'].'%" AND `size` > "0";')); |
$name = str_replace('*','',$file_info['name']); |
че тут переделать?
Код:
span style="color: #0000BB"><?phpcho mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder`="files/!Simbian_9.4" AND `size` > 0 LIMIT 1'), 0); |
#821.
Sitov
Гость
2010.12.05 23:11
блин это вообще.. тоже не работае..
писал так в отдельном файле! я все это пытаюсь вывести на главной.
$65 = mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder`="files/!Simbian_9.4/" AND `size` > 0 LIMIT 1'), 0);
echo '('.$65.')';
А как сделать чтоб после обновления страницы, скрипт не сначала начинал работу, а откуда надо?
И еще вопрос, так правильно сравнивать размер полученны с get_headers с размером загружаеМОГО файла
if (filesize('data/'.trim($muza[5])) != trim($siz[1]))
??
переменные не могут начинаться с цифр.
Добавлено спустя 2 минуты 30 секунд: LooK написал:
А как сделать чтоб после обновления страницы, скрипт не сначала начинал работу, а откуда надо?
скачивать файл должен другой скрипт нежели тот, который генерит страницу с процентами.
LooK написал:
if (filesize('data/'.trim($muza[5])) != trim($siz[1]))
примерно так
#824.
Sitov
Гость
2010.12.05 23:11
я и латинскими набирал, все также
#826.
Sitiv
Гость
2010.12.05 23:11
поменял на латинские буквы, показывает (0) хотя файлы есть..
значит папку указал некорректно
#828.
Sitov
Гость
2010.12.05 23:11
да нет.. папка правильная..
Код:
SELECT COUNT(1) FROM `files` WHERE `infolder` LIKE "files/!Simbian_9.4/%" AND `size` > 0 LIMIT 1 |
#830.
Sitov
Гость
2010.12.05 23:11
Не работает.. хрен с ним! устал уже, щас клаву запулю в угол, если продолжу
sql запросы-то верные, ты как-то не так их используешь просто.
#832.
Sitov
Гость
2010.12.05 23:11
Блин ты не повериш)) получилось))
#833.
Sitov
Гость
2010.12.06 01:01
Сново заморочки.. как правильно инклудить счетчик на главной john, делаю так include 'co.php'; и пол страницы исчезаит
#834.
Sitov
Гость
2010.12.06 02:02
Все сделал, ток как теперь вычилить в каждой папке новые файлы %)
#835.
Sitov
Гость
2010.12.06 04:04
Как вообще правильно смотреть если новые файлы в папке?
да. нужно смотреть таймштами timeupload вроде.
#837.
Sitov
Гость
2010.12.06 13:01
Код:
//NOT USE//$new_all = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `timeupload` > "'.$stime.'" AND `infolder` REGEXP "'.$file_info['path'].'*" AND `size` > "0";')); |
if($setup['day_new']!=0) $new_all = mysql_fetch_array(mysql_query('SELECT COUNT(*) FROM `files` WHERE `timeupload` > "'.$stime.'" AND `infolder` LIKE "'.$file_info['path'].'%" AND `size` > "0";')); |
if($new_all[0] and $setup['day_new']!=0) $new_all = '<font color="red">+'.$new_all[0].'</font>'; else $new_all=""; |
Вот брал этот код, прописывал папку, которую смотреть надо, в отдельном файле работает
записываю на главну, и показывает все файлы, так выглядит, Windows (23 23) почему так не пойму
#838.
Sitov
Гость
2010.12.06 13:01
вот этот код писал в index возле нужной ссылки
Код:
$win = mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder` LIKE "files/!Windows_Mobile/%" AND `size` > 0 LIMIT 1'), 0); |
$new_all_files = mysql_result(mysql_query('SELECT COUNT(*) FROM `files` WHERE `infolder` LIKE "files/!Windows_Mobile/%" AND `size` > 0 LIMIT 1'), 0); |
|
if($new_all_files[0]!=0) $new_all = '<font color="red">+'.(int)$new_all_files[0].'</font>'; else $new_all=""; |
|
//echo '('.(int)$all_files[0].')<font color="red">+'.(int)$new_all_files[0].'</font>'; |
echo '('.$win.' '.$all_files.')'; |
COUNT(1) и COUNT(*) - в данном случае одно и то же.
Код:
span style="color: #0000BB"><?php$all = mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder` LIKE "files/!Windows_Mobile/%" AND `size` > 0 LIMIT 1'), 0);$new = mysql_result(mysql_query('SELECT COUNT(1) FROM `files` WHERE `infolder` LIKE "files/!Windows_Mobile/%" AND `size` > 0 AND `timeupload` > ' . (time() - 86400) . ' LIMIT 1'), 0);echo $all;if ($new) { echo ' (+' . $new . ')';} |
#840.
Sitov
Гость
2010.12.06 15:03
нет все также, в файле отдельном например reo.php работает, А когда твой код ставлю прям в index показывант так (55+55) Я так понимаю, нужно к сылки инклуд счетчика делать, но на john не получается,
делаю так include 'reo.php' и нижняя часть страницы исчезает..
Все сдел..) остался последний ворос вот на гланой страницы выводится 10 рвзделов я переделал на 15, но теперь когда открываеш папку, например видео там выводится 15 штук..
if($onpage < 3){
$onpage = 10;
вот тут место 10 поставил 15! надо что то добавить?чтоб в нутри папки например было всего на вывод файлов 7 строк
Код:
span style="color: #0000BB"><?phpif (isset($_GET['s'])){$f = get_headers($_GET['s']);$siz = explode(':', $f[4]);$muza = explode('/', $_GET['s']);}if (!file_exists('data/'.trim($muza[5]))){ echo 'Скачивание песни<br />Файл подготавливается к скачиванию, <b>пожалуйста <a href="?">обновите</a> страницу через 5-10 секунд!</b>';}if (filesize('data/'.trim($muza[5])) != trim($siz[1])){ copy($_GET['s'], 'data/'.trim($muza[5]));}else {echo 'Файл загружен';}?> |
помогите пожалуйста реализовать, в гет содержится полный путь к файлу.
Все получается тупо, когда файл уже загрузился выводится сообщение, обновить (
1) у get_headers есть 2 параметр, используй его.
2) url файла, который нужно скачать записывается в таблицу, а скрипт запускаемый кроном через каждые 5 сек читает таблицу и скачивает файлы.
3) скрипт, который описан тобой тут просто должен проверять file_exists
2) вообще не понял зачем бд юзать
ну можешь в файл писать. бд просто надежнее.
А по скорости дат файл не быстрее будет?
зависит от того как написано будет. разница в любом случае несущественна.
2) а вариант без крона имеется?
не думаю. можно, конечно, фигню всякую нагородить с посылкой http запроса, но это оч плохой вариант. не бойся крона.
Есть ли разница в результатах запроса при обрамлении строк двойными/одинарными кавычками?
Натан ротшильд :
Кто владеет информацией, тот владеет миром
какого запроса? SQL? нет.
вот думаю как лучше осуществить мультиязычность сайта?
Хранить все в массиве, или создать например энное колличество папок, с шаблонами на разных языках...
Кто, что думает по этому поводу?
Я буду лучше голоден, но между креслом и рулем и на дороге.
во первых есть php модуль
gettext, использовать ли его, вопрос сложный.
а вот зачем под каждый язык отделная директория совсем не пойму. там же все равно будет по 1 файлу с массивом?
Нет там будут обычные шаблоны, просто будет текст на разных языках
Я буду лучше голоден, но между креслом и рулем и на дороге.
ну тогда по любому в разных папках)
Хотел спросить, как время мускулом чтоб добавлялось в запись сделать, похожим на time();
Я при запросе посылаю значение time(); и оно же как id записи идет
Отредактировано tipsun (2010.12.26 23:11)
Делай тип TIMESTAMP, на выходе обрабатывай его через UNIX_TIMESTAMP, если тебе нужен именно он, но лучше средствами mysql и получай дату в нужном виде.
mysql:
UNIX_TIMESTAMP(CURDATE()) - говнокод?
Начались какие-то непонятные проблемы с кодировкой... Выбираешь UTF-8 в браузере, в базе прописываешь вручную ТЕКСТ и на выходе <?><?><?><?><?> уже в самом движке.
И наоборот, если с движка прописываешь в базу, то в базе <?><?><?><?><?>
С чем связанно?
Отредактировано tipsun (2010.12.31 21:09)
Походу с denwer чет не то... я переустановил, все равно проблема не решена...
Везде utf-8 (utf8, utf8_general_ci)...
Добавлено спустя 3 минуты 56 секунд: Нет, ниче не помогает((
Было вроде все норм...
В браузере ставишь UTF-8 сайт отображается корректно, вводишь с сайта данные и в базе коряво записываются
Сбрасываешь на автомат, сайт отображается не корректно, а введенные с сайта данные, в базу, корректно
Отредактировано tipsun (2010.12.31 22:10)