Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Вопрос от новичка  [new]
Antibiotik
Member [скрыт]

Откуда:
Сообщений: 23
Всем привет.
Решил изучить PHP. Установил Open Server все настроил, связка PHP+MySQL+phpMyAdmin работает. Взял книжку, сел читать, и на одном из примеров вылетает ошибка.
Пишу слово в слово, вот код:

<?php
   echo "Приветствую Вас\n";
   echo "Ввести свое имя:\n";
   $name = trim(fgetc(STDIN));
   
   echo "Спасибо, " . $name . ", рад с Вами познакомиться \n\n";
?>


И вот что получается:

Приветствую Вас Ввести свое имя:
Warning: fgetc() expects parameter 1 to be resource, string given in D:\OpenServer\OSPanel\domains\localhost\MyFirst\index.php on line 4
Спасибо, , рад с Вами познакомиться


Заранее спасибо! Просто интересно разобраться, почему в книге так написано, а на деле не работает.
21 дек 18, 12:55    [21770407]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от новичка  [new]
Antibiotik
Member [скрыт]

Откуда:
Сообщений: 23
Я понимаю что он ругается на 4-ю строку, но конкретно на что, не могу понять
21 дек 18, 12:58    [21770410]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от новичка  [new]
vkle
Member

Откуда: Самара
Сообщений: 14373
Как запускали скрипт? Если не ошибаюсь, константа STDIN работает только в CLI.
21 дек 18, 14:58    [21770576]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от новичка  [new]
Antibiotik
Member [скрыт]

Откуда:
Сообщений: 23
просто в браузере открыл
21 дек 18, 15:07    [21770594]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от новичка  [new]
vkle
Member

Откуда: Самара
Сообщений: 14373
Ууууу.... Тогда Вам ещё и принципы работы веба изучать, и принципы взаимодействия вебсервера со скриптами. В браузере Вы могли открыть/увидеть только результат работы скрипта. Стало быть, сам скрипт был "фик знает как" вызван вебсервером.
Возможно, это могло бы сработать, если вебсервер будет вызывать скрипт как CGI-программу, но данные на stdin надо ещё передать, а это не из разряда "просто открыл", хотя и не слишком сложно. :)

Возможно, в книжке где-то написано, что данный скрипт следует запускать из консоли, но Вы не обратили на это внимания.
21 дек 18, 15:22    [21770615]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от новичка  [new]
Antibiotik
Member [скрыт]

Откуда:
Сообщений: 23
Если честно, то об этом ничего в книге не написано, перечитал несколько раз. Сам думал по началу что где-то что-то упустил. Но нет.
Кстати, немного не в тему посоветуйте хорошую книгу по PHP. Заранее спасибо.
21 дек 18, 15:43    [21770649]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от новичка  [new]
vkle
Member

Откуда: Самара
Сообщений: 14373
Antibiotik
перечитал несколько раз. Сам думал по началу что где-то что-то упустил. Но нет.
Тогда просто запустите скрипт в консоли.

Однако, логика скрипта явно хромает. Автор просит ввести имя. А потом читает из stdin ОДИН символ (хммм... или байт?). Не знаю, как у автора, но вот у меня лично имя явно длиннее и содержит несколько символов. Более правильно в данном контексте использовать функцию fgets(), которая читает строку. Или написать цикл с посимвольным чтением ввода, но это больше костыль в данном случае.


Antibiotik
посоветуйте хорошую книгу по PHP
Официальное руководство, оно есть на русском http://php.net/manual/ru/ и поддерживается в более-менее актуальном состоянии. В редких случаях английская версия содержит более точное или полное описание.
Для понимания основ - сайт http://phpfaq.ru/
21 дек 18, 16:35    [21770698]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от новичка  [new]
Antibiotik
Member [скрыт]

Откуда:
Сообщений: 23
vkle
Автор просит ввести имя. А потом читает из stdin ОДИН символ (хммм... или байт?). Не знаю, как у автора, но вот у меня лично имя явно длиннее и содержит несколько символов. Более правильно в данном контексте использовать функцию fgets(), которая читает строку. Или написать цикл с посимвольным чтением ввода, но это больше костыль в данном случае.

Честное слово не вру, книга: "PHP и MySQL Исчерпывающее руководство" автор Бретт Маклафлин 2013 год, 39-я страница.

vkle, за ссылки большое спасибо1
21 дек 18, 18:45    [21770773]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос от новичка  [new]
vkle
Member

Откуда: Самара
Сообщений: 14373
Antibiotik
Честное слово не вру
Да никто и не сомневался.
Может, автор что-то конкретное хотел показать, что "будет вот так работать".
А может, при наборе текста было продиктовано "эс", а не "эс-как-доллар" :-)
21 дек 18, 22:32    [21770860]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить