web-dev-qa-db-fra.com

Passer des variables entre deux PHP pages sans utiliser de formulaire ni l'URL de la page

Je souhaite transmettre deux variables d'une page PHP à une autre. Je n'utilise pas de formulaire. Les variables sont des messages que la page cible affichera en cas de problème. Comment puis-je passer ces variables à l'autre page PHP tout en les conservant invisible?

par exemple. disons que j'ai ces deux variables:

//Original page
$message1 = "A message";
$message2 = "Another message";

et je veux les passer de page1.php à page2.php. Je ne veux pas les transmettre via l'URL.

//I don't want
'page2.php?message='.$message1.'&message2='.$message2

Existe-t-il un moyen (peut-être via $ _POST?) D’envoyer les variables? Si quelqu'un se demande pourquoi je veux qu'il soit invisible, je ne veux pas simplement d'une grande adresse URL avec des paramètres tels que "& message = Problème lors du téléchargement de votre fichier. Ce n'est pas un fichier .Zip valide" et je n'ai pas beaucoup Il est temps de changer les redirections de ma page pour éviter ce problème.

20
Lefteris008

Les sessions seraient un bon choix pour vous. Jetez un coup d'oeil à ces deux exemples de PHP Manual :

Code de page1.php

<?php
// page1.php

session_start();

echo 'Welcome to page #1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal']   = 'cat';
$_SESSION['time']     = time();

// Works if session cookie was accepted
echo '<br /><a href="page2.php">page 2</a>';

// Or pass along the session id, if needed
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>

Code de page2.php

<?php
// page2.php

session_start();

echo 'Welcome to page #2<br />';

echo $_SESSION['favcolor']; // green
echo $_SESSION['animal'];   // cat
echo date('Y m d H:i:s', $_SESSION['time']);

// You may want to use SID here, like we did in page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>

Pour clarifier les choses - SID est la constante prédéfinie de PHP qui contient le nom de la session et son identifiant. Exemple de valeur SID:

PHPSESSID=d78d0851898450eb6aa1e6b1d2a484f1
39
Daniel Kmak

Voici une brève liste:

  • JQuery avec des trucs JSON. ( http://www.w3schools.com/xml/xml_http.asp )

  • $ _SESSION - probablement le meilleur moyen

  • Cookie personnalisé - ne fonctionnera pas * toujours *.

  • En-têtes HTTP - un proxy peut le bloquer.

  • base de données telle que MySQL, Postgres ou autre chose telle que Redis ou Memcached (similaire à une session faite à la maison, "verrouillée" par une adresse IP)

  • APC - similaire à la base de données, ne fonctionnera pas * toujours *.

  • HTTP_REFERRER

  • Paramètre de hachage URL, par exemple http://domain.com/page.php#param - Vous aurez besoin de JavaScript pour collecter le hachage. - Gmail lourd utilise cela.

7
Nick
<?php
session_start();

$message1 = "A message";
$message2 = "Another message";

$_SESSION['firstMessage'] = $message1;
$_SESSION['secondMessage'] = $message2; 
?>

Stocke les sessions à la page 1 puis à la page 2

<?php
session_start();

echo $_SESSION['firstMessage'];
echo $_SESSION['secondMessage'];
?>
4
user2406160

Avez-vous essayé d'ajouter les deux à $_SESSION?

Ensuite, en haut de votre page2.php, ajoutez simplement:

<?php
session_start();
3
ramonovski

Utilisez Sessions .

Page 1:

session_start();
$_SESSION['message'] = "Some message"

Page 2:

session_start();
var_dump($_SESSION['message']);
2
Putr