as variáveis globais do php ajuda
Pergunta
Estou tentando usar o global em um arquivo que é usado apenas para dados post.O global não está sendo registrado na página.Como posso obter o globals acessível na página.
EDITAR talvez eu não era muito clara então deixe-me limpa-lo.Eu tenho esses arquivos
index.php
global $user;
echo $user->uid;
post.php
global $user;
echo $user->uid;
a partir de agora index.php estou postando para post.php através de jquery.No entanto, quando eu echo $user->uid do post.php não é ecoando mas quando eu eco-lo a partir de index.php ele está mostrando.Como posso obter essa $user->uid acessível a partir de post.php.
Solução
Outra maneira de acessar variáveis de escopo global é usar o especial PHP-definidos $GLOBALS matriz.
Exemplo de php.net
<?php
$a = 1;
$b = 2;
function Sum() {
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b;
?>
Outras dicas
Eu acho que você deveria estar procurando sessões e não globais. Pelo que parece, você está registrando uma variável em uma página e, quando o usuário se move para outra página, você deseja que essa variável seja utilizável.
As sessões permitirão você fazer isso. Basta usar este código:
<?php
session_start();
$_SESSION['my_var'] = 'foo';
E nas páginas subsequentes ...
<?php
session_start();
echo $_SESSION['my_var'];
Que será lançado foo
.
Você tem que lembrar que quando o usuário submete o formulário e redirecionar para post.php
, as variáveis em index.php
estão muito longe.PHP execuções são de curta duração, ao contrário do normal aplicativos da área de trabalho.
O que você faz em index.php
para obter o $user
objeto deve ser repetido em post.php
.Se você não deseja replicar o código, basta colocá-lo em algum arquivo init_user.php
e tem tanto index.php
e post.php
incluir o arquivo usando include_once('init_user.php');
Se você precisar de um global dentro de uma função, faça isso
function phpFoobarFunction(){
global $my_global;
}
referência sobre escopo
por Superglobals Curti $_POST
, $_GET
(etc ...) Eles estão disponíveis qualquer lugar.
A partir da sua pergunta atualizada, você não pode compartilhar variável entre duas chamadas diferentes de PHP. você teria :
- Para recriar sua classe de usuário $ realoading do banco de dados (ou sua fonte)
- armazenar o objeto na $ _Session
- Passe o objeto do usuário via JavaScript (mas isso é perigoso porque o usuário pode editar isso) e adicioná -lo com parâmetros à sua chamada AJAX.
Mais referência sobre como o PHP é jogado com a sessão lá
Eu concordo com Mattbasta, os globais foram desativados por razões de segurança. Você pode usá -lo de qualquer maneira, mas o caminho certo é usar a sessão.
Outra coisa é que você disse: "Agora, do index.php, estou postando para postar.php através do jQuery". Você está usando alguma chamada de Ajax? Caso contrário, não entendo por que usar o JS para fazer isso ... se você estiver enviando os dados através do Ajax e só deseja enviar este parâmetro, tente o seguinte:
<input style="display:none" type="hidden" id="uid" name="uid" value="<?= $user->uid ?>" />
E então lide com isso da sua chamada de Ajax como:
$.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
Espero que isso ajude você.