У меня есть крошечная форма на странице, где я спрашиваю имя пользователя, форма отправляет данные в name.php и возвращает имя пользователя, например, "Здравствуйте, Стивен". Стивен - это имя, введенное в форму.
Теперь, когда имя было отражено в этой форме, я хотел бы повторить те же данные в другом месте на странице. Вот где я врезался в стену.
Я бы предпочел не отправлять имена, введенные в форму, на сервер или в базу данных, а просто сохранить их для сеанса, а затем потерять их.
Теперь проблема заключается в многократном отображении данных формы на одной странице.
Код, который я сейчас использую для крошечной формы, выглядит следующим образом:
<form role="form" id="inviteform3" class="form-inline" action="name.php" method="POST">
<div class="form-group">
<input type="text" class="form-control input-sm" name="name" placeholder="Your Name"
id="hello" autocomplete="off" style="margin-top:10px">
</div>
<center>
<span id="result"></span>
<button class="btn btn-brand btn-sm next-screen animated bounceInUp"
id="go" style="margin-top:5px; display:none" href="#services" data-animation-delay=".5s">
Let Go!</button></center>
<button class="btn btn-block btn-brand btn-xs invitebtn3" id="casi" type="submit"
style="margin-top:5px"><i class="fa fa-thumbs-o-up"></i> Submit</button>
</form>
Моя форма php (name.php) выглядит следующим образом:
<html>
<body>
Let get started, <?php echo $_POST["name"]; ?>
</body>
</html>
и мой код JS:
<script>
$(document).on("ready", function(){
//Form action
$("#inviteform3").on("submit", function(event){
// Stop submit event
event.preventDefault();
$.ajax({
type:'POST',
url: 'name.php',
data:$('#inviteform3').serialize(),
success: function(response)
{
$('#inviteform3').find('#result').html(response);
}});
});
});
</script>
Нам нужно понять несколько вещей:
Я бы предпочел не отправлять имена, введенные в форму, на сервер или базу данных, а просто хранить их для сеанса, а затем потерять их.
Вы отправляете эти данные на сервер, вы использовали JQuery и AJAX для POST
вашей формы name.php(PHP работает на сервере), от которого вы получите ответ и добавить его на страницу с линией:
$('#inviteform3').find('#result').html(response);
Если вы хотите ХРАНИТЬ эти данные, хранящиеся (например, в сеансе), вы можете использовать PHP, предложенный Антони name.php
в name.php
. Когда браузер закрыт, сеанс уничтожается. До тех пор вы можете использовать переменную сеанса, где захотите.
Теперь, когда имя было отражено в этой форме, я хотел бы снова повторить эти же данные в другом месте на странице. Здесь я столкнулся с стеной.
Вы echo
от имени в name.php
, ваш вызов AJAX затем извлекает всю страницу (включая теги html
и body
) и добавляет ее в #result
. Если вы хотите показать имя mulitple times, просто добавьте его несколько раз с помощью строки выше.
$("#inviteform3").on("submit", function(event) {
var name = $("form input['name']").val();
// Here is the interesting part
sessionStorage.setItem("name", name);
}
// Get that name
var access_name = sessionStorage.getItem("name");
$("#some_id").html(access_name); // Inserts the name where you want it.
sessionStorage вытирается каждый раз, когда вкладка/окно закрывается.
Вы можете использовать PHP вместо Javascript.
session_start();
$_SESSION['name'] = $_POST['name'];
Переменная $_SESSION
очищается, когда браузер закрыт и является глобальным, поэтому доступ к нему возможен в любом месте. session_start
должен быть первым, что вы делаете, хотя в строке 1 первой запущенной страницы.
Более подробную информацию о сессий в PHP можно найти здесь, и около $_SESSION
здесь.
Например:
Вы отправляете на name.php. Итак, в строке 1 имени.php do
<?php session_start(); ?>
Тогда сделайте
<?php
if (isset($_POST['name'])) {
$_SESSION['name'] = $_POST['name'];
}
?>
Затем, где бы вы его ни использовали, просто выполните echo $_SESSION['name'];
Если вы хотите эхо в других файлах. Затем в строке 1 другого файла
<?php session_start(); ?>
Затем:
<?php
if (isset($_SESSION['name'])) {
echo $_SESSION['name'];
}
?>
Оператор if существует только для проверки, но вам это не нужно, если вы уверены, что он установлен.
sessionStorage.getItem("name")
. Эти данные хранятся локально, ваш PHP-скрипт не имеет к ним доступа.