PHP.SU

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

Страниц (2): [1] 2 »

> Найдено сообщений: 16
Oleh Отправлено: 21 Января, 2012 - 20:32:36 • Тема: get_browser() и browscap.ini • Форум: Вопросы новичков

Ответов: 2
Просмотров: 267
Зверь пишет:
абсолютный путь под виндой указывается вместе с диском D:\programmes\browscap\php_browscap.ini попробуй так

Да, точно. Заработало.
Спасибо.
Oleh Отправлено: 21 Января, 2012 - 04:44:21 • Тема: get_browser() и browscap.ini • Форум: Вопросы новичков

Ответов: 2
Просмотров: 267
Пытаюсь разобраться с функцией get_browser(). Написано, что для её работы необходимо скачать файл browscap.ini.
Файл "php_browscap.ini" скачал по адресу http://browsers.garykeith.com/downloads. Скопировал файл в папку по адресу: D/Programmes/browscap/ php_browscap.ini.
В файле "php.ini" раскомментировал строку и прописал путь к файлу:

[browscap]
browscap = programmes/browscap/php_browscap .ini

Перезапустил Apache, открываю в браузере файл со следующим кодом:

$browser=get_browser();
$browser=(array)$browser;
while(list($key,$val)=each($browser)):
if($val==''):
$val=0;
endif;
print $key.': '.$val.'<br>';
endwhile;

и появляется сообщение "Cannot open 'programmes/browscap/php_browscap.ini' for reading".

У меня две учётные записи: "Admin" и "User". Файл "php.ini" редактировал и перезапускал Apache в учётной записи "Admin".
Но у записи "User" полный доступ к папке "programmes" на диске "D".

В чём может быть ошибка ? Куда копировать файл "php_browscap.ini" и как прописывать к этому файлу путь в файле php.ini ?
Oleh Отправлено: 04 Декабря, 2011 - 19:25:39 • Тема: Несколько операторов && подряд • Форум: Вопросы новичков

Ответов: 20
Просмотров: 782
Bio man пишет:
отладьте. var_dump($log, $psw, $email);

возможно $email имеет какое то значение


Сделал var_dump().
На стр. '1.php' все поля оставляю пустыми, нажимаю 'Submit'.
Стр. '2.php' выводит:

string(0) "" string(0) "" string(0) ""
Fields "Login" and "Password" must be filled to register!
Back to the page with the registration form

Т.е. первое условие не работает. Работает второе.
(Добавление)
Champion пишет:
Oleh пишет:
if($log=='' && $psw=='' && $email='')
Если вы это копировали, то ошибка прям тут. Тут происходит присваивание, а результат такого присваивания - false.
Oleh пишет:
А то если я сначала буду
А если на форме хотя бы 5 обязательных полей?


Точно ! Ошибка элементарная ! Опять невнимательность ! Исправил на '==' и всё заработало.
На счёт обязательности полей, то ты правильно написал. Я, кстати, такой свой громоздкий и ненужный код исправил на почти такой, как ты написал, только с проверкой других условий ниже на той же странице. А вот с проверкой на пустоту - написал много чего ненужного. Просто мне не нужно было использовать функцию exit(), а писать print() и флаг устанавливать в '1'. А уже потом проверит на '1' флаг и вывести гиперссылку на страницу с регистрацией.
Спасибо.
В следующий раз буду 10 проверять код прежде чем публиковать вопрос : )
Oleh Отправлено: 04 Декабря, 2011 - 19:00:52 • Тема: Несколько операторов && подряд • Форум: Вопросы новичков

Ответов: 20
Просмотров: 782
Champion пишет:
Перечитал еще раз вопрос
Oleh пишет:
только если все три переменные имеют пустое значение, а не одна или две из них.
Ну тогда всё правильно у вас написано. В чем проявляется "ошибка" ? И что до условия происходит с А, Б и Ц?


В общем ситуация такая. Эти переменные на самом деле $log, $psw и $email. Находятся они на странице, например, "2.php". Методом POST им передаются значения из формы на странице "1.php" (регистрация), в которой есть три поля: 'Login' ($log), 'Password' ($psw) и "Email" ($email).
Я хочу проверить заполнены ли поля. Если они не заполнены, то выводится сообщение об этом и ниже - гиперссылка для возврата на страницу с формой регистрации.

Первым делом хочу проверить на пустоту все три поля, т.е. $log, $psw и $email, чтобы в случае если все три пустые, то выводилось соответствующее сообщение, что все три поля необходимо заполнить. А то если я сначала буду проверять $log, а при этом не заполнены ещё $psw и $email, то будет выводится сообщение, что незаполнено поле 'Login', хотя незаполненными ещё будут поля 'Password' и 'Email'. С переменными до условия ничего особенного не происходит.

$log=strtolower(trim($_POST['log']));
$psw=strtolower(trim($_POST['psw']));
$email=strtolower(trim($_POST['email']));

Так вот первое условие у меня такое:

if($log=='' && $psw=='' && $email='')
exit('Fields "Login", "Password" and "Email" must be filled to register!<br>
<a href="1.php">Back to the page with the registration form</a><br>');

а второе такое:

if($log=='' && $psw=='')
exit('Fields "Login" and "Password" must be filled to register!<br>
<a href="1.php">Back to the page with the registration form</a><br>');

третье:

if($psw=='' && $email='')
exit('Fields "Password" and "Email" must be filled to register!<br>
<a href="1.php">Back to the page with the registration form</a><br>');

дальше 3-е, 4-е и т.д., но это уже не важно.
Проблема с первым условием. Оно не срабатывает, а выполняется второе, в котором только один оператор '&&'. Поэтому у меня и возникли вопросы с этим опреатором.
Я понимаю, что мой код можно оптимизировать, но для меня с моим уровнем знаний и опытом - это нормально. Для меня сейчас нужно понять почему не работает первое условие.
Oleh Отправлено: 04 Декабря, 2011 - 17:26:20 • Тема: Несколько операторов && подряд • Форум: Вопросы новичков

Ответов: 20
Просмотров: 782
Как проверить три и более переменных на пустое значение ?
Но условие должно выполняться только если все три переменные имеют пустое значение, а не одна или две из них.
В учебнике такая ситуация не описана, на странице http://php.su/learnphp/operators/?logical тоже.

Проверять две переменные получается.

if($a=='' && $b=='')
exit("Fields $a and $b are empty!");

А вот проверка трёх не получается.

if($a=='' && $b=='' && $c=='')
exit("Fields $a, $b and $c are empty!");

В чём ошибка ?
Oleh Отправлено: 18 Августа, 2011 - 14:42:51 • Тема: Операторы инкремента и декремента • Форум: Вопросы новичков

Ответов: 11
Просмотров: 417
LIME пишет:
Oleh пишет:
сначала возвращением значения $a, а затем увеличения $a на единицу ?
что непонятного?
(Добавление)
бросай это дело
программировать это не твое
(Добавление)
сначала присваивается а потом увеличивается при постинкременте
и после увеличения уже не присваивается
русским по белому написано!!!
(Добавление)
попробую как ребенку объяснить )))
есть 2 коробочки
1 пустая в другой карандаши
смотрим сколько карандашей в второй коробочке и кладем в первую столько же
потом в вторую кладем еще 1 карандаш

Слушай, я здесь эте тему создал не для того чтобы с тобой перегавкиваться или реагировать на твои бессмысленные комменты. Мне реально непонятно зачем ты "мусоришь" в темах, создаваемых новичками. Может у тебя психолгическая проблема и ты пытаешься её решить своими советами типа "бросай программирование, т.к. я считаю, что это не твоё".
Вообще, если ты заметил, то я в созданной теме не спрашивал твого мнения, чем мне заниматься в жизни. Я с этим и сам разберусь.
Я задал конкретные вопросы в расчёте на то, что мне кто-нибудь напишет вразумительные ответы.
Я сам юрист, около полугода ходил к репетитору на программирование, т.к. учебники не мог самостоятельно осилить. Было много незнакомой терминологии, ну и вообще материал незнакомый. Два месяца проходил с репетитором HTML, следующие два месяца - JavaScript, следующие два месяца - PHP. Нужно ещё учитывать, что я не знал основ, без знания которых открывать учебники про HTML, JavaScript или PHP не было никаого смысла. Сейчас я сам более-менее могу разбираться в учебниках, но есть темы которые я не могу понять не потому, что я тупой, а потому, что в большинстве учебников материал изложен автором в стиле "для себя". Такое впечатление, что авторы книг не ставили цель изложить материал в своём учебнике таким образом, чтобы он был понятен людям, ранее не имевшим дело с программированием.
Вот и твои комменты по моей теме написаны в таком же стиле. Более того, твои ответы вообще не по теме. Я тебе уже сказал, прочитай полностью мою тему. Там конкретные вопросы, на которые можно дать нормальный ответ, а не писать про какие-то карандаши.
Единственное, чего ты добился, так это моей просьбы админу забанить тебя в теме "Вопросы новичков", т.к. непонятно зачем ты здесь свои посты оставляешь.
Oleh Отправлено: 18 Августа, 2011 - 02:06:40 • Тема: Операторы инкремента и декремента • Форум: Вопросы новичков

Ответов: 11
Просмотров: 417
LIME пишет:
что непонятного?
(Добавление)
бросай это дело
программировать это не твое
(Добавление)
сначала присваивается а потом увеличивается при постинкременте
и после увеличения уже не присваивается
русским по белому написано!!!

Ты объяснять нормально научись !
Сначала прочитай мой вопрос полностью, а уже потом пытайся что-то промычать.
Я в своём вопросе всё чётко изложил, что мне непонятно. А ты отвечаешь какими-то обрывками, ещё больше людей путаешь.
Чего ты вообще на этот форум зашёл и эфир тут засоряешь ? Советовать всем, кто не понимает твои "объяснения", что программирование - это не их дело ? Так мы и без тебя, такого "грамотея" разберёмся, что нам делать.
Не умеешь объяснять - не объясняй ! Тебя лично никто об этом не просил.
Oleh Отправлено: 18 Августа, 2011 - 01:38:09 • Тема: Операторы инкремента и декремента • Форум: Вопросы новичков

Ответов: 11
Просмотров: 417
LIME пишет:
присваивает значение только 1 раз....тоесть присваивает 10 потом увеличивает и все...на этом все действия закончены....при последующих обращениях к $a будет возвращено уже 11

Это всё ты говоришь о переменной $a ?

$a=10; // это присвоение значения 10 переменной
$a++; // это увеличение значения переменной $a на единицу

А почему переменная $b равняется 10, если "$a++" - это уже 11 и эти 11 присваиваются переменной $b ?

$b=$a++;
Oleh Отправлено: 17 Августа, 2011 - 22:58:03 • Тема: Операторы инкремента и декремента • Форум: Вопросы новичков

Ответов: 11
Просмотров: 417
Прохожу в книге тему "операторы инкремента и декремента" и ни хрена не могу понять.

Мне понятно, что инкремент – это увеличение (от слова increase), а декремент – это уменьшение (от слова decrease). Но вот дальше…
Вот тут http://php.su/learnphp/operators/?id пишется, что существуют префиксные и постфиксные инкременты и декременты.

Префиксный инкремент (++$a) увеличивает $a на единицу и возвращает значение $a.
Постфиксный инкремент ($a++) возвращает значение $a, а затем увеличивает $a на единицу.
Префиксный декремент (--$a) уменьшает $a на единицу и возвращает значение $a.
Постфиксный декремент ($a--) возвращает значение $a, а затем уменьшает $a на единицу.

Первое, что не понятно, - в чём разница между префиксным и постфиксным:
- сначала увеличением $a на единицу, а затем возвращением значение $a;
и
- сначала возвращением значения $a, а затем увеличения $a на единицу ?

Это выглядит просто как перемена мест слагаемых. Результат то не меняется.
Увеличение на единицу – это понятно. Непонятно куда возвращается значение $a ? Чем, оператором ?

И дальше приводится пример:

$a=10;
$b=$a++;
echo "a=$a, b=$b" // Выводит a=11, b=10

Почему a=11, а b=10 ? Ведь $а изначально равна 10 ($a=10;).
Затем используется постфиксный инкремент ($a++), который возвращает значение $a (опять таки, непонятно кому и зачем ?), а затем увеличивает $a на единицу. Т.е. получается, что постфиксный инкремент в данном случае возвращает переменной "а" ($a) её же значение – "10", а затем увеличивает это значение на единицу. Далее значение "11" оператором присваивания присваивается переменной "b" ($b). Получается, что значение переменной "b" будет равно "11". Но в приведённом выше примере всё наоборот.
Я не понимаю логику этих операторов. Кто-нибудь может доступно объяснить ?

Далее.
В книге, в которой я смотрю эту тему http://depositfiles[dot]od[dot]ua/php/03.php#d приводится следующий пример:

$i=15; // Присвоить $i целое число 15
$a=$i--; // СНАЧАЛА присвоить $a значение $i, а ЗАТЕМ уменьшить $a
$b=++$i; //СНАЧАЛА увеличить $i, а ЗАТЕМ присвоить увеличенное значение $i переменной $b

Вопрос следующий.
Учитывая, что и инкремент с декрементом, и оператор присваивания имеют правостороннюю ассоциативность, то почему в строке ($a=$i--;) сначала выполняется оператор присваивания, а потом постфиксный декремент ?
Ведь правосторонняя ассоциативность означает, что последовательность выполнения операторов будет происходить справа налево, т.е. получается, что сначала должен выполниться постфиксный декремент, а потом оператор присваивания.

Кроме того. Прописал я этот код:
$i=15;
print $i."<br>";
$a=$i--;
print $a."<p>";

По идее на экран должно вывести число 15, а под ним число 14, поскольку переменной $a присвоилось значение переменной $i (т.е. число 15), а затем это значение уменьшилось на единицу. Но у меня выводятся два числа 15 (одно под другим). Почему значение $a не уменьшается на единицу ?
Oleh Отправлено: 09 Августа, 2011 - 01:54:52 • Тема: Integer не работает с вычитанием, умножением и делением. • Форум: Хранение данных, их вывод и обработка

Ответов: 3
Просмотров: 2932
Прохожу в книге тему "математические операторы". Делаю всё подряд, что написано.
Наткнулся на ситуацию, когда преобразование в целое число не сработало, если оператор преобразования (int) поставить перед операцией вычитания, умножения и деления, а если поставить перед операцией сложения, то работает.
В книге эта ситуация не описана. Вот я и думаю, может это я что-то не так пишу ?

Сложение. Всё работает как я и хотел.

<?
$s1=5.3;
$s2=3;
$s3=(int)$s1+$s2;
print $s3."<p>";
?>

Вычитание, умножение и деление. Приходится сначала присваивать переменным №3 результат соответствующей операции ($j3=$j1-$j2;), а уже потом значения этих переменных №3 преобразовывать (int) и присваивать переменным №4, чтобы выводимый результат округлялся.

<?
$j1=5;
$j2=2.7;
$j3=(int)$j1-$j2;
$j4=(int)$j3;
print $j3."<br>";
print $j4."<p>";

$k1=2;
$k2=2.7;
$k3=(int)$k1*$k2;
$k4=(int)$k3;
print $k3."<br>";
print $k4."<p>";

$d1=5;
$d2=2;
$d3=(int)$d1/$d2;
$d4=(int)$d3;
print $d3."<br>";
print $d4."<br>";
$f=$d1%$d2;
print $f."<p>";
?>

Вообще всё началось с того, что я вывел результат деления (5:2=2.5) и остаток (1).
Я так понял, что остаток выводят в случае необходимости получения в результате деления целого числа, а не вещественного.
Oleh Отправлено: 09 Августа, 2011 - 01:11:34 • Тема: Только начинаю изучение PHP • Форум: Прочее

Ответов: 19
Просмотров: 173
Я ходил полгода к репетитору по программированию. Первые два месяца учил HTML, следующие два месяца - JavaScript, следующие два месяца - PHP.
Потом сделал перерыв - месяц. Сейчас учу сам. Остановил выбор на PHP. Не всё понятно, но много. Знаний для самостоятельной работы с учебниками по PHP хватает.
Oleh Отправлено: 07 Августа, 2011 - 14:33:05 • Тема: Стандартные переменные • Форум: Вопросы новичков

Ответов: 9
Просмотров: 514
LIME пишет:
если не уверены в компетенции ответов на данном форуме зачем спрашивать?

Можно быть неуверенным в конкретных ответах, а не во всех ответах на каком-либо форуме.
Oleh Отправлено: 06 Августа, 2011 - 20:14:30 • Тема: Стандартные переменные • Форум: Вопросы новичков

Ответов: 9
Просмотров: 514
vlom пишет:
Это устаревший способ использования глобальных переменных
почитай про супер глобальный массив $_SERVER
http://htmlweb.ru/php/function/$_server.php

Ссылку просмотрел. Но раздел про $_SERVER (подозреваю, что и всё остальное) написан в стиле "для себя".
Методом тыка нашёл ошибку и заработало.

<?
print ("Hi! Your IP-address is: ".($_SERVER['REMOTE_ADDR']))."<br>";
print ("Your browser is: ".($_SERVER['HTTP_USER_AGENT']))."<p>";
?>

Книгу использую вот эту. http://depositfiles[dot]od[dot]ua/php/
Не знаю насколько она актуальна.
Что касается PHP5. Я сам "чайник". Но мне не один раз говорили программеры с большим опытом, что пользоваться последними версиями какого-либо софта не нужно. Пользоваться нужно проверенными и работающими версиями. Поэтому не знаю, насколько оправдано учить именно PHP5, а не PHP4.
Oleh Отправлено: 06 Августа, 2011 - 19:13:15 • Тема: Стандартные переменные • Форум: Вопросы новичков

Ответов: 9
Просмотров: 514
Прописываю (как написано в книге) следующий код:

<?
print "Hi! Your IP-address is: $REMOTE_ADDR";
print "Your browser is: $HTTP_USER_AGENT";
?>

но IE8 мне показывает ошибки:

Notice: Undefined variable: REMOTE_ADDR
Hi! Your IP-address is:
Notice: Undefined variable: HTTP_USER_AGENT
Your browser is:

Браузер не определяет эти стандартные переменные. В книге написано, что для работы с массивами стандартных переменных необходимо включить директиву "track_vars" в файле "php.ini", а в PHP версии 4.0.3 директива "track_vars" включена постоянно.
У меня PHP версии 4.3.4. В файле "php.ini" я не могу найти директиву "track_vars".

"Track_vars" включена постоянно во всех версиях, начиная с 4.0.3 или только в 4.0.3 ?
Если в файле "php.ini" нет директивы "track_vars", то это значит, что в этой версии такая директива включена постоянно ?
Если в версии 4.3.4 директива включена, то почему переменные не определяются ?
Oleh Отправлено: 05 Августа, 2011 - 22:06:38 • Тема: Типы данных. Integer number, real (double, float) number. • Форум: Вопросы новичков

Ответов: 3
Просмотров: 240
Мелкий пишет:
Oleh пишет:
Почему не выводится "12.0" ?

Потому что нули после точки не пишутся, как и сама точка в случае отсутствия дробной части.
Не, если хотите, можете любоваться на реальный вид float'а - через экспоненту, типа такого: 1.528535047E-25

Познакомьтесь с функцией var_dump, она напишет, какого типа переданный аргумент.

Познакомился с функцией. Прописал её с $variable2. Мне выдало: float(12).
Насколько я понял, то даже при использовании var_dump() значение переменной всё равно будет без точки и нуля. Будет отображаться только "12", а не "12.0".

Как смотреть на реальный вид float'a через экспоненту ? Для чего используется ?
Почему после функций var_dump() и print_r() не работают теги "<p>" и "<br>", как они работают после функции print() ? Ведь var_dump() и print_r() тоже выводят на экран тип и значение переменной.

<?
$variable1=12;
print $variable1."<br>";

$variable2=(real)$variable1;
print $variable2."<p>";

var_dump ($variable2)."<p>";

print_r ($variable2)."<p>";

$var1=floatval($variable2)."<br>";
print $var1;
?>

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB