Я знаю, этот вопрос задавался много раз, но я не смог найти решение.
Я написал скрипт php / JS, чтобы получать данные с сервера и показывать их.
Я использую Ajax для проверкиаутентифицирован ли пользователь?Я использую метод ниже, чтобы сделать это;
Мой index.php:
>?php
...
...
$.post("data.php",{ req:'login',
username:$('#username').val(), //user enters given id
pass:$('#password').val(),
job:$('#job').val(),
rand:Math.random() } ,
function(data)
{
if (data == 'yes') // user is authenticated.
document.location='system.php';
}
...
...
// i am using a form to send collected data to data.php
?>
в коде data.php выглядит примерно так:
>?php
session_start();
$link = mysql_connect("localhost", "user", "pass");
if (!$link) {
die("No connection : " . mysql_error());
}
mysql_select_db("database");
if ($_POST["req"] == "login"){
$user_id=($_POST["username"]);
$user_pass=($_POST["pass"]);
$user_job=($_POST["job"]);
// select proper table (related to his/her job) and control did user supplied correct password?
if( password is correct ){
$_SESSION["id"]=$_POST["username"];
// or $_SESSION["id"]=$user_id;
echo "yes";
}
else echo "no"; //Invalid Login
} else if ($_POST["req"] == "userinfo"){
...
...
...
} else
...
...
?>
Система работает нормально, пока я не перенаправляюсь на system.php,В system.php я хочу использовать переменную $ _SESSION, чтобы получить имя зарегистрированного пользователя в JavaScript.
Часть моего system.php;
>?php
session_start();
if ((isset($_SESSION["id"]))||(!empty($_SESSION["id"]))) header("Location:index.php");
$userno = $_SESSION["id"];
if(isset($_GET["logout"]))
{
session_destroy();
$_SESSION["id"] = FALSE;
header("Location:index.php");
}
?>
...
...
...
>script type="text/javascript">
$.post("data.php",{ req:'userinfo',username:'>?php echo ($userno) ?>',rand:Math.random() } ,function(data){
// sure ?php is written corrctly in script ;)
//.... again get data from data.php and put results into page..
});
>/script>
Этот код работает правильно на моем ПК (xampp), нона моем сервере нет шансов ..
echo ($ userno) ничего не выводит.
Я искал много мест и обнаружил, что это потому, что register_globals выключен.Я понял, почему это так.
Но почему я не могу получить значение $ _SESSION ["id"] и присвоить его $ userno в моем system.php
ПРИМЕЧАНИЕ : яиспользование одного и того же файла data.php для многих других запросов, и все эти запросы зависят от имени пользователя, но различные условия изменяют таблицы, используемые для источника данных, поэтому я не могу получить информацию в начале.
Спасибо, прямо сейчас ...
Примечание: из-за того, что я не смог найти правильный способ использования подсветки кода, я поставил>? Php для запуска частей кода php и> скрипт для частей кода JS ..