Я пытаюсь использовать значение текстового поля в качестве переменной сеанса при нажатии кнопки, пока я работаю, но он жестко запрограммирован, как мне заставить его использовать значение текстового поля?
Вот код сеанса:
<?php session_start(); $_SESSION['url'] = "url"; ?>
Вот текстовое поле:
echo "<input type='text' id='starurl' value=''/>"; echo "<br><button onclick='save_a9({$row99['starID']})'>Approve</button><button onclick='save_d9({$row99['starID']})'>Disapprove</button><br>";
Вот save_a9:
function save_a9(id) { $.post('response6.php', {starID:id}, function(result) { alert(result); window.location.reload(); }); }
Это то, что вы имеете в виду? значение не нуждается в форме, ему просто нужно перейти на другую страницу, которая будет использоваться там
<?php session_start(); if (isset($_POST['url']) { $_SESSION['url'] = $_GET['url']; } ?> echo "<input type='text' id='starurl' value='" . htmlspecialchars($_SESSION['url'])"
Когда вы назначаете URL-адрес _SESSION, вам нужно будет использовать опубликованную переменную для назначения строки.
$_SESSION['url'] = $_GET['url'];
Чтобы сделать обратное, и чтобы текстовое поле отображало значение сеанса, вы должны:
echo "<input type='text' id='starurl' value='" . htmlspecialchars($_SESSION['url']) . "'/>";
Важно отметить, что если вы хотите, чтобы текстовое поле действительно что- то делало, вам нужно будет иметь поле ввода, обернутое вокруг тега формы.
Тег <form>
указывает браузеру, где форма начинается и заканчивается. Вы можете добавлять все теги HTML между тегами <form>
и </form>
. (спасибо echoecho!)
Если вы работаете RESTfully, GET следует использовать для запросов, в которых вы получаете данные, а POST следует использовать для запросов, в которых вы что-то делаете.
Некоторые примеры:
( Спасибо Skilldrick! )
Файл формы и PHP будет выглядеть так:
<?php session_start(); if (isset($_POST['url']) { $_SESSION['url'] = $_POST['url']; } echo '<form action="POST" method="?">'; echo "<input type='text' id='starurl' value='" . htmlspecialchars($_SESSION['url']) . "'/>"; echo '</form>';
Вы заметите, когда форма будет обновлена, обновления сеанса тоже. Когда вы закроете свой браузер и снова откроете его, вы увидите старое содержимое в поле ввода. (Нажмите «enter», чтобы сохранить поле ввода без кнопки «Отправить»).
Просто используйте этот
//page1.php
<form action="page2.php" method="post"> <input type="text" name="session_value"> <input type="submit" name="set_session" value="Set Session"> </from>
//page2.php
<?php if(isset($_POST['set_session'])){ session_start(); $_SESSION['url'] = $_POST['session_value']; } ?>
Для получения значения из вашего текстового поля сначала измените свой HTML как:
<input type='text' id='starurl' name='url' value=''/>
Текстовому полю нужен атрибут name
который используется $_POST
, $_GET
или $_REQUEST
_REQUEST.
Затем в зависимости от метода отправки формы (GET или POST):
$_SESSION['url'] = $_GET['url'] // Default method for form submission $_SESSION['url'] = $_POST['url'] // For <form method="post"> $_SESSION['url'] = $_REQUEST['url'] // Works for both
РЕДАКТИРОВАТЬ :
Поскольку вы используете кнопку onclick для установки переменной сеанса, вы можете использовать ее (если вы используете jQuery):
Javascript:
$('button').click(function(){ var url = $('#starurl').val(); $('#sessionURLDiv').load('save_session_url.php?url='+url); });
PHP: save_session_url.php:
<?php session_start(); if ( isset ( $_GET['url'] ) ) { $_SESSION['url'] = $_GET['url']; } ?>
HTML:
Просто добавьте этот div в любом месте страницы.
<div id = "sessionURLDiv"></div>
Надеюсь, это поможет.