Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему у меня не записывается php сесия на телефоне ?

Egor Профи (719), на голосовании 3 года назад
Написал капчу для проверки на бота, но столкнулся с проблемой, когда вывел сайт на beget с ПК у меня прекрасно все работает а с телефона сессия не хочет записываться (куки включены).

ссылка: http://egork14567.beget.tech

Скрипт:







<?php

session_start();
$_SESSION['count'] = time();
$image;

?>



<?php

$flag = 5;
global $input;

if (isset($_POST["flag"])) {
$input = $_POST["input"];
$flag = $_POST["flag"];
}
echo $input;
echo $_SESSION['captcha_string'];
if ($flag == 1) {

if ($input == $_SESSION['captcha_string']) {
?>


Ваш ответ верен!

<form action=" <?php echo $_SERVER['PHP_SELF']; ?>" method="POST">




<?php

} else {
?>


Ваш ответ неверен!
пожалуйста, попробуйте еще раз


<?php
create_image();
display();
}
} else {
create_image();
display();
}

function display()
{
?>


ВВЕДИТЕ ТЕКСТ, КОТОРЫЙ ВЫ ВИДИТЕ НА ИЗОБРАЖЕНИИ
Это просто для того, чтобы проверить, являетесь ли вы роботом


<img src="image<?php echo $_SESSION['count'] ?>.png">

<form action=" <?php echo $_SERVER['PHP_SELF']; ?>" method="POST"
/ >





<form action=" <?php echo $_SERVER['PHP_SELF']; ?>" method="POST">




<?php
}

function create_image()
{
global $image;
$image = imagecreatetruecolor(250, 125) or die("Cannot Initialize new GD image stream");

$background_color = imagecolorallocate($image, 40, 40, 40);
$text_color = imagecolorallocate($image, 255, 255, 255);
$line_color = imagecolorallocate($image, 94, 94, 94);
$pixel_color = imagecolorallocate($image, 94, 94, 94);

imagefilledrectangle($image, 0, 0, 250, 125, $background_color);

for ($i = 0; $i < 7; $i++) {
imageline($image, 0, rand() % 125, 250, rand() % 125, $line_color);
}

for ($i = 0; $i < 1000; $i++) {
imagesetpixel($image, rand() % 250, rand() % 125, $pixel_color);
}

$letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$len = strlen($letters);
$letter = $letters[rand(0, $len - 1)];
$x_position = rand(31, 35);
$text_color = imagecolorallocate($image, 255, 178, 0);
$font = realpath("mumbly.ttf");
for ($i = 0; $i < 6; $i++) {
$letter = $letters[rand(0, $len - 1)];
imagettftext($image, rand(35, 44), 0, $x_position, rand(44, 57), $text_color,$font , $letter);
$x_position += rand(28,38);
$word .= $letter;
}

$_SESSION['captcha_string'] = $word;

$images = glob("*.png");
foreach ($images as $image_to_delete) {
@unlink($image_to_delete);
}
imagepng($image, "image" . $_SESSION['count'] . ".png");

}

?>
Дополнен 3 года назад
*Ребят, во всем разобрался, ошибка в том что я обьявлял session_start() после html тега, а нужно было в самом начале.
Голосование за лучший ответ
Babaduk Просветленный (21048) 3 года назад
с ПК у меня прекрасно все работает а с телефона сессия не хочет записываться
смотри в телефоне настройки браузера
BabadukПросветленный (21048) 3 года назад
session_start();
этого достаточно чтоб писалась сессия
Danny Lee Гуру (4943) 3 года назад
Возможно, на бесплатном хостинге есть ограничения, связанные с установкой сессий для некоторых браузером.
Похожие вопросы