Динамически менять код переменной PHP

253
28 апреля 2017, 20:01

Задача такая: необходимо менять значение переменных при перезагрузке фрейма. Переменные:

$rand = rand(10000,99999);
$_SESSION['random'] = $rand;

Описание:

Есть кнопка для перезагрузки iframe при её нажатии должна меняться переменная $_SESSION['random'] путем генерации нового числа в $rand.

А именно

Пишу капчу. Вот основные моменты связанные с капчей в файлах recovery.php и captcha.php

recovery.php

<?php $rand = rand(10000,99999);
      $_SESSION['random'] = $rand;?>
    <div class="captcha">
             <label>CAPTCHA &#40;proove you're a human&#41;</label>
        <figure>
             <iframe src="<?php echo $links['iconPath']?>captcha.php" frameborder="0" id="codeContainer" oncontextmenu="return false;"></iframe>
             <figcaption><button type="button" id="reloadCaptcha">Change image</button></figcaption>
        </figure>
             <span>
                <input type="text" id="captchaField" maxlength="5" placeholder="ENTER HERE" name="captcha"/>
                <button id="captchaCheck" disabled type="button"><i class="fa fa-check" aria-hidden="true" style="font-size: 1.3em"></i></button>
             </span>
            <p id="captchaErr"></p>
        </div>

кнопка #reloadCaptcha обновляет iframe вот таким скриптом:

$("#reloadCaptcha").click(function(){
"use strict";
    $("#codeContainer").attr("src", $("#codeContainer").attr("src"));
});

captcha.php

<?php
session_start();
$random = $_SESSION['random'];
$img = imagecreate(300,100);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s", 10000) . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0 , pre-check=0", false);
header("Pragma: no-cache");
header("Content-type: image/png");
$primaryColor = imagecolorallocate($img, 7, 188, 7);
$secondaryColor = imagecolorallocate($img, 0, 0, 0);
imagefilledrectangle($img, 4, 4, 50, 25, $primaryColor);
$font = "/fonts/open-sans/OpenSans-Semibold.ttf";
imagettftext($img, 28, 20, 100, 80, $secondaryColor, $font, $random);
imagepng($img);
imagedestroy($img);
?>
Answer 1

Допишите в вашу форму с кнопкой атрибут name с каким либо внятным именем, и в условии проверяйте, была ли отправлена форма:

<?php
session_start();
if (empty($_SESSION['random']) || isset($_POST['refresh'])) {
    $rand = rand(10000,99999);
    $_SESSION['random'] = $rand;
}
// Демо-строка
echo $_SESSION['random'];
?>
<form action="" method="post">
    <input type="submit" name="refresh" value="Обновить" />
</form>
Answer 2

Думаю можно через jQuery сделать, использую ajax.

$('.selector').on('click', function() {
    $.ajax({ url: "/rand.php" });
});

rand.php

<?php session_start();
$rand = rand(10000,99999);
$_SESSION['random'] = $rand;
?>
READ ALSO
Webpack исполнить скрипт и подключить

Webpack исполнить скрипт и подключить

Вопрос: Как мне подключить исполненный скрипт при сборке и пересборке в проект?

205
How to play remote audiotrack (with another language) in VideoJS?

How to play remote audiotrack (with another language) in VideoJS?

I have 1 videomp4 and more one audiotracks

197
typeahead.js вставка своего текста

typeahead.js вставка своего текста

Использую данную библиотечку в проекте (живой поиск), нужна возможность вставлять туда текст посредством выбора его где либоНо после вставки...

223