2012-10-27 4 views
1

J'apprends PHP et ai besoin d'un peu d'aide si possible.PHP Session de conseil nécessaire s'il vous plaît

Je sais qu'il me manque quelque chose de simple mais je n'arrive pas à la comprendre, j'ai le morceau de PHP suivant pour transférer les utilisateurs d'une page à laquelle ils viennent d'entrer leur nom d'utilisateur et mot de passe, à la page suivante de le site appelé homepage.php. Ce script doit générer un nom de session mais je ne suis pas certain de le mettre.

J'ai alors besoin d'un petit morceau de PHP pour ensuite vérifier que le nom d'utilisateur et le mot de passe sont corrects avant de charger la page pour que l'utilisateur puisse voir, est-ce que cela a du sens?

<?php 
$host="localhost"; // Host name 
$username="root"; // username 
$password=""; // password 
$db_name="gotswapuser"; // Database name 
$tbl_name="users"; // Table name 


mysql_connect("$host", "$username", "$password"); 
mysql_select_db("$db_name"); 


$myusername=mysql_real_escape_string($_POST['myusername']); 
$mypassword=mysql_real_escape_string($_POST['mypassword']); 

$sql="SELECT * FROM $tbl_name WHERE name='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

if($count==1){ 
    header("location:homepage.php"); 
} else { 
    header("location:subscriptionpage.php"); 
} 
?> 

Répondre

2

Vous devez utiliser PDO pour l'accès à la base de données, pas mysql. Mysql est en train d'être déprécié et n'est pas une bonne pratique.

Pour répondre à votre question, cependant:

En utilisant le code que vous avez, vous voulez juste ajouter quelques lignes sur la connexion « avec succès »:

if($count==1) { 
    session_start(); 
    $_SESSION["logged_in"] = 1; 
    header("location:homepage.php"); 
} else { 
    header("location:subscriptionpage.php"); 
} 

Ensuite, sur la page où l'utilisateur doit être connecté, faire quelque chose comme ça:

session_start(); 
if (! isset($_SESSION["logged_in"]) || ! $_SESSION["logged_in"]) { 
     header("location:signin.php"); 
     exit; 
} 
0

D'abord, vous devez commencer votre session. Voir ci-dessous:

session_start(); 

Après avoir démarré votre session, vous pouvez stocker et récupérer des variables en utilisant le superglobal $ _SESSION. Voir ci-dessous:

$_SESSION['me'] = 'John Doe'; 
$_SESSION['you'] = 'Jane Doe'; 
$_SESSION['us'] = 'Doe Family'; 

echo $_SESSION['us']; 

Assurez-vous de toujours utiliser session_start(); avant d'essayer d'accéder à ces variables. En savoir plus sur PHP.net ICI: http://php.net/manual/en/function.session-start.php

Une fois que session_start() a été exécuté, vous pouvez facilement récupérer l'ID de session à l'aide de la fonction session_id(). Si vous n'avez pas utilisé session_start(), il retournera null. Voir ci-dessous:

echo session_id(); // Returns session ID. 

Hope this helps! Bonne chance pour votre projet.

0

votre presque là. il vous suffit de: 1, assurez-vous que votre session a commencé: session_start(); 2, créer une variable de session pour votre nom d'utilisateur: $_SESSION['username'] = $result[0]['username'];

if($count==1){ 
    $_SESSION['username'] = $result[0]['username']; 
    header("location:homepage.php"); 
} else { 
    header("location:subscriptionpage.php"); 
} 

quelques choses à suggérer. après avoir appelé votre instruction mysql, allez chercher la ligne ou l'objet afin de pouvoir entrer votre nom d'utilisateur pour votre session.

2

commandes de MySQL sont dépréciés, vous devriez considérer Mysqli ou AOP, mais autre que vous devriez commencer la session dans la clause if

  if(found){ 
      session_start(); 
      $_SESSION['username'] = $myusername; 
       redirect user 
      } 
      rest of code..... 
Questions connexes