2010-07-28 2 views
1

Je viens d'entrer dans MySQL et PHP - et j'essaie simplement de créer un système de connexion simple pour un projet que nous testons. J'ai connecté et créé la logique de connexion, mais maintenant je ne peux pas pour la vie de moi obtenir les variables de session à reporter sur les nouvelles pages. Quelqu'un pourrait-il me montrer la bonne façon de faire cela?Variables de session PHP - At Wit's End

Voici mon script de connexion - qui est activé en soumettant un formulaire:

<?php 
session_start(); 

$link = mysql_connect('xxxxxxx.ipowermysql.com', 'xxxxxx', 'xxxxxx'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db(austinhabich_IC_20090511_174535) or die(msql_error()); 

$email=$_POST['email']; 
$password=$_POST['password']; 

$sql="SELECT * FROM player WHERE email='$email' and password='$password'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

if($count==1){ 

$_SESSION['status'] = "1";  

header("location: main.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

Et voici la page, il redirige vers:

<?php session_start(); ?> 
...doctype stuff... 

<html 
xmlns="http://www.w3.org/1999/xhtml"> 
<head> <meta http-equiv="Content-Type" 
content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 

<? 
echo $_SESSION['status']; 

?> </body> </html> 

Dans ce cas, je suis J'essaie même de faire enregistrer la variable de session, donc je teste en essayant d'imprimer les données de la variable. J'ai essayé d'utiliser isset et je l'ai redirigé vers la page de connexion. La redirection a fonctionné, mais cela s'est produit chaque fois que la variable de session ne s'enregistre pas.

PHP est Verion 5.2.12

+0

On dirait que vous n'êtes pas appeler 'session_start' dans la première page. Vous ne pourrez pas définir de variables de session à moins que vous ne l'appeliez. – porges

Répondre

0

Sur un rapide coup d'œil, trois choses:

  • Vous semblez manquer session_start() dans le premier script.

  • Vous obtiendrez "Nom d'utilisateur incorrect" si le compte existe deux fois ou plus dans la table, ce qui peut parfois arriver pendant le test.

  • Vous devez après avoir effectué une redirection header().

  • austinhabich_IC_20090511_174535 doit être placée entre guillemets.

  • session_start(); doit être appelé dans la tête du script, avant que tout le code HTML est sorti. Vos instructions SQL sont vulnérables à l'injection SQL. doivent de toute urgence être désinfectées à l'aide des données entrantes avant mysql_real_escape_string utilisées dans une requête

+0

Droit-- j'ai accidentellement oublié de mettre le session_start(); en haut du script de connexion dans mon exemple de code. Même avec là, je ne peux toujours pas obtenir la variable de session pour enregistrer ... – user405056

+0

Je mets aussi comme la toute première ligne de la page de fin - et bien sûr supprimé de l'endroit où il était, aussi en vain ... – user405056

+0

@user étrange, alors je ne sais pas ce que le problème est. J'ai ajouté un autre point dont vous devriez prendre soin avant d'aller vivre avec n'importe quoi. –

Questions connexes