2009-11-18 2 views
0

Я пытаюсь использовать глобальный файл, который используется только для публикации данных. Глобальное не регистрируется на этой странице. Как получить доступ к глобальным файлам на этой странице.globals php help

EDIT, возможно, я не был слишком чистым, поэтому позвольте мне прояснить это. У меня есть эти файлы

index.php

global $user; 
echo $user->uid; 

post.php

global $user; 
echo $user->uid; 

теперь от index.php я отправляю в Post.php через JQuery. Однако, когда я эхо $ user-> uid из post.php, это не эхо, но когда я повторяю его из index.php, он показывает это. Как я могу получить этот $ user-> uid, доступный из post.php.

ответ

2

Другой способ доступа к переменным глобальной области видимости использовать специальный PHP определенный $ GLOBALS массив.

Пример из php.net

<?php 
$a = 1; 
$b = 2; 

function Sum() { 
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b']; 
} 

Sum(); 
echo $b; 
?> 
+0

Я отредактировал сообщение, надеюсь, что это поможет. – ngreenwood6

0

если вам нужен глобальный внутри функции сделать как этот

function phpFoobarFunction(){ 
    global $my_global; 
} 

ссылки о scoping

для superglobals как $_POST, $_GET (и т.д ...), они доступны в любом месте .


Из вашего обновленного вопроса вы не можете делиться переменной между двумя разными вызовами PHP. вы бы:

  • воссоздать свой $ класс пользователя по realoading из БД (или источника)
  • складе объекта в $ _SESSION
  • передать объект пользователя с помощью JavaScript (но это опасно, потому что пользователь может отредактировать это) и добавить его имеет параметры для вашего вызова ajax. более

справка о том, как PHP играть с сеансом there

1

Я думаю, вы должны смотреть на сессию, а не глобал. По тому, как это звучит, вы регистрируете переменную на одной странице, а затем, когда пользователь переходит на другую страницу, вы хотите, чтобы эта переменная была пригодна для использования.

Сессии позволят вам сделать это. Просто используйте этот код:

<?php 
session_start(); 
$_SESSION['my_var'] = 'foo'; 

А на последующих страницах ...

<?php 
session_start(); 
echo $_SESSION['my_var']; 

, которые будут выводить foo.

http://www.php.net/manual/en/book.session.php

+1

Это то, что вам нужно. Лукман описывает проблему, но это решение. – Chris

1

Вы должны помнить, что, когда пользователь отправляет форму и перенаправить post.php, переменные в index.php давно прошли. Исполнения PHP недолговечны, в отличие от обычных настольных приложений.

Что бы вы ни делали в index.php, чтобы получить $user объект должен быть повторен в post.php. Если вы не хотите, чтобы скопировать код, просто поместите его в каком-то файле init_user.php и оба index.php и post.php включают файл, используя include_once('init_user.php');

0

Я согласен с mattbasta, Глобал были отключены по соображениям безопасности. Вы можете использовать его в любом случае, но правильный способ - использовать сеанс.

Другое дело, вы сказали: «Теперь из index.php я отправляю post.php через jquery». Вы используете какой-либо вызов Ajax? Если нет, я не понимаю, зачем использовать JS, чтобы сделать это ... Если вы отправляете данные через Ajax и только хотите отправить это парам попробовать это:

<input style="display:none" type="hidden" id="uid" name="uid" value="<?= $user->uid ?>" /> 

А затем обрабатывать его из Ajax вызова, как :

$.ajax({ 
    type: "POST", 
    url: "/post.php", 
    data: "uid=" + uid + "&otherVar=" + otherVar, //and so on.. 
    success: function() { 
     //Here you can notify the user that the script ran successfully 
     } 
});//end of ajax 

Надеюсь, это поможет вам.