PHP.SU

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

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

> Найдено сообщений: 463
Prizma Отправлено: 08 Января, 2016 - 02:30:13 • Тема: Ссылки как экономия памяти • Форум: Вопросы новичков

Ответов: 3
Просмотров: 260
Ну допустим будет у тебя один массив с кучей данных или 10 маленьких массивов с теми же данными разницы нет) А вот при передачи данных в функцию если данные там не изменяются, тогда можно выйграть память передав её по ссылке (точно не помню, но вроде php оптимизирован в этом плане и память под новую переменную не выделится пока ты не попробуешь изменить переменную)
Второй вариант это, когда наоборот тебе надо изменить переменную допустим массив и получить уже измененный массив, тогда лучше конечно сообщить переменную по ссылке и сразу изменять аргумент, чтобы в памяти не создавалась его копия, которая потом заменит оригинал.

Простые примеры:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $a = 1;
  3. $b =& $a;
  4. echo $b;    // 1
  5. $a++;
  6. echo $a;    // 2
  7. echo $b;    // 2
  8. unset($a);  // удаляем $a
  9. echo $b;    // 2
  10. echo $a;    // *пусто*
  11. $a = 1;     // присвоем новое значение
  12. echo $b;    // 2
  13. echo $a;    // 1
  14.  
  15. function foo(&$a) {
  16.     $a++;
  17. }
  18. $a = 1;
  19. foo($a);
  20. echo $a;    // 2
  21.  
  22. // По сути это хорошая альтернатива вот этому:
  23. $a = 1;
  24. function bar($a){
  25.     return ++$a;
  26. }
  27. $a = bar($a);
  28. echo $a;    // 2
  29. ?>
Prizma Отправлено: 08 Января, 2016 - 02:16:51 • Тема: Округление числа до двух цифр после запятой • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
Viper пишет:
Prizma я говорю не про кол-во попугаев, а про реальную работу. Тем паче про конкатенацию речи не было.

Окей, просто одного round() будет мало, чтобы вывести число с фиксированным кол-вом знаков после запятой, если конечно это требуется.
Просто интересно сколько sprintf нужно использовать чтобы снизить производительность? по моему и 1000 sprintf. что сложно представить наврятле нанесут хоть сколько-нибудь ощутимый урон производительности
Prizma Отправлено: 08 Января, 2016 - 02:10:29 • Тема: Задача по php • Форум: Вопросы новичков

Ответов: 11
Просмотров: 432
Все хотят помочь девушке?))
как то так:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $myGrowth = 170; // рост пользователя
  3. // массив с ростом друзей пользователя
  4. $myfriendsGrowth = [
  5.     155,
  6.     178,
  7.     167,
  8.     210,
  9.     148
  10. ];
  11. // "счетчик"
  12. $higherMe = 0; // здесь подсчитываем сколько из друзей выше пользователя
  13. // перебираем всех друзей
  14. foreach($myfriendsGrowth as $friendGrowth) {
  15.     // если он друг выше пользователя увеливаем "счетчик"
  16.     if($myGrowth < $friendGrowth) {
  17.         $higherMe++;
  18.     }
  19. }
  20. // выводим результат
  21. echo sprintf('%s друзей выше Вас', $higherMe);
  22. ?>
Prizma Отправлено: 08 Января, 2016 - 02:01:30 • Тема: Выделение активной ссылки • Форум: Вопросы новичков

Ответов: 7
Просмотров: 513
Viper пишет:
с времен появления CSS через :active или :visited
Делать это через php нужно только если у вас шаблонизатор, но не так как у вас.

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

Например вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $uri = trim($_SERVER['REQUEST_URI'], '/');
  4. ?>
  5. <a href=""<?=($uri == '')?' style="color:red;"':'';?>>Главная</a><br>
  6. <a href=""<?=($uri == 'contacts')?' style="color:red;"':'';?>>Контакты</a><br>
  7. <a href=""<?=($uri == 'items')?' style="color:red;"':'';?>>Товары</a><br>
  8. <a href=""<?=($uri == 'item/146')?' style="color:red;"':'';?>>Розовая зубовыковыривательница</a>
Prizma Отправлено: 07 Января, 2016 - 21:17:17 • Тема: Не работает стротайм • Форум: Вопросы новичков

Ответов: 8
Просмотров: 348
dcc0 пишет:
И как твой substr тут обрежет "июнь?

до "Июн"

я всего лишь привел пример, а не сделал тебе готовое решение, я не знаю какие у тебя значения месяцев стоят. Поэтому проще убрать substr и в массиве сразу указать те значения которые у тебя.
Prizma Отправлено: 07 Января, 2016 - 21:13:23 • Тема: Выделение активной ссылки • Форум: Вопросы новичков

Ответов: 7
Просмотров: 513
Используйте:
Prizma Отправлено: 07 Января, 2016 - 21:10:24 • Тема: Округление числа до двух цифр после запятой • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
Viper пишет:
множественные sprintf могут привести к падению производительности. Т.е. нужно использовать аккуратно.

http://micro-optimization.com/string-concatenation-with-single-quotes-vs-sprintf/
в последних версиях php скорость всего лишь в 1.5 раза ниже обычной конкотенации, которая выполняется почти моментально.
В своих проектах вместо:
PHP:
скопировать код в буфер обмена
  1. $str = 'В вашей корзине ' . $x . ' товаров на сумму ' . $y . 'руб.';

Использую:
PHP:
скопировать код в буфер обмена
  1. $str = sprintf('В вашей корзине %s товаров на сумму %s руб.', $x, $y);

1. Нагляднее
2. Удобно править
3. Код становится более читаемым

Не значительный ущерб по производительности компенсируется сильными механизмами вывода, т.е. мне не нужно приводить значение, это делает сама функция, разработанная именно для этого.
(Добавление)
К слову в тестах не было php 5.5 и 5.6, я думаю там эта функция работает еще быстрее.
Prizma Отправлено: 07 Января, 2016 - 17:35:50 • Тема: str_replace • Форум: Вопросы новичков

Ответов: 17
Просмотров: 735
DemoN1810 пишет:
это для цб только одну колонку отвести, а новости, а анекдоты, а википедия вконце концов?

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

я бы на твоем месте отсеивал например не строковые значение или те для которых есть функция используя ассоциативный массив, примерно так:
PHP:
скопировать код в буфер обмена
  1. // класс который выводит сообщение или выполняет функцию,
  2. // если сообщение соответствует определенному значениею
  3. class message
  4. {
  5.     // массив, где ключом является сообщение,
  6.     // а значением название функции
  7.     private $keys = [
  8.         '%WIKI%'=>'wiki',
  9.         '%NEWS%'=>'news',
  10.         '%OTHER%'=>'other'
  11.     ];
  12.  
  13.     // конструктор класса
  14.     // $message string - отправленное сообщение
  15.     public function __construct($message)
  16.     {
  17.         // проверяем является ли сообщение "ключевым"
  18.         // (т.е. проверяем есть ли функция для данного сообщения)
  19.         if(isset($this->keys[$message])) {
  20.             // если есть тогда записываем название функции в переменную $func
  21.             $func = $this->keys[$message];
  22.             // вызываем функцию по названию
  23.             // (имя вызываемой функции содержится в переменной $func)
  24.             $this->$func();
  25.         }else{
  26.             // если совпадения в массиве $keys не найдено,
  27.             // тогда выводим сообщение используя функцию notDetected,
  28.             // или можно просто сделать echo $message
  29.             $this->notDetected($message);
  30.         }
  31.     }
  32.  
  33.     // здесь надо реализовать метод для %WIKI%
  34.     private function wiki()
  35.     {
  36.         echo 'wiki';
  37.     }
  38.  
  39.     // здесь надо реализовать метод для %NEWS%
  40.     private function news()
  41.     {
  42.         echo 'news';
  43.     }
  44.  
  45.     // здесь надо реализовать метод для %OTHER%
  46.     private function other()
  47.     {
  48.         echo 'other';
  49.     }
  50.  
  51.     // здесь надо реализовать вывод написанного сообщения в чат
  52.     private function notDetected($string)
  53.     {
  54.         echo $string;
  55.     }
  56. }
  57.  
  58. // сообщение которое пришло из чата (можешь менятб на свое)
  59. $mess = '%WIKI%';
  60.  
  61. // создаем экземпляр класса
  62. // класс обрабатывает сообщение $mess и проделывает требуемые действия
  63. new message($mess);
Prizma Отправлено: 07 Января, 2016 - 17:08:39 • Тема: Массиви • Форум: Вопросы новичков

Ответов: 1
Просмотров: 92
Очень просто например вот так:
PHP:
скопировать код в буфер обмена
  1. $mass = array("a","b","c","d","e","f");
  2. for($i = 0; isset($mass[$i]); $i++) {
  3.     if(($i % 2) || !$i) {
  4.         echo $mass[$i];
  5.     }else{
  6.         echo ' '.$mass[$i];
  7.     }
  8. }
Prizma Отправлено: 07 Января, 2016 - 10:04:07 • Тема: Как защитить свои данные • Форум: Вопросы новичков

Ответов: 2
Просмотров: 208
Test11 пишет:
На сайте отправляю пост запрос яксом и соответственно получаю данные.

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

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

В соседней теме человек пытается пропарсить "защищенную" страницу курлом, у него не получается, там же я описал, как это обойти http://forum.php.su/topic.php?forum=71&topic=17901

Абсолютной защиты от этого не существует, можно понаставить препятствий, путем перенаправлений через JS, но и это не поможет если кому то будет надо будет парсить.

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

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

Что касается post запроса, он отправляется пользователем и никто не сможет сказать наверняка черех CURL он был сделан или через браузер, потому что грань между ними слишком размыта ... это как если тебе пришло сообщений от незнакомой девушки "Привет!" и ты пытаешься определить по сообщению правда это девшука или спам-бот))
Prizma Отправлено: 07 Января, 2016 - 09:48:36 • Тема: str_replace • Форум: Вопросы новичков

Ответов: 17
Просмотров: 735
DemoN1810 пишет:
вовсе нет, не буду же я каждый день например изменять в базе курс валют или новости, поэтому надо хоть как-нибудь отделить функции парсеров от обычных ответов в базе
DemoN1810 пишет:
таки и вправду не буду же я так делать, а основные ответы надо в базе держать, так удобнее

Типа ты после каждого запроса пользователя будешь парсить сайт центробанка или ММВБ чтобы написать актуальный курс? вместо того, чтобы через cron сделать это в автоматическом режиме и держать в базе всегда актуальное значение.
DemoN1810 пишет:
это чат-бот, есть функции, если собеседник написал например "курс валют" из базы бы бралось %COURSE% и заменялась на соответствующую функцию, в данном примере функцию парсера центробанка

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



DemoN1810 пишет:
а я часто вижу в кодах например %USERNAME%, который меняется на имя, можно в вордпрессе посмотреть, там тоже это есть насколько помню

улыбнуло)
Prizma Отправлено: 07 Января, 2016 - 09:38:17 • Тема: Округление числа до двух цифр после запятой • Форум: Вопросы новичков

Ответов: 7
Просмотров: 361
Рекомендую использовать вместо "echo round", "echo sprintf()" и выводить числа в нужном формате например вот так:
PHP:
скопировать код в буфер обмена
  1. $xml = simplexml_load_file('http://www.cbr.ru/scripts/XML_daily.asp?date_req='.date('d/m/Y'));
  2. echo sprintf("Валюта: %01.2f", $xml->Valute[15]->Value);
Prizma Отправлено: 07 Января, 2016 - 09:32:54 • Тема: Не работает стротайм • Форум: Вопросы новичков

Ответов: 8
Просмотров: 348
dcc0 пишет:
Посмотрите, может, уже есть готовые классы.
С ходу:
http://rche[dot]ru/888_php-date-vyvo[dot][dot][dot]ogo-mesyaca[dot]html

да ты что пугаешь человека... ради 12 месяцев искать какой то класс...

Test11 пишет:
а сразу никак?

как, и еще как.
А точнее очень просто, если ты хочешь использовать именно эту функцию, то надо изменить данные так, чтобы они были корректными например так:
PHP:
скопировать код в буфер обмена
  1. $mounths_en = [
  2.     'January',
  3.     'February',
  4.     'March',
  5.     'April',
  6.     'May',
  7.     'June',
  8.     'July',
  9.     'August',
  10.     'September',
  11.     'October',
  12.     'November',
  13.     'December'
  14. ];
  15. $mounths_ru = [
  16.     'Январь',
  17.     'Февраль',
  18.     'Март',
  19.     'Апрель',
  20.     'Май',
  21.     'Июнь',
  22.     'Июль',
  23.     'Август',
  24.     'Сентябрь',
  25.     'Октябрь',
  26.     'Ноябрь',
  27.     'Декабрь'
  28. ];
  29. $subject = '10 Янв 2000';
  30. $result = str_replace(substr($mounths_ru, 0, 3), $mounths_en, $subject);
  31. echo $result;
Prizma Отправлено: 07 Января, 2016 - 09:09:14 • Тема: Получить страницу PHP • Форум: Вопросы новичков

Ответов: 1
Просмотров: 231
event пишет:
Сайт распознает что я пытаю забрать страницу и просит включить куки и javascript и не отдает ее. Вопрос в том как обойти?

Страница использует js для создания куки, если ты добавишь эту куку в cookies.txt то без проблем сможешь получить доступ к этой странице.

Попробовал загрузить страницу с включенным js - успешно.
Попробывал загрузить страницу с выключенным js - успешно (куки были полученны при предыдущей загрузке)
После очистки куки с выключенным js сайт делает переадресацию.

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

Через хром можешь вытащить куки с сайта и добавить их в свой txt, и будет тебе счастье)
(Добавление)
Немного посмотрел как себя ведет страница:
После загрузки js отправляет post запрос сюда http://bgp.he.net/cc
Далее на этой волшебной странице тебе передаются куки если все данные формы были переданы естественно, и перенаправляет тебя обратно на ту страницу которая тебе нужна.

т.е. если всё делать по уму тебе надо через curl сразу отправлять post-запрос сюда http://bgp.he.net/cc... По моему вот этот код отправляет форму, вытащи ее оттуда через js_encode и отправь через curl, если это не она, тогда ищи в js файлах на странице.

CODE (javascript):
скопировать код в буфер обмена
  1. var _0xb539 = ["\x62\x67\x70\x2E\x68\x65\x2E\x6E\x65\x74\x20\x72\x65\x71\x75\x69\x72\x65\x73\x20\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74\x20\x61\x6E\x64\x20\x63\x6F\x6F\x6B\x69\x65\x73\x20\x74\x6F\x20\x66\x75\x6E\x63\x74\x69\x6F\x6E\x2E\x20\x20\x50\x6C\x65\x61\x73\x65\x20\x65\x6E\x61\x62\x6C\x65\x20\x74\x68\x65\x73\x65\x20\x69\x6E\x20\x79\x6F\x75\x72\x20\x62\x72\x6F\x77\x73\x65\x72\x2E", "\x74\x65\x78\x74", "\x23\x65\x72\x72\x6F\x72", "\x68\x61\x73\x68", "\x6C\x6F\x63\x61\x74\x69\x6F\x6E", "\x3F\x68\x3D", "\x72\x65\x73\x70\x6F\x6E\x73\x65", "\x70\x61\x74\x68", "\x63\x6F\x6F\x6B\x69\x65", "\x6A\x73\x74\x65\x73\x74", "\x70\x6F\x73\x74", "\x61\x6A\x61\x78"];
  2. function printerror() {
  3.     $(_0xb539[2])[_0xb539[1]](_0xb539[0])
  4. }
  5. function doredirect(_0x1cc4x3) {
  6.     url = '/cr';
  7.     if (window[_0xb539[4]][_0xb539[3]]) {
  8.         url += _0xb539[5] + encodeURIComponent(window[_0xb539[4]][_0xb539[3]])
  9.     }
  10.     ;
  11.     window[_0xb539[4]] = url;
  12. }
  13. $(function () {
  14.     $[_0xb539[11]]({
  15.         url: '/i', dataType: _0xb539[1], complete: function (_0x1cc4x3) {
  16.             ip = _0x1cc4x3[_0xb539[6]];
  17.             $[_0xb539[11]]({
  18.                 url: '/jc',
  19.                 data: {p: $[_0xb539[9]]($[_0xb539[8]](_0xb539[7])), i: $[_0xb539[9]](ip)},
  20.                 type: _0xb539[10],
  21.                 error: printerror,
  22.                 complete: doredirect
  23.             });
  24.         }, error: printerror
  25.     })
  26. });
Prizma Отправлено: 04 Января, 2016 - 01:09:27 • Тема: Не работает обновление информации в базе данных • Форум: Вопросы новичков

Ответов: 14
Просмотров: 436
Trosel пишет:
Есть страница с кнопкой, внизу текст со значением ( по дефолту 1 (из базы)), при нажатии на кнопку в базе должна проставляться на один больше эта переменная и на странице тоже соответственно цифра должна меняться на 2. (к базе подключается)

PHP:
скопировать код в буфер обмена
  1.  
  2. $connect=mysql_connect('***','***','***');
  3.  
  4.  
  5. $result = mysql_query("SELECT memb FROM tur
  6.                       WHERE ID='1'
  7.  
  8. ");
  9. $row = mysql_fetch_array($result);
  10. $y = $row['memb'];
  11.  
  12.  
  13.   if(isset($_POST["submi00"]))
  14.          {
  15.  
  16.  
  17.  
  18.          $y+1;
  19.          mysql_query(" UPDATE tur SET memb='$y' ");
  20.          mysql_close();
  21.  
  22.  
  23.          }
  24.  
  25.  echo <<<ER
  26.  
  27.        $y/16 <br>
  28.          
  29.         <input type="submit" name="submi00" value="Кнопка" id="KN" class="button8" >
  30.          
  31. ER;
  32.  
  33.  




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


Может потому что кнопка не отправляет данных??
попробуй вот так:

PHP:
скопировать код в буфер обмена
  1. $connect=mysql_connect('***','***','***');
  2.  
  3.  
  4. $result = mysql_query("SELECT memb FROM tur
  5.                      WHERE ID='1'
  6.  
  7. ");
  8. $row = mysql_fetch_array($result);
  9. $y = $row['memb'];
  10.  
  11.  
  12.   if(isset($_POST["submi00"]))
  13.          {
  14.  
  15.  
  16.  
  17.          $y+1;
  18.          mysql_query(" UPDATE tur SET memb='$y' ");
  19.          mysql_close();
  20.  
  21.  
  22.          }
  23.  
  24.  echo <<<ER
  25.  
  26.        $y/16 <br>
  27.         <form method="post">
  28.         <input type="submit" name="submi00" value="Кнопка" id="KN" class="button8" >
  29.          </form>
  30. ER;

Страниц (31): В начало « ... 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