Почему, после того, как будет совпадение, то значение сессии, минусуется только 1 раз?
<?php error_reporting(-1);
header('Content-Type: text/html; char set=utf-8');
ini_set('display_errors', 'On');
session_start();
$p1 = $_SESSION['player1'] = 10; //человек
$comp = $_SESSION['computer'] = 10; //комп
echo '$_SESSION["player1"] = ' . $p1 . '<br>';
if(isset($_GET['num'])){
if($_GET['num'] == rand(1, 3)){
$p1--;
echo 'Совпало ' . $p1;
}
else{
echo 'Не совпало';
}
}
?>
<form action="" method="get">
Введите число от 1 до 3 <input type="number" name="num">
<input type="submit" name="Отправить">
</form
В смысле почему? Скрипт запускается один раз. Ты нажимаешь кнопку Отправить. Он запускается один раз. И у тебя написано, что если значения совпадают, то нужно отнять единицу один раз. Что вы ожидали вообще? Кроме того скрипт запускается каждый раз с самого начала. И всегда в начале будет 10.
И это можно объединить
if(isset($_GET['num']) and $_GET['num'] == rand(1, 3)){
$p1--;
echo 'Совпало ' . $p1;
} else {
echo 'Не совпало';
}
Самое простое - в начале проверить - существует ли сессия? Если нет, то записываем 10. Иначе не записываем, а берём то, что есть, пока не станет меньше нуля. Если меньше нуля, то начинаем всё с самого начала.
if (!isset($_SESSION['player1'])) {
$_SESSION['player1']=10;
$p1=$_SESSION['player1'];
} elseif ($_SESSION['player1']<0) {
echo ('Меньшя нуля');
unset($_SESSION['player1']); //удалем
}
В итоге:
<?php
header('Content-Type: text/html; char set=utf-8');
ini_set('display_errors', 'On');
session_start();
if (!isset($_SESSION['player1'])) {
$_SESSION['player1']=10;
} elseif ($_SESSION['player1']<0) {
echo ('Меньшя нуля');
unset($_SESSION['player1']); //удалем
}
echo '$_SESSION["player1"] = '.$_SESSION['player1'].'<br>';
if(isset($_GET['num']) and $_GET['num'] == rand(1, 3)){
$_SESSION['player1']--;
echo 'Совпало '.$_SESSION['player1'];
} else {
echo 'Не совпало';
}
?>
<form action="" method="get" name='formrand'>
<label>Введите число от 1 до 3 <input type="number" name="num" value='1'></label>
<input type="submit" name="Отправить">
</form>
Потому что каждый раз в сессию перезаписываются значения player1
и computer
в значение 10
, а далее изменяется не значение сессии, а значение переменной. Должно работать вот так:
<?php error_reporting(-1);
header('Content-Type: text/html; char set=utf-8');
ini_set('display_errors', 'On');
session_start();
$_SESSION['player1'] = isset($_SESSION['player1']) ? $_SESSION['player1'] : 10; //человек
$_SESSION['computer'] = isset($_SESSION['computer']) ? $_SESSION['computer']: 10; //комп
echo '$_SESSION["player1"] = ' . $_SESSION['player1'] . '<br>';
if(isset($_GET['num'])){
if($_GET['num'] == rand(1, 3)){
$_SESSION['player1']--;
echo 'Совпало ' . $_SESSION['player1'];
}
else{
echo 'Не совпало';
}
}
?>
<form action="" method="get">
Введите число от 1 до 3 <input type="number" name="num">
<input type="submit" name="Отправить">
</form>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Интересует вопрос: почему при отправке формы на почту приходят данные в неформатируемом виде (в одну строчку) и как это исправить?
ЗдравствуйтеЕсть таблица prod , в ней ячейка id_specz , в которой значение 3,2,1
Есть код обновления адресной ссылки по нажатию на checkbox