PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (17): В начало « ... 5 6 7 8 [9] 10 11 12 13 ... » В конец

> Найдено сообщений: 255
UNTRUSTED Отправлено: 22 Марта, 2012 - 17:41:45 • Тема: Помогите упростить запросы! • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 1137
Вот она впринципе и есть задачаУлыбка
Найти количество первых, вторых, третьих, и их сумму!
(Добавление)
Чтобы было понятней.. Типо как в пирамиде система, или типа рефералы первого, второго и.т.д. уровней. То есть здесь примерно такая же задача стоит!
UNTRUSTED Отправлено: 22 Марта, 2012 - 17:14:55 • Тема: Помогите упростить запросы! • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 1137
Вот код который можно было бы я думаю упростить, но сам не знаю как:
CODE (htmlphp):
скопировать код в буфер обмена
  1. ### Строение таблицы ###
  2. id-1 | id-2 |
  3. ------------|
  4.   1   |   2   |
  5. ------------|
  6.   1   |  3   |
  7. ------------|
  8.   2   |   4  |
  9. ------------
  10.   1   |  6   |
  11. ------------|
  12.   4  |   7   |
  13. ------------

Допустим таблица у нас выглядит так:
Далее запросы:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $1 = mysql_fetch_row(mysql_query("SELECT COUNT(id2) FROM `table` WHERE `id1` = '$var'")); ##Ну здесь понятно - выбираем из таблицы количество id2 где id1 соответсвует значению переменной
  2. $2 = mysql_fetch_row(mysql_query("SELECT COUNT(id2) FROM `table` WHERE `id1` IN (SELECT `id2` FROM `table` WHERE `id1` = '$var')")); ##Вот здесь мы выбираем количество тех id2, в строке которых id1 равен id2 в строке у $var
  3. $3 = mysql_fetch_row(mysql_query("SELECT COUNT(id1) FROM `table` WHERE `id2` IN (SELECT `id1` FROM `table` WHERE `id2` IN (SELECT `id1` FROM `table` WHERE `id2` = '$var'))")); ##Ну здесь тоже самое, только еще глубже запрос!!
  4. $col = $1[0] + $2[0] + $3[0];

Можно же полюбому как-то проще сделать?
(Добавление)
И вдобавок, поминться мы говорили о выводе переменных, что через '.$.' быстрее чем "",
а если вот к этому примеру отнести вывод этих переменных вот таким образом:
CODE (htmlphp):
скопировать код в буфер обмена
  1. echo $col.'('.$1[0].'|'.$2[0].'|'.$3[0].')'; ## Муторно но если быстрее, то фиг с ним что муторно
  2. echo"$col ( $1[0] | $2[0] | $3[0] )"; ##Там быстрее работает, а здесь быстрее пишеться :)
UNTRUSTED Отправлено: 22 Марта, 2012 - 13:24:46 • Тема: Запрет кеш • Форум: Вопросы новичков

Ответов: 5
Просмотров: 295
Какой-то сайт пишет:

Запрет кэширования

Пересохраните файл test-1.php с новым именем test-2.php и измените его следующим образом:
Спойлер (Отобразить)


Теперь попробуйте снова открыть нашу тестовую папку http://localhost/test-cache/, щелкните по имени test-2.php и теперь наживайте кнопки «Назад», «Вперед». Время каждый раз меняется! И это говорит о том, что браузер не берет страницу из кэша при переходе вперед/назад, а заново запрашивает ее с сервера. Что, собственно, нам было и нужно.

(Добавление)
Wiki пишет:

Другим решением является использование метода запроса GET, включающего уникальную строку запроса с каждым вызовом, как показано на примере ниже.
Спойлер (Отобразить)


Следует помнить, что такой способ сильно забивает кеш. Лучше воспользоваться установкой заголовка Expires на прошедшую дату в вашем скрипте
UNTRUSTED Отправлено: 22 Марта, 2012 - 13:19:58 • Тема: Запрет кеш • Форум: Вопросы новичков

Ответов: 5
Просмотров: 295
Т.е. никак не запретить?
А так у меня и без всяких махинаций страницы обновляются, будь то переход по ссылке, отправка формы и.т.д, и не надо ничего химичить!
UNTRUSTED Отправлено: 22 Марта, 2012 - 12:56:07 • Тема: Запрет кеш • Форум: Вопросы новичков

Ответов: 5
Просмотров: 295
Такая проблема, давно уже не могу решить! Все перепробовал, но все равно кешируется, в опере точно, в других браузерах не проверял! Но факт что в опере кешируется и этого достаточно!
Пробовал в htaccess писать:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <IfModule mod_headers.c>
  2.   Header  append Cache-Control "no-store, no-cache, must-revalidate"
  3.   </IfModule>
  4.   # Заголовок Expires
  5.   <IfModule mod_expires.c>
  6.   ExpiresActive  On
  7.   ExpiresDefault  "now"
  8.   </IfModule>

и так
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  header("Expires: Mon, 26 Jul 1997 05:00:00  GMT");
  3.   header("Last-Modified: " . gmdate(  "D, d M Y H:i:s") . " GMT");
  4.   header("Cache-Control: no-cache,  must-revalidate");
  5.   header("Pragma: no-cache");

и так
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  header("Cache-Control: no-store");
  3.   header("Expires: " .  date("r"));

и так
CODE (htmlphp):
скопировать код в буфер обмена
  1. <meta http-equiv='cache-control' content='no-cache'>
  2. <meta http-equiv='expires' content='0'>
  3. <meta http-equiv='pragma' content='no-cache'>

все перепробовал писать! Ничего не помогает - при нажатии кнопок назад вперед ничего не обновляется Разнесу! Разнесу!
Кто может знает?
UNTRUSTED Отправлено: 22 Марта, 2012 - 03:17:58 • Тема: Абсолютное равенство (===) • Форум: Вопросы новичков

Ответов: 18
Просмотров: 642
DelphinPRO пишет:
я несколько раз введу его логин и пароль от балды и васю забанят

А откуда ты узнаешь логин Васи Пупкина?
Это тоже самое, что сказать, мне не нравиться Вася Пупкин, я введу неправильно несколько раз пин-код кредитки, и ее заблокируютУлыбка
UNTRUSTED Отправлено: 22 Марта, 2012 - 02:31:40 • Тема: Абсолютное равенство (===) • Форум: Вопросы новичков

Ответов: 18
Просмотров: 642
DelphinPRO пишет:
проверкой наличия в БД записи с парой login\password;

Не могу.. мне нужно чтобы после n неверных попыток авторизации, логин автоматичесуи блокировался, с восстановлением доступа только в письменном виде!!
UNTRUSTED Отправлено: 22 Марта, 2012 - 01:35:55 • Тема: Абсолютное равенство (===) • Форум: Вопросы новичков

Ответов: 18
Просмотров: 642
OrmaJever пишет:
оператор равенства ещё нужно обработать

Ну в этой функции тоже оператор равенства присутствует
PHP.NET пишет:

Возвращает отрицательное число, если str1 меньше, чем str2, положительное число, если str1 больше, чем str2, и 0 если строки равны.

Итого получается так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. $var1 = "Hello";
  3. $var2 = "Hello";
  4. if (strcmp($var1, $var2) == 0) {
  5.    echo '$var1 равно $var2';
  6. }
  7. ?>
UNTRUSTED Отправлено: 21 Марта, 2012 - 21:43:49 • Тема: Абсолютное равенство (===) • Форум: Вопросы новичков

Ответов: 18
Просмотров: 642
DelphinPRO пишет:
попадется такой же но в другом регистре

Я имел ввиду хешУлыбка
Мы же хеши сравниваемУлыбка
DelphinPRO пишет:
это уже должен быть другой пароль

Ясен пеньУлыбка
(Добавление)
так что кстати будет быстрее работать для такой строки "strcmp" или "==" ?
UNTRUSTED Отправлено: 21 Марта, 2012 - 21:38:21 • Тема: Абсолютное равенство (===) • Форум: Вопросы новичков

Ответов: 18
Просмотров: 642
Bio man, спасибо!
(Добавление)
Кстати, вот еще вопрос! Из моей прошлой темы!
Я нашел как экранировать бекслэш в preg_match

Никто не знает почему так? Т.е получается что два раза пишем и два раза экранируем, иначе ошибку выдает.
UNTRUSTED Отправлено: 21 Марта, 2012 - 21:34:12 • Тема: Абсолютное равенство (===) • Форум: Вопросы новичков

Ответов: 18
Просмотров: 642
А еще лучше strcasecmp для регистронезависимой проверки.. Но это не для пароля, так как шанс что попадется такой же но в другом регистре 0,000001% Улыбка
UNTRUSTED Отправлено: 21 Марта, 2012 - 21:25:52 • Тема: Абсолютное равенство (===) • Форум: Вопросы новичков

Ответов: 18
Просмотров: 642
Все догнал, спасибоУлыбка
Я думал, что-то там типо по битам сравнивает, и можно как-нибудь подменить!

PHP.SU пишет:

Жёсткое сравнение с помощью === (сравнение по значению и по типу)
Спойлер (Отобразить)

(Добавление)
Bio man пишет:
А еще лучше strcmp

Ооо! Интересная штука, просто про нее еще пока ничего не знал...
PHP.NET пишет:

Подсказка
Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке. Используйте для этого strpos() либо strstr(), поскольку они выполнят эту задачу гораздо быстрее.

И там соответственно ссылки на strcmp нетуУлыбка
Возьму на вооружение.
UNTRUSTED Отправлено: 21 Марта, 2012 - 21:13:10 • Тема: Абсолютное равенство (===) • Форум: Вопросы новичков

Ответов: 18
Просмотров: 642
Здравствуйте! Отдохнули от меня?
Я вам еще вопросик принесУлыбка
Почти всегда и везде используют неточное сравнение (==),
но вот скажем как лучше сделать при проверке md5 пароля?
Вот собственно пример кода
CODE (htmlphp):
скопировать код в буфер обмена
  1. $pass=md5($pass,1)//Выводит в виде двоичной строки из 20 символов
  2. mysql(INSERT...);//А записывает в формате BINARY(20) - 40значного числа
  3. ####### Файл №2 #######
  4. $pass = md5($pass,1);
  5. mysql(SELECT...);
  6. if($pass === $selectpass){...}//Можно так сравнивать??
  7. if($pass == $selectpass){...}//Или так все-таки лучше и быстрее???

(Добавление)
Или вообще лучше так?
UNTRUSTED Отправлено: 19 Марта, 2012 - 20:00:30 • Тема: Хранение хеша • Форум: Хранение данных, их вывод и обработка

Ответов: 1
Просмотров: 855
Сначала напишу код
PHP:
скопировать код в буфер обмена
  1. $pass = ...;
  2. $a = sha1($pass,0);//выдаст что-то вроде  2494143b06da3aaeb7892cbb9fd752049a460946
  3. $b = sha1($pass,1); //выдаст что-то вроде n»ЫЄМ+TеK“¬Gf&
  4.  
  5.  

если в базу сохранять $a, то нужно либо BINARY(40) - он сохранит в виде 40 символьного числа, либо CHAR(40), не имеет значения!
Но вот если второй вариант, то тут вообще интересноУлыбка
$b сохраняем в CHAR(20) - сохраняются вот эти каракули, меняем потом в BINARY(20) - получается то число что в $a(тоесть 40 символов умещается в 20 строчной строке, почему??), и обратно меняешь, все норм, совпадает. Тоже самое если сохранять в BINARY(20) сразу...
Вопрос №1:
Можете объяснить, почему тогда первый вариант не записыватся в BINARY(20) а требует 40?
Вопрос №2: Как я понял, лучше использовать с $b? но в какой тип сохранять бинарный или строковый?
Надеюсь понятно расписал help
UNTRUSTED Отправлено: 19 Марта, 2012 - 17:41:05 • Тема: include, require \+once • Форум: Вопросы новичков

Ответов: 7
Просмотров: 247
а в этом подключаемом фале сделать что-то типа такого?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. for(i=0;i<10000;i++){
  3. echo'$i';
  4. }
  5. ?>

(Добавление)
Протестировал раз 10 каждый, в среднем одинакого, хотя первый раз простой require занял чуть больше времени на 0.002 секУлыбка, но в остальные разы реабилитировалсяУлыбка
(Добавление)
тоесть лучше так и оставить и писать (уже по привычке) везде require_once???

Страниц (17): В начало « ... 5 6 7 8 [9] 10 11 12 13 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB