Intereting Posts
Использование PHP для поиска Юникода персонажа Как я могу поместить мой WAMP онлайн для доступа к кому-либо? Формат RTF в формате pdf String "array" для реального массива Как сохранить данные с помощью сеансовой службы Symfony2 во время функционального теста? Вставьте новую запись, если она не существует, и обновите, если она существует, laravel eloquent Являются ли подготовленные PDO заявления достаточными для предотвращения SQL-инъекций? Верните линией в консоль Linux? Загрязнение параметров HTTP Преимущества использования подготовленных операторов над нормальными заявлениями mysqli? В чем разница между строками с одним кавычком и двойными кавычками в PHP? Laravel 4: как «заказывать», используя Eloquent ORM fopen не будет открывать файлы по сети Открыть файл, записать в файл, сохранить файл в виде zip и потока для пользователя для загрузки Кодовое завершение / помощь для встроенных функций PHP в Eclipse PDT

Отправка переменных с одной страницы PHP на другую

Я создаю веб-приложение для викторины, которое динамически генерируется из базы данных на моем сервере. Я в значительной степени реализовал все функциональные возможности, единственный недостающий кусок делает его способным предоставлять несколько викторин. Прямо сейчас мне нужно вручную записать код $quiz_id = 1, $quiz_title = "geography" в скрипте quiz.php, чтобы он работал правильно. Если я могу сгенерировать значения для этих двух переменных, мой quiz.php будет работать для нескольких тем викторины.

Итак, в этом моя проблема: я хочу, чтобы пользователь мог выбирать из списка тем опроса (на странице quizlist.php), щелкнуть ссылку на викторину, которую они хотят взять, а затем привести их в страницу с вопросами / выборами викторины (на странице quiz.php). Кроме того, я хотел бы отправить некоторые значения из quizlist.php в quiz.php, связанные с конкретной ссылкой, которую пользователь нажал. Я хочу отправить quiz_id и quiz_title на страницу quiz.php, чтобы представить правильный набор вопросов.

Я считаю, что есть способ сделать это, используя $ _GET или $ _POST, а также использовать $ _SESSION. Мои вопросы в каком направлении лучше? И как мне это сделать? Я слышал, что $ _SESSION более безопасно, но я не уверен, что я действительно беспокоюсь о том, что эти данные (quiz_id и quiz_title) являются безопасными.

В настоящее время, вот код для quizlist.php

 <?php // Start the session require_once('startsession.php'); // Insert the page header $page_title = 'Quiz List'; require_once('header.php'); require_once('connectvars.php'); // Make sure the user is logged in before going any further. if (!isset($_SESSION['user_id'])) { echo '<p class="login">Please <a href="login.php">log in</a> to access this page.</p>'; exit(); } // Show the navigation menu require_once('navmenu.php'); // Connect to the database $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); // Determine number of quizes based on title in quiz table $query = "SELECT * FROM quiz"; $data = mysqli_query($dbc, $query); // Loop through quiz titles and display links for each while ($row = mysqli_fetch_array($data)) { echo '<a href="quiz.php">' . $row['title'] . '</a><br />'; } mysqli_close($dbc); // Insert the page footer require_once('footer.php'); ?> 

Спасибо за помощь!

Solutions Collecting From Web of "Отправка переменных с одной страницы PHP на другую"

Используйте $_GET .

Во-первых, вы захотите изменить эту строку

 echo '<a href="quiz.php">' . $row['title'] . '</a><br />'; 

Что-то вроде этого:

 echo '<a href="quiz.php?id='.$row['id'].'">' . $row['title'] . '</a><br />'; 

А затем в quiz.php соответствующую викторину, используя $_GET['id'] качестве основного ключа, чтобы найти его в базе данных.

Вы также должны хранить свой викторины (в дБ).

$_GET подходит здесь, потому что вы просто используете идентификатор, чтобы определить, какую викторину отображать. Здесь нет необходимости в конфиденциальности. Вы будете использовать $_POST когда вы отправляете данные формы, которые изменяют базу данных. $_SESSION полезна для хранения базовой информации для входа и других материалов, которые должны сохраняться на нескольких страницах в течение всего сеанса, например, формы мастера.

Чтобы «отправить» значения с одной страницы PHP на другую, вы можете использовать сеансы или переменные GET, отправленные в URL.

Сессии:

 $_SESSION["quiz_id"] = 1; $_SESSION["quiz_title"] = "geography"; 

URL: mypage.php?quiz_id=1&quiz_title=geography

 $quiz_id = $_GET["quiz_id"]; $quiz_title = $_GET["quiz_title"]; 

Чтобы отправить значения от клиента к серверу, вам нужно будет использовать HTML-форму или AJAX.

Прежде всего, сначала займите одну проблему, сначала включите список вопросов, а затем аутентификацию.

Вы должны использовать GET, потому что:

  • $_SESSION – хранить вещи, специфичные для данного пользователя, его поведение и информацию аутентификации, такую ​​как токен.
  • $_POST предназначен для кода, который модифицирует серверную часть (здесь вы загружаете вещи только из базы данных).
  • $_GET – это получение информации на стороне сервера, которая в точности соответствует вашему делу.

Здесь загрузка вопроса не является чем-то, что должно отличаться от одного пользователя к другому. Он не будет напрямую изменять что-либо на стороне сервера. Вот почему вы должны использовать GET. Использование чего-то другого будет работать, но это не правильный способ сделать это.

Итак, в основном вы меняете:

 echo '<a href="quiz.php">' . $row['title'] . '</a><br />'; 

от

 echo '<a href="quiz.php?q_id='.$row['id'].'">' . $row['title'] . '</a><br />'; 

На странице quizz теперь вы можете узнать идентификатор вопроса (сохраненный по умолчанию в $ _GET ["qid"]) и делать с ним все, что вы хотите. Это, конечно, может быть применено к другим переменным.