Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 327

Проблема с глобальными переменными{Энди Харрис:-(, он такой}

04.04.2012, 10:49. Показов 1741. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем в книге 2005 года нашёл код вот такой вот(возможно вам знакомый):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<html>
<head>
<title>Petals around the rose</title>
</head>
<body bgcolor="tan">
<center>
<font face="Comic Sans MS">
<h1>Petals around the rose</h1>
<?php
$guess=$_REQUEST["guess"];//инициализацию переменной добавил от себя.
$numPetals=$_REQUEST["numPetals"];//инициализацию переменной добавил от себя.
print "<br>";printGreeting();
print"<hr>";
print "<br>";printDice();
print"<hr>";
print "<br>";printForm();
print"<hr>";
//функция printGreeting
function printGreeting() 
{
global $guess; $numPetals; 
if(empty($guess)){print"<h3>Welcome to Petals Around the Rose</h3>";}
else if($guess==$numPetals){print"<h3>You Got It</h3>";}
else{print<<<HERE
 <h3>from last try:</h3>
 you guessed:$guess<br><br>
 -and the correct answer was:$numPetals petals around the rose<br>
HERE;
}
}
//функция printDice
function printDice()
{global $numPetals; 
print"<h3>New Roll:<h3>";   
$numPetals=0;
$die1=rand(1,6);
$die2=rand(1,6);
$die3=rand(1,6);
$die4=rand(1,6);
$die5=rand(1,6);
 
showDie($die1);
showDie($die2);
showDie($die3);
showDie($die4);
showDie($die5);
 
print"<br>";
calcNumPetals($die1);
calcNumPetals($die2);
calcNumPetals($die3);
calcNumPetals($die4);
calcNumPetals($die5);
}
function showDie($value)
{print<<<HERE
<img src="$value.jpg">
HERE;
}
function calcNumPetals($value)
{global $numPetals; 
switch($value)  
{case 3:$numPetals+=2;break;
case 5:$numPetals+=4;break;}
}
//функция printForm
function printForm()
{global $numPetals; 
print<<<HERE
<h3>How many petals around the rose?</h3>
<form method="post">
<input type="text" name="guess" value="0">
<input type="hidden" name="numPetals" value="numPetals">
<br>
<input type="submit">
</form>
HERE;
}
?>
</center>
</body>
</html>
Это игра "Сколько лепестков у розы".
В его же книге было написано про параметр register_global, так как он у меня "off", я в 10 и 11 строках "запросил" переменные через $_REQUEST(По его же совету). Но работает только переменная $guess. Переменная $numPetals не отображается правильно.
Помогите разобраться в чём дело.
p.s. Понимаю что книга устарела, может посоветуете поновее
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2012, 10:49
Ответы с готовыми решениями:

Poker Dice Энди Харрис
люди помогите пожалуйста с игрой &quot;Покер с костями&quot; из учебник Харриса по сути почти все норм работает только проблема в том что условие с...

ДЗ с учебника по PHP Энди Харрис
Задание: &quot;Создайте игру Морской бой, для двух игроков за одним компьютером. Игра будет отображать сетку. Позвольте пользователю выбирать...

Энди Харрис - PHP/MySQL для начинающих. Актуальна?
Всем доброго времени суток. Хочу подтянуть базовые знания PHP, посмотрел список книг, которые предлагают на форуме, приглянулась книга -...

12
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462
04.04.2012, 11:08
73 строчка
PHP
1
<input type="hidden" name="numPetals" value="numPetals">
попробуй
PHP
1
<input type="hidden" name="numPetals" value="{$numPetals}">
0
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 327
04.04.2012, 11:36  [ТС]
Не помогло.

Добавлено через 12 минут
(В приведённом мною коде ошибка в 21 строке: переменные разделены ";" а нужно "," Но проблему это не решает.)
0
 Аватар для shafl
258 / 147 / 37
Регистрация: 24.01.2011
Сообщений: 427
04.04.2012, 11:58
работает
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<html>
<head>
<title>Petals around the rose</title>
</head>
<body bgcolor="tan">
<center>
<font face="Comic Sans MS">
<h1>Petals around the rose</h1>
<?php
 
$guess=$_POST["guess"];//инициализацию переменной добавил от себя.
$numPetals=$_POST["numPetals"];//инициализацию переменной добавил от себя.
print "<br>";printGreeting();
print"<hr>";
print "<br>";printDice();
print"<hr>";
print "<br>";printForm();
print"<hr>";
//функция printGreeting
function printGreeting() 
{
global $guess, $numPetals; 
if(empty($guess)){print"<h3>Welcome to Petals Around the Rose</h3>";}
else if($guess==$numPetals){print"<h3>You Got It</h3>";}
else{print"
 <h3>from last try:</h3>
 you guessed:$guess<br><br>
 -and the correct answer was:$numPetals petals around the rose<br>
";
}
}
//функция printDice
function printDice()
{global $numPetals; 
print"<h3>New Roll:<h3>";   
$numPetals=0;
$die1=rand(1,6);
$die2=rand(1,6);
$die3=rand(1,6);
$die4=rand(1,6);
$die5=rand(1,6);
 
showDie($die1);
showDie($die2);
showDie($die3);
showDie($die4);
showDie($die5);
 
print"<br>";
calcNumPetals($die1);
calcNumPetals($die2);
calcNumPetals($die3);
calcNumPetals($die4);
calcNumPetals($die5);
}
function showDie($value)
{print<<<HERE
<img src="$value.jpg">
HERE;
}
function calcNumPetals($value)
{global $numPetals; 
switch($value)  
{case 3:$numPetals+=2;break;
case 5:$numPetals+=4;break;}
}
//функция printForm
function printForm()
{global $numPetals; 
print<<<HERE
<h3>How many petals around the rose?</h3>
<form method="post">
<input type="text" name="guess" value="0">
<input type="hidden" name="numPetals" value="$numPetals">
<br>
<input type="submit">
</form>
HERE;
}
?>
</center>
</body>
</html>
1
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 327
04.04.2012, 12:21  [ТС]
Шафл, Спасибо.
Не хочу слепо копировать код, поэтому поясните два момента:
1. Почему Вы пишете $_POST а не $_REQUEST как я(11 и 12 стр.).
2.Чем конструкция
print"
текст
текст
текст
";
лучше чем
print<<<HERE
текст
текст
текст
HERE;
(25-29 стр.)
0
 Аватар для shafl
258 / 147 / 37
Регистрация: 24.01.2011
Сообщений: 427
04.04.2012, 12:32
1. Я так привык, если
HTML5
1
<form method="post">
2. На мой взгляд ничем, но если честно не знаю, работает и так, и так. оба этих случая не принципиальны, ошибка тут:
PHP
1
<input type="hidden" name="numPetals" value="numPetals">
а надо:
PHP
1
<input type="hidden" name="numPetals" value="$numPetals">
1
 Аватар для Flan
52 / 53 / 3
Регистрация: 12.03.2010
Сообщений: 212
04.04.2012, 14:56
Хех, тоже начинал изучение php с этой книги-хороший выбор))
0
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 327
04.04.2012, 15:04  [ТС]
А случайно нету для неё диска с кодами(он пару раз упоминался в тексте)?
А то уж сильно влом с листа перепечатывать.
p.s. А после Харриса какую книгу читали?
0
 Аватар для Flan
52 / 53 / 3
Регистрация: 12.03.2010
Сообщений: 212
04.04.2012, 16:19
Цитата Сообщение от Gabriel.exe Посмотреть сообщение
А случайно нету для неё диска с кодами(он пару раз упоминался в тексте)?
А то уж сильно влом с листа перепечатывать.
Нету, у меня эта книжка в электронном виде.Лучше сам печатай
Цитата Сообщение от Gabriel.exe Посмотреть сообщение
p.s. А после Харриса какую книгу читали?
Да конкретно каких то не читал. Есть различные типа "PHP трюки, головоломки" и т.д.
Ну в основном интернетом пользуюсь
0
43 / 17 / 4
Регистрация: 22.02.2012
Сообщений: 327
04.04.2012, 19:07  [ТС]
Всем спс.
Тему можно закрыть.
0
Мастер кустарных методов
 Аватар для LEQADA
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
04.08.2012, 19:30
Здравствуйте. Примерно такая же проблема у меня. Проблема с глобальными переменными.
Вот код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<hmtl>
<head></title>Игра "Сколько лепестков у розы", типО</title></head>
<body bgcolor="tan">
<center>
<font face=Comic Sans MS>
<h1>Сколько лепестков у розы?</h1>
 
<?php
    $guess=$_POST["guess"];
    $numPetals=$_REQUEST["numPetals"];
 
    printGreeting();
    printDice();
    printForm();
 
function printGreeting() {
    global $guess, $numPetals;
    
    if(empty($guess)) {print "Добро пожаловать в игру \"Сколько лепестков у розы\".";}
    else if($guess==$numPetals) {print "<h3 style='color:green'>ЭТО ПРАВИЛЬНЫЙ ОТВЕТ!</h3>";}
    else {
        print "<h3 style='color:red'>Это неправильный ответ.</h3>";
        print "<h3>Правильный ответ: $numPetals. <br> Попробуйте ещё раз.</h3>";}
    }
 
function printDice() {
    global $numPetals;
 
    print "<h3>Новый рандом</h3>";
    $numPetals=0;
    
    $die1=rand(1,6);
    $die2=rand(1,6);
    $die3=rand(1,6);
    $die4=rand(1,6);
    $die5=rand(1,6);
 
    showDie($die1);
    showDie($die2);
    showDie($die3);
    showDie($die4);
    showDie($die5);
 
    print "<br>";
 
    calcNumPetals($die1);
    calcNumPetals($die2);
    calcNumPetals($die3);
    calcNumPetals($die4);
    calcNumPetals($die5);
    }
 
function showDie($random) {
    print <<<HERE
    <img src="kubik$random.JPG">
HERE;
    }
 
function calcNumPetals($x) {
    global $numPetals;
    switch($x) {
        case 3: 
         $numPetals+=2;
         break;
        case 5:
         $numPetals+=4;
         break;
        }
    }
 
function printForm() {
    global $numPetals;
    
    print <<<HERE
    <h3>Сколько лепестков у розы?</h3>
    <form method="post">
    <input type="text" name="guess" value=0>
    <input type="hidden" name="numPetals" value="$numPetals">
    <br>
    <input type="submit">
    </form>
    <a href="petalHelp.html" target="helpPage">Справка, что ли</a>
HERE;
    }
 
 
 
?>
 
</font>
</center>
</body>
</html>
Ошибка такая, точнее ошибки: Undefined index: guess in F:\wamp\www\Kamran_php\8.roza.php on line 9
Undefined index: numPetals in F:\wamp\www\Kamran_php\8.roza.php on line 10

9 и 10-ый строчки это вот эти:
PHP
1
2
$guess=$_POST["guess"];
    $numPetals=$_REQUEST["numPetals"];
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
04.08.2012, 20:39
Цитата Сообщение от Gabriel.exe Посмотреть сообщение
Почему Вы пишете $_POST а не $_REQUEST как я
вопрос в безопасности. $_REQUEST - это общий массив, который содержит данные $_GET,$_POST,$_COOKIE. т.е. если к примеру при авторизации вы проверяете вот так нажатие клавиши
if(isset($_POST['btn'])) - то не отправляя форму вы не сможете зайти в выполнение кода
если же вы используете ту же форму с методом пост, но проверяете как $_REQUEST вместo $_POST, то написав в строке ?btn можно будет спокойно зайти в выполнение кода

Добавлено через 1 минуту
и как раз эти ошибки и есть из за того, что register_globals = off, и данные еще не отправлены - проверьте сначала отправку данных через post функцией isset(), а затем уже выполняйте дальнейший код

Добавлено через 1 минуту
или можно вот так
PHP
1
$guess = (isset($_POST["guess"])) ? $_POST["guess"] : "";
- тогда если данные отправились, то переменной $guess присвоится значение из формы, а если нет - присвоится пустое значение ("")
0
Мастер кустарных методов
 Аватар для LEQADA
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
04.08.2012, 20:57
Огромное вам спасибо. Заработала))
Я везде писал $_REQUEST, здесь я увидел, что один взял поправил, на $_POST подумал может так и надо. Хотя внутри себя сомнения остались))

Спасибо за пояснение!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.08.2012, 20:57
Помогаю со студенческими работами здесь

Проблема с глобальными переменными
Итак, имеется программа - Математическая Модель движения движения объекта. В ней планируется использование нескольких (около десятка)...

Работа с глобальными переменными
Всем привет. Подскажите, пожалуйста, допустим у меня есть много классов в программе, в каких то глобальных переменных должны храниться...

Осложнения с глобальными переменными
Мне необходимо взять переменную из form1 и поместить ее в form8 Я пытался это сделать но все мои попытки были тщетны По идее...

Ошибка при работе с глобальными переменными
Учусь по книге Г.Шилдта - С++ базовый курс , 3е издание. Прохожу тему глобальных переменных, вот код- #include &lt;iostream&gt; ...

Как работать с глобальными переменными в AVR?
Добрый день. Вот код: #include &lt;avr/io.h&gt; #include &lt;util/delay.h&gt; #include &lt;avr/interrupt.h&gt; void print_time(unsigned char...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru