Intereting Posts

Я пытаюсь использовать значение текстового поля в качестве переменной сеанса

Я пытаюсь использовать значение текстового поля в качестве переменной сеанса при нажатии кнопки, пока я работаю, но он жестко запрограммирован, как мне заставить его использовать значение текстового поля?

Вот код сеанса:

<?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 следует использовать для запросов, в которых вы что-то делаете.

Некоторые примеры:

  • ПОЛУЧИТЕ страницу с конкретным вопросом SO
  • Оставить комментарий
  • Нажмите кнопку «Добавить в корзину» и отправьте запрос 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> 

Надеюсь, это поможет.