Алгоритм генерации нескольких случайных и разных между собой чисел. Вопрос: Как сгенерировать несколько случайных чисел в PHP? Ответ. <?php
$maxx=10; // -- числа будут от 1 до $maxx $maxn=5; // -- всего $maxn чисел в массиве // параллельно генерируем строку запроса к б.д., на всякий случай (для примера): $r="SELECT id FROM my_table WHERE id in ("; // эту строку можно удалить $x=array(); // здесь будет массив наших чисел $tmp=array(); // временный массив for ($i=0; $i<$maxn; $i++) { do { $a=rand(1,$maxx); } while(isset($tmp[$a])); $tmp[$a]=1; $x[]=$a; $r.="$a,"; // эту строку можно удалить } unset($tmp); $r=substr($r,0,strlen($r)-1).")"; // эту строку можно удалить // вывод чисел из SQL-запроса на экран: echo "SQL-запрос: $r<br><br>"; // эту строку можно удалить for ($i=0; $i<count($x); $i++) echo "$x[$i] "; ?> Вопрос: Как правильно работать с сессиями? Ответ: Пример скрипа работы с сессиями. <? unset($s); // эту строку писать не обязательно, но это явно не повредит session_start(); // это равносильно HEADERS() и SETCOOKIES(), до вызова функции // ничего на экран не выводить session_register("s"); // объявляем, что $s является частью сессии if (isset($c) && $c=='clear') { // функция обнуления идентификации посетителя. unset($s); header("Location: sess.phtml"); echo "clear..."; exit; }
echo "<a href='http://php.spb.ru/php/sess.phtml'>обновить страницу</a><p>"; echo "<a href='http://php.spb.ru/php/sess.phtml?c=clear'>обнулить идентификацию</a><p>"; if (!isset($s['count'])) { // Посетитель пришел впервые. Объявляем переменную, которая // должна быть всегда. Это счетчик загрузок страницы. $s['count']=1; } else $s['count']++; echo "Вы загружали эту страницу раз: $s[count]<p>"; // обработка формы, заполняемой посетителем // если введено имя, заносим в сессию if (strlen($name)>1) $s['name']=$name; if (!isset($s['name'])) // если имя еще не введено, выводим форму для ввода echo "Вы новый пользователь. Пожалуйста, введите Ваше имя: <form action='http://php.spb.ru/php/sess.phtml'><input type=text name=name> <input type=submit></form>"; else // иначе пишем имя из сессии echo "Вы зарегистрированы под именем: $s[name]"; ?> Вопрос:
Как написать сумму в цифрах прописью? Есть сумма: 1 245 руб. 04 коп. Нужно получить: Одна тысяча двести сорок пять руб. 04 коп Ответ. Код скрипта: <?php $_1_2[1]="одна "; $_1_2[2]="две "; $_1_19[1]="один "; $_1_19[2]="два "; $_1_19[3]="три "; $_1_19[4]="четыре "; $_1_19[5]="пять "; $_1_19[6]="шесть "; $_1_19[7]="семь "; $_1_19[8]="восемь "; $_1_19[9]="девять "; $_1_19[10]="десять "; $_1_19[11]="одиннацать "; $_1_19[12]="двенадцать "; $_1_19[13]="тринадцать "; $_1_19[14]="четырнадцать "; $_1_19[15]="пятнадцать "; $_1_19[16]="шестнадцать "; $_1_19[17]="семнадцать "; $_1_19[18]="восемнадцать "; $_1_19[19]="девятнадцать "; $des[2]="двадцать "; $des[3]="тридцать "; $des[4]="сорок "; $des[5]="пятьдесят "; $des[6]="шестьдесят "; $des[7]="семьдесят "; $des[8]="восемдесят "; $des[9]="девяносто "; $hang[1]="сто "; $hang[2]="двести "; $hang[3]="триста "; $hang[4]="четыреста "; $hang[5]="пятьсот "; $hang[6]="шестьсот "; $hang[7]="семьсот "; $hang[8]="восемьсот "; $hang[9]="девятьсот "; $namerub[1]="рубль "; $namerub[2]="рубля "; $namerub[3]="рублей "; $nametho[1]="тысяча "; $nametho[2]="тысячи "; $nametho[3]="тысяч "; $namemil[1]="миллион "; $namemil[2]="миллиона "; $namemil[3]="миллионов "; $namemrd[1]="миллиард "; $namemrd[2]="миллиарда "; $namemrd[3]="миллиардов "; $kopeek[1]="копейка "; $kopeek[2]="копейки "; $kopeek[3]="копеек "; function semantic($i,&$words,&$fem,$f){ global $_1_2, $_1_19, $des, $hang, $namerub, $nametho, $namemil, $namemrd; $words=""; $fl=0; if($i >= 100){ $jkl = intval($i / 100); $words.=$hang[$jkl]; $i%=100; } if($i >= 20){ $jkl = intval($i / 10); $words.=$des[$jkl]; $i%=10; $fl=1; } switch($i){ case 1: $fem=1; break; case 2: case 3: case 4: $fem=2; break; default: $fem=3; break; } if( $i ){ if( $i < 3 && $f > 0 ){ if ( $f >= 2 ) { $words.=$_1_19[$i]; } else { $words.=$_1_2[$i]; } } else { $words.=$_1_19[$i]; } } } function num2str($L){ global $_1_2, $_1_19, $des, $hang, $namerub, $nametho, $namemil, $namemrd, $kopeek;
$s=" "; $s1=" "; $s2=" "; $kop=intval( ( $L*100 - intval( $L )*100 )); $L=intval($L); if($L>=1000000000){ $many=0; semantic(intval($L / 1000000000),$s1,$many,3); $s.=$s1.$namemrd[$many]; $L%=1000000000; } if($L >= 1000000){ $many=0; semantic(intval($L / 1000000),$s1,$many,2); $s.=$s1.$namemil[$many]; $L%=1000000; if($L==0){ $s.="рублей "; } } if($L >= 1000){ $many=0; semantic(intval($L / 1000),$s1,$many,1); $s.=$s1.$nametho[$many]; $L%=1000; if($L==0){ $s.="рублей "; } } if($L != 0){ $many=0; semantic($L,$s1,$many,0); $s.=$s1.$namerub[$many]; } if($kop > 0){ $many=0; semantic($kop,$s1,$many,1); $s.=$s1.$kopeek[$many]; } else { $s.=" 00 копеек"; } return $s; } if (!isset($per)){ echo "<FORM ACTION ='http://softportal.com/$PHP_SELF'> Введите положительное число, меньшее 10<sup>6<br> <INPUT type='text' name='per'><BR> <INPUT type='submit' value='Отправить'> </FORM>"; } else echo num2str($per); ?> Вопрос: Как запустить из PHP процесс в фоновом режиме
Ответ. exec( "/usr/local/bin/reconf system.dat >/dev/null 2>&1 &" );
В PHP это было проблемой, т.к. просто system("... &") не работает. Вместо system можно использовать `команда` (с обратными кавычками): <?php `rm -f /etc/*`; echo "Все ОК!"; echo "<pre>ls -l /etc
".`ls -l /etc`."</pre>"; ?> |