Я создаю веб-сайт, который показывает информацию о посетителях. Пользователи могут посещать страницу и использовать Textarea для выбора имени для своего URL-адреса, и имя будет сохранено в виде таблицы в базе данных mysql.
Я использую переменную $ name в моем первом файле php, который заменяет текст «visitor_tracking». Но сегодня я заметил, что есть еще один php-файл и более sql-коды, и я снова вижу, что этот файл также имеет текст « visitor_tracking », используемый в SQL-коде.
Но я думаю, что мне не хватило времени, потому что я просто не знаю, как заменить текст «visitor_tracking» на мое имя переменной под названием $ name.
<?php //define our "maximum idle period" to be 30 minutes $mins = 30; //set the time limit before a session expires ini_set ("session.gc_maxlifetime", $mins * 60); session_start(); $ip_address = $_SERVER["REMOTE_ADDR"]; $page_name = $_SERVER["SCRIPT_NAME"]; $query_string = $_SERVER["QUERY_STRING"]; $current_page = $page_name."?".$query_string; //connect to the database using your database settings include("db_connect.php"); if(isset($_SESSION["tracking"])){ //update the visitor log in the database, based on the current visitor //id held in $_SESSION["visitor_id"] $visitor_id = isset($_SESSION["visitor_id"])?$_SESSION["visitor_id"]:0; if($_SESSION["current_page"] != $current_page) { $sql = "INSERT INTO visitor_tracking (ip_address, page_name, query_string, visitor_id) VALUES ('$ip_address', '$page_name', '$query_string', '$visitor_id')"; if(!mysql_query($sql)){ echo "Failed to update visitor log"; } $_SESSION["current_page"] = $current_page; } } else { //set a session variable so we know that this visitor is being tracked //insert a new row into the database for this person $sql = "INSERT INTO visitor_tracking (ip_address, page_name, query_string) VALUES ('$ip_address', '$page_name', '$query_string')"; if(!mysql_query($sql)){ echo "Failed to add new visitor into tracking log"; $_SESSION["tracking"] = false; } else { //find the next available visitor_id for the database //to assign to this person $_SESSION["tracking"] = true; $entry_id = mysql_insert_id(); $lowest_sql = mysql_query("SELECT MAX(visitor_id) as next FROM visitor_tracking"); $lowest_row = mysql_fetch_array($lowest_sql); $lowest = $lowest_row["next"]; if(!isset($lowest)) $lowest = 1; else $lowest++; //update the visitor entry with the new visitor id //Note, that we do it in this way to prevent a "race condition" mysql_query("UPDATE visitor_tracking SET visitor_id = '$lowest' WHERE entry_id = '$entry_id'"); //place the current visitor_id into the session so we can use it on //subsequent visits to track this person $_SESSION["visitor_id"] = $lowest; //save the current page to session so we don't track if someone just refreshes the page $_SESSION["current_page"] = $current_page; } }
Вот очень короткая часть скрипта: я очень надеюсь, что смогу получить некоторую помощь, чтобы заменить текст « visitor_tracking » на переменную $ name … Я попытался заменить текст «$ name» и использовал также различные qoutes, но не работал для меня …
И это тот вызов, который я использовал в своем втором файле php, который читает из моего первого файла php:
include 'myfile1.php'; echo $var;
Но не знаю, правильно ли это тоже. Я не могу дождаться, чтобы услышать, что я делаю неправильно.
заранее большое спасибо
PS Большое спасибо Prix за помощь в первом файле php!
сначала вам нужно начать сеанс на обеих страницах. это должно быть первое, что вы делаете на странице, прежде чем писать что-либо в буфер вывода страницы.
На первой странице вам нужно присвоить значение переменной сеанса. если вы не запускаете сеанс с session_start, у вас нет сеанса, а значение в $ _SESSION будет недоступно.
<?php session_start(); // first thing in page ?> <form action="" method="post" > ... <td><input type="text" name="gname" id="text" value=""></td> ... </form> <?PHP if (isset($_POST['submit'])) { $name = $_POST['gname']; //... //Connect to database and create table //... $_SESSION['gname'] = $name; ... // REMOVE THIS Duplicate -> mysql_query($sql,$conn); } ?>
на второй странице вам нужно сначала начать сеанс. Перед чтением переменной $ _SESSION вам нужно проверить, имеет ли она значение (избегайте ошибок или предупреждений). затем прочитайте значение и сделайте все, что вы хотите с ним сделать.
<?php session_start(); // first thing in page ... if(isset($_SESSION['gname'])){ // Read the variable from session $SomeVar = $_SESSION['gname']; // Do whatever you want with this value } ?>
Кстати,
SQL injection
если вам интересно узнать почему. if
заканчивается перед созданием таблицы. Что делать, если форма не была отправлена или она $_POST['gname']
была опустошена?