PHP.SU

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

Страниц (15): В начало « ... 7 8 9 10 11 12 13 14 [15]

> Найдено сообщений: 221
lastdays Отправлено: 28 Февраля, 2014 - 04:52:46 • Тема: Как отключить и заново включить функцию? • Форум: JavaScript & VBScript

Ответов: 2
Просмотров: 603
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function MyFunc() {
  4. return false;
  5.  
  6. // какой то код
  7. }
  8.  
  9.  

?

Что подразумевалось под "временно" известно только автору сия поста.
lastdays Отправлено: 23 Августа, 2013 - 01:29:04 • Тема: защита от sql инъекций • Форум: Вопросы новичков

Ответов: 12
Просмотров: 520
mysql_real_escape_string != Защита от sql inject.
lastdays Отправлено: 19 Августа, 2013 - 08:45:05 • Тема: Вопрос по безопасности • Форум: Работа с файловой системой и файлами

Ответов: 8
Просмотров: 1887
Synov_son пишет:
lastdays пишет:
Читая мануалы 03/20/2003, вы не защитите свой проект, а наоборот.
Конечно, при рег глобал он, это навредит.

Читайте актуальную документацию.

В смысле ?


В прямом.

Переменные использовать можно, если аккуратно.
В некоторых случаях это даже удобно.
Но "пихать" их в include не стоит без предварительной "обработки".
Лучше за ранее подготовить доступные.

Возьмем пример с переходом по страницам на сайте и вывод модулей:


PHP:
скопировать код в буфер обмена
  1.  
  2. echo '
  3. <table><tr>
  4. <td> <a href="?navigation=index"> Main </a></td>
  5. <td> <a href="?navigation=news"> News </a></td>
  6. <td> <a href="?navigation=user"> Account </a></td>
  7. </tr></table>
  8. ';
  9.  
  10. ## № 1
  11. // проверяем установлена ли переменная
  12. if (isset($_GET["navigation"])) {
  13. // доступные действия
  14. switch($_GET["navigation"]){
  15. case 'index': include('modules/index.php'); break; // главная страница
  16. case 'news': include('modules/news.php'); break;  //  новости
  17. case 'user': include('modules/user.php'); break;    // данные о юзере
  18. default: include('modules/index.php');                  // если из доступного ничего не выбрано
  19. }
  20. }
  21. ## № 2
  22. if (isset($_GET["navigation"])) {
  23. switch($_GET["navigation"]){
  24. case 'index': $patch = 'index'; break;
  25. case 'news': $patch = 'news'; break;
  26. case 'user': $patch = 'user'; break;
  27. default: $patch = 'index';
  28. }
  29. include('modules/'.$patch.'.php');
  30. }
  31.  
  32.  
lastdays Отправлено: 11 Августа, 2013 - 09:12:48 • Тема: Защита от спам ботов • Форум: Вопросы новичков

Ответов: 7
Просмотров: 383
Попробуйте добавить форму <input type="hidden" name="test"> , при добавлении сообщения проверьте что бы форма была пуста, если нет - exit();

Либо через форму передавать айди сессии, как вариант.
lastdays Отправлено: 10 Августа, 2013 - 02:16:33 • Тема: Вопрос по безопасности • Форум: Работа с файловой системой и файлами

Ответов: 8
Просмотров: 1887
Читая мануалы 03/20/2003, вы не защитите свой проект, а наоборот.
Конечно, при рег глобал он, это навредит.

Читайте актуальную документацию.
lastdays Отправлено: 12 Июня, 2013 - 03:57:52 • Тема: Вывод списка по первой букве • Форум: Вопросы новичков

Ответов: 4
Просмотров: 269
Написал на скорую руку в 5 утра, не тестил, кирпичами не кидать -)

PHP:
скопировать код в буфер обмена
  1.    if ($_GET["accept"]){
  2.    $queryString = substr($_GET["accept"],0,30);
  3.    $queryString = mysql_real_escape_string($queryString);
  4.    $query = "SELECT * FROM $usertable WHERE title LIKE '$queryString%' ORDER BY title ASC LIMIT 0,20";
  5.    $result = mysql_query($query);
  6.     if (mysql_num_rows($result) > 0 and $queryString>''){
  7.    $u_view = "<table width=25% border=3 align=center><tbody bgcolor=green><tr><td width=35%><b>&nbspНазвание фильма:</b></td>";
  8.           while($obj = mysql_fetch_object($result)){
  9.       $u_view .= "<td>&nbsp ".$obj["title"]." </td></tr>";
  10.       $u_view .= "<tr><td><b>&nbspЖанр:</b></td> ";
  11.       $u_view .= "<td>&nbsp ".$obj["ganr"]." </td></tr>";
  12.       $u_view .= "<tr><td><b>&nbsp Время показа:</b> </td>";
  13.       $u_view .= "<td>&nbsp ".$obj["time"]."</td></tr>";
  14.       $u_view .= "<tr> <td><b>&nbsp Номер зала:</b></td>";
  15.       $u_view .= "<td>&nbsp ".$obj["zal"]." </td></tr>";
  16.       $u_view .= "<tr><td><b>&nbsp История:</b></td>";
  17.       $u_view .= "<td>&nbsp ".$obj["history"]."</td></tr>";
  18.       }
  19.      $u_view .= "</table>";
  20.     }else{
  21.    $u_view = "Не найдено";
  22.    }
  23.    echo $u_view;
  24.    mysql_free_result($result);
  25.    }
lastdays Отправлено: 16 Мая, 2013 - 16:44:43 • Тема: PHP и WinCache • Форум: Вопросы новичков

Ответов: 2
Просмотров: 233
Тут смотрите информацию:
http://www[dot]iis[dot]net/downloads/mic[dot][dot][dot]ncache-extension
lastdays Отправлено: 26 Марта, 2013 - 02:56:14 • Тема: Помогите решить проблему с выдачей данных • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 63
Я понял, я же вывожу все подарки циклом
Предположим их 5
Каждый подарок в цикле расчитывается на удачу.

1) Повезло
2) Повезло
3) Повезло
4) Не повезло
5) Повезло

И считаю я только те, что выпали.

Если кол-во выпавших достигнет максимального лимита, просто отрезаем последующие.


И даст пользователю только первые 4 подарка.
А сам список в цикле выводится рандомно.





А с вашей идеей как работать?

PHP:
скопировать код в буфер обмена
  1.  
  2. if (($PRIZE/$ALL)*100 > $CHANCE) {
  3.   $PRIZE++;
  4.   $ALL++;
  5.   // Bingo!
  6.  
  7. }


ведь $PRIZE и есть кол-во подарков

получается, (5/5)*100 > шанс каждого подарка? непонятно.. по этому я и просил показать в примере.
lastdays Отправлено: 25 Марта, 2013 - 10:24:41 • Тема: Помогите решить проблему с выдачей данных • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 63
Проблему решил:

если повезло, посчитал сколько подарков выпало удачно.

остановил цикл на нужном мне кол-ве.

а тут в базу добавилось не больше - нужного.
lastdays Отправлено: 24 Марта, 2013 - 02:26:21 • Тема: Помогите решить проблему с выдачей данных • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 63
DelphinPRO пишет:
я так думаю, нужно знать общее количество выпавших подарков

$rand = mt_rand(0,4);

DelphinPRO пишет:

количество выпадений каждого подарка (PRIZE) и шанс в процентах для каждого подарка (CHANCE).

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


DelphinPRO пишет:

тогда сможем определить процент выпадения подарка (PRIZE/ALL)*100
и если он больше допустимого - отдаем пользаку

Так я и определяю:
if ($p["chance"]>$r)

Если подарок с шансом *** больше чем выпало цифр нам, то держи.

DelphinPRO пишет:

Значение ALL инкрементируем при выпадении любого подарка, а PRIZE при выпадении конкретного подарка.

Как-то так, наверное.


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






Сформулирую иначе:

Всего 10 подарков.
Упасть могут 0 - 4

Предположим, выпало число 2.
Значит считать с таблицы нужно 2 подарка и сразу учесть наш шанс и шанс выпада самого подарка.
Если нам повезло дважды, соотвественно - добавляем человеку 2 подарка.

Вот в этом и проблема.
lastdays Отправлено: 24 Марта, 2013 - 01:17:21 • Тема: Помогите решить проблему с выдачей данных • Форум: Напишите за меня, пожалуйста

Ответов: 5
Просмотров: 63
Здравствуйте , помогите пожалуйста решить проблему.

Код:
PHP:
скопировать код в буфер обмена
  1.  
  2. ## Случайное число
  3. $rand = mt_rand(0,4);
  4. echo "Могло выпасть: ".$rand." шт. подарков <br>";
  5. if ($rand > 0) {
  6. $prizes = mysql_query("SELECT `id`,`group`,`chance` FROM `prizes` WHERE `group`=1 ORDER BY RAND() LIMIT ".$rand." ");
  7. while($p = mysql_fetch_array($prizes)){
  8. ## Шанс удачи
  9. $r = mt_rand(1,1000)/10;
  10. ## Если шанс подарка больше чем нам выпало ( значит повезло)
  11. if ($p["chance"]>$r) {
  12. $items = array($p["id"]);
  13. $itemKey = array_rand($items);
  14. $item = $items[$itemKey];
  15. unset($items[$itemKey]);
  16. echo "Выпал подарок: <b><font color=red>".$item."</font></b> Мой шанс: ".$r.", Шанс что упадет подарок ".$p["chance"]." <br> ";
  17. }else{
  18. echo "<b>Неудачно</b><br>";
  19. }
  20. $rand--;
  21. } // while
  22. } // rand
  23.  



Что выходит.
Сначало выбирает случайное число от 0 до 4.
Если больше чем 0, считываем с таблицы prizes случайное кол-во подарков, в зависимости что нам выпало.
Прекрасно выбирает рандомные подарки и только после, с учетом их % выпадения выдает человеку.

Так вот, у каждого подарка есть свой % шанса, что он выпадет.

Не выходит сделать следующее:

Необходимо чтоб подарки могли выдаватся с учетом их шанса.


К примеру:
id=1; group = 1; chance = 100
id=2; group = 1; chance = 26.6
id=3; group = 1; chance = 24.2
id=4; group = 1; chance = 100
id=5; group = 1; chance = 13.3
id=6; group = 1; chance = 11


проблема: Чтоб подарки с наибольшем значением chance падали чаще.
У меня же сейчас выбирает абсолютно рандомные подарки и выдает.

Помогите пожалуйста решить проблему.

п.с. Если что-то непонятно, напишите - попробую переформулировать.

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB