Используйте PHP сессии с jquery - PullRequest
0 голосов
/ 15 июня 2011

Ну, мой вопрос прост:

Я хочу использовать мои PHP-сессии в jQuery, в операторе if, однако я не знаю, как мне это легко сделать.Я должен каким-то образом импортировать $_SESSION в jquery?

Что я в основном хочу сделать, это открыть диалоговое окно, если идентификатор_пользователя совпадает с $_SESSION идентификатор_пользователя.Также я хочу, чтобы он проверил, является ли кто-то администратором, менеджером магазина или пользователем, с сеансом.Эта информация уже существует в PHP, а User_ID существует только в jQuery.

if($admin == true || gebr_id == $_SESSION['id']){
   Javascript code here?
}

Я думаю, что это будет самый простой способ решить ее, однако, похоже, это не работает для меня.Возможно, я забыл теги для PHP, чтобы понять его JavaScript?

Я нашел простой способ найти решение, спасибо вам всем!

Решение:

$('.do').click(function(){
  <?php
    if ($admin == true) {
        echo "$('#dialog').dialog('open');\n";
        echo "var cid = $(this).attr('id');\n";
        echo "var datum = cid.substr(0, 10);\n";
        echo "var naampos = cid.indexOf('|');\n";
        echo "var gebridpos = cid.indexOf('||');\n";
        echo "var naam = cid.substring(naampos+1,gebridpos);\n";
        echo "var gebrid = cid.substring(gebridpos+2);\n";
        echo "$.ajax({\n";
        echo "type: \"POST\",\n";
        echo "url: \"agenda.php\",\n";
        echo "data: naam,\n";
        echo "success: function(){\n";
        echo "$('#gebruikerinput').html(\"<input type='text' READONLY='' size='35' value='\" + naam +\"'>\");\n";
        echo "$('#gebridinput').html(\"<input type='hidden' name='gebridtextbox' value='\" + gebrid + \"'>\");\n";
        echo "$('#datuminput').html(\"<input type='text' READONLY='' size='12' name='datum' value='\" + datum + \"'>\");\n";
        echo "}\n";
        echo "})\n";
        echo "return false;\n";
    }
  ?>
});

Кажется, до сих пор работает.Единственное, что мне осталось сделать, это сделать так, чтобы jQuery возвращал переменную User_ID, которая должна совпадать с идентификатором сессии.

Ответы [ 7 ]

1 голос
/ 15 июня 2011
if($admin == true || gebr_id == $_SESSION['id']){
$javascript = "javascript code here";
}

, а затем в вашем HTML

<body>
<?php echo $javascript ?>
</body>
0 голосов
/ 28 февраля 2012

Если вы хотите получить доступ к PHP-сессиям из javascript, вы можете написать простую оболочку.

Somethign, как это:

<?php
session_start($_GET['sid']);
echo json_encode($_SESSION);
?>

Имейте в виду, что это возможный недостаток безопасности , поскольку каждый может получить доступ к вашим переменным сеанса PHP извне (с действительным идентификатором сеанса).

Теперь вы можете просто использовать jQuery, чтобы запросить у сервера данные текущего сеанса

0 голосов
/ 15 июня 2011

Обходя очевидные недостатки безопасности с помощью того, что вы, похоже, предлагаете, вы хотите вывести идентификатор сеанса PHP на свою веб-страницу. Конечно, JQuery - это язык на стороне клиента, и обойти любую защиту на стороне клиента такого рода довольно просто.

<script type='text/javascript'>
<?php
//put in your variables from PHP
echo 'var phpId="' . $_SESSION['id'] .'";' ."\n";
echo 'var admin=' .$admin.";\n";
?>
//Back to Javascript (client side) here
if (gebr_id == phpId || admin){
   ...
}
</script>

Вы говорите, что у вас есть только идентификатор пользователя в JQuery. Что вам нужно сделать, так это кодировать его, чтобы вместо него был доступен идентификатор пользователя в PHP ... Отправьте форму с идентификатором пользователя или чем-то в этом роде, затем вы можете сохранить это в сеансе PHP и выполнить аутентификацию на стороне сервера. 1004 *

0 голосов
/ 15 июня 2011
<script type="text/javascript">
    <?php if($admin == true || gebr_id == $_SESSION['id']){ ?>
        alert('<?php print $admin; ?>');
    <?php } ?>
</script>

тоже работает.

0 голосов
/ 15 июня 2011

Php - это язык на стороне сервера. JavaScript работает в браузере (на стороне клиента). Вы можете сделать это:

if($admin == true || gebr_id == $_SESSION['id'])
echo "<script>";
echo "here your jquery function";
echo "</script>";

}

Так что вы просто визуализируете HTML

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

0 голосов
/ 15 июня 2011

К сожалению, вы можете смешивать серверный скрипт (PHP) со клиентским скриптом (Javascript).Тем не менее, вы можете использовать PHP для echo Javascript, например:

if ($admin == true || gebr_id == $_SESSION['id']){
    echo '<script>
               alert("Admin!");
               $("selector").function(); //
          </script>';
}
0 голосов
/ 15 июня 2011

Вы не можете импортировать $ _SESSION, но вы можете сохранить некоторые из них (только те, которые вам нужны) в файле cookie и прочитать его в javascript.

Например: сохранить идентификатор пользователя в файле cookieи вы можете прочитать значение из cookie в javascript.

read cookie:

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
  {
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^\s+|\s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...