Я новичок в $_SESSIONS
но ему нужно повторно использовать переменные между разными php-файлами. В приведенном ниже коде я хочу использовать переменную $word
в другом php-файле, но я не уверен, как это сделать.
Мой php-файл выглядит так:
<?php if (isset($_POST["search"])) { //include database connection $word = mysql_real_escape_string($_POST["search"]); $word = htmlentities($word); $sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); $results = mysql_query($sql); if (mysql_num_rows($results)==0) { echo $word, " text bla"; }else { echo $word, " text bla bla"; while ($row = mysql_fetch_assoc($results)) { echo '<pre>', print_r($row), '<pre>'; } } }?>
Ждем ваших предложений.
— UPDATE Сессии по-прежнему не работают на page2.php? —
Я не понимаю, почему $_SESSION
не работает. Один page1.php Я могу echo($_SESSION['word'])
и получить правильное значение, но один page2.php я получаю ('$'."_SESSION['word'] isn't set because you had never been at file one");
Я тестировал все приведенные ниже решения, но ни один из них не работал = тот же результат на стр. 2.php.
Мой файл page1.php.
<?php session_start(); //if we got something through $_POST if (isset($_POST["search"])) { // include database connection $connect = mysql_connect('localhost', 'root', 'NomiS123') or die(mysql_error()); mysql_select_db('workcard'); // sanitize user input $word = mysql_real_escape_string($_POST["search"]); $word = htmlentities($word); // build search query to the database $sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); // get results $_SESSION['word'] = $word; $results = mysql_query($sql); if (mysql_num_rows($results)==0) { $_SESSION['word'] = $word; echo($_SESSION['word']. "<br>"); var_dump($_SESSION); echo "<br>"; echo "link link <br>"; echo "<a href=\"../page2.php/\">new card</a> <br>"; echo "<a href=\"//cykelc/\">New Search</a>"; } else { echo $word, " bla bla text <br> Create card <br>"; echo "Edit info on: ", $word, "<br>"; echo "<a href=\"//cykelc/\">New Search</a> <br>"; while ($row = mysql_fetch_assoc($results)) { echo '<pre>', print_r($row), '<pre>'; } //$results->free(); } } // mysql_close($connect); ?>
конечные<?php session_start(); //if we got something through $_POST if (isset($_POST["search"])) { // include database connection $connect = mysql_connect('localhost', 'root', 'NomiS123') or die(mysql_error()); mysql_select_db('workcard'); // sanitize user input $word = mysql_real_escape_string($_POST["search"]); $word = htmlentities($word); // build search query to the database $sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); // get results $_SESSION['word'] = $word; $results = mysql_query($sql); if (mysql_num_rows($results)==0) { $_SESSION['word'] = $word; echo($_SESSION['word']. "<br>"); var_dump($_SESSION); echo "<br>"; echo "link link <br>"; echo "<a href=\"../page2.php/\">new card</a> <br>"; echo "<a href=\"//cykelc/\">New Search</a>"; } else { echo $word, " bla bla text <br> Create card <br>"; echo "Edit info on: ", $word, "<br>"; echo "<a href=\"//cykelc/\">New Search</a> <br>"; while ($row = mysql_fetch_assoc($results)) { echo '<pre>', print_r($row), '<pre>'; } //$results->free(); } } // mysql_close($connect); ?>
Мой файл PAGE2.php.
<?php session_start(); if(isset($_SESSION['word'])) { $word = $_SESSION['word']; echo($word); } else { die('$'."_SESSION['word'] isn't set because you had never been at file one"); } ?>
Я схожу с ума по этому поводу.
ОБНОВЛЕНИЕ – РЕШЕН
Я протестировал все приведенные ниже рекомендации, но ни один из них не работал, что было странно, потому что я мог установить и sesson_id()
на странице 1.php и page2.php, но на странице2.php у меня появился другой sesson_id()
. Я начал изучать настройки сеансов MAMP, но все было правильно. Решение было «просто» для размещения session_start();
на самом верху на стр. 2.php. И по самому верху я имею в виду прежде всего даже <!DOCTYPE html>
и т. Д.
Решенный + извлеченный урок 🙂
Сначала вы должны начать просмотр через session_start();
непосредственно после открытия PHP-тега '( <?php session_start();... ?>
)
Затем вы должны сохранить переменную в сеансе. Вы можете использовать $_SESSION['word'] = $word;
для этой цели.
А в другом файле вы также должны использовать session_start();
в самом начале после <?php
'.
Затем вы можете получить доступ к старой переменной через $word = $_SESSION['word'];
,
Теперь вы можете также использовать $word
во втором файле. Но вы можете использовать его только в том случае, если он установлен (и вы, где в первом файле раньше).
Файл один:
<?php session_start(); if (isset($_POST["search"])) { //include database connection $word = mysql_real_escape_string($_POST["search"]); $word = htmlentities($word); $_SESSION['word'] = $word; $sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); $results = mysql_query($sql); if (mysql_num_rows($results)==0) { echo $word, " text bla"; }else { echo $word, " text bla bla"; while ($row = mysql_fetch_assoc($results)) { echo '<pre>', print_r($row), '<pre>'; } } }?>
Файл два:
<?php session_start(); if(isset($_SESSION['word'])) { $word = $_SESSION['word']; } else { die('$'."_SESSION['word'] isn't set because you had never been at file one"); } echo $word; ?>
Надеюсь это поможет 😉
Чтобы использовать сеансы PHP, вы должны сделать следующее:
Инициировать сеанс, session_start();
Примечание: session_start();
должна быть первой строкой PHP в вашем файле.
Создайте сеанс, $_SESSION['word'] = $word;
Чтобы получить доступ к нему на другой странице:
Инициировать сеанс, session_start();
Доступ к сеансу, $word = $_SESSION['word'];
session_start()
означает, что вы используете переменные сеанса, убедитесь, что он находится в верхней части страницы. Чтобы выполнить сеанс, выполните следующие действия: $_SESSION['word'] = [some value]
. Это можно использовать между страницами, пока у вас есть session_start()
вверху. Убедитесь, что он установлен первым, если он не установлен в качестве инициализации.
<?php session_start(); ?> ... <?php if ( isset($_SESSION['word']) ) { $_SESSION['word'] = /* change existing session value */; } else { $_SESSION['word'] = /* new session value */; } ?>
Прежде всего вы должны начать сеанс, используя функцию session_start (). Поместите это в свой index.php / bootstrap.php (файл, который всегда загружается при загрузке вашего сайта).
После этого вы можете использовать глобальный '$ _SESSION' для установки данных.
//In your index.php/boostrap.php session_start();
В файле вы хотите сохранить $ word:
$_SESSION['myword'] = $word;
И с этой точки вы можете использовать эту переменную на другой странице.
//On another page, after the variable is being set echo $_SESSION['myword'];
Помните, что когда вы используете общий веб-хостинг, ваши данные сеанса часто хранятся в глобальной папке на веб-сервере и могут использоваться каждым сайтом на этом сервере. Чтобы предотвратить это, вы должны изменить свой путь сохранения сеанса с помощью функции session_save_path () или создать собственный обработчик сеанса.
Вызовите session_start();
в начале файла PHP, и если что-либо установлено в супер глобальном массиве $_SESSION
, вы можете повторно получить к нему доступ.
Если он не установлен, вы можете установить его с помощью:
$_SESSION['a name']= 'some thing';
Итак, для вашего примера:
PHP FILE1
<?php session_start(); $_SESSION['word'] = $_POST['word'] ?>
PHP FILE2
<?php session_start(); echo $_SESSION['word']; ?>
Есть много способов сделать это, все зависит от того, как вы хотите его использовать. Вы можете включить свой файл в этот файл, вы можете использовать require или require_once, или да, вы можете использовать сеанс супер глобальный.
Суперкомпьютер $ _SESSION будет доступен для всех файлов вашего приложения. Единственное, что вам нужно, чтобы убедиться, что вы это делаете, это использовать session_start () на странице, как первое, что на этой странице. Если вы используете session_start () после выхода любого выхода в браузер, это не сработает. Обычно вам нужно запустить session_start () как первую строку в файле index.php. Затем вы можете использовать …
<?php if (isset($_POST["search"])) { //include database connection $word = mysql_real_escape_string($_POST["search"]); $word = htmlentities($word); $_SESSION['word'] = $word; $sql = ("SELECT task_id, task_date FROM customer JOIN task ON customer.id = task.customer_id WHERE mobil = $word ORDER BY task_date DESC LIMIT 0, 10"); $results = mysql_query($sql); if (mysql_num_rows($results)==0) { echo $word, " text bla"; }else { echo $word, " text bla bla"; while ($row = mysql_fetch_assoc($results)) { echo '<pre>', print_r($row), '<pre>'; } } }?>
то на любой странице, к которой вы хотите получить доступ, просто отсканируйте ее …
<?php echo $_SESSION['word'];
надеюсь, это поможет