Προς το περιεχόμενο

Πρόβλημα με php sessions


plexAe

Προτεινόμενες αναρτήσεις

Δημοσ.

Γειά σας παιδες. εχω το εξής πρόβλημα

 

θελω να κάνω ενα application στο οποίο να καταχωρώ τα αγαπημένα μου τραγούδια

 

εφταξα λοιπον ενα log in form και αφου κανεις log in, σε παει στο μενού για να καταχωρήσεις ενα τραγούδι

 

τώρα όμως, μολις καταχωρίσω το τραγούδι, μου βγαζει σφάλμα πως δεν ειμαι logged in.

 

χωρις το log in functionality to application δουλεύει μια χαρά

 

>
<?php

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

session_start();

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html;
	charset=iso-8859-1" />
	<title>My Favorite Songs</title>
	<!-- csss -->
<link rel="stylesheet" type="text/css" href="style/style.css" media= "all"/>
<!-- //csss -->
	
	<?php 
	include("databases.php"); 
	include("classes.php"); 
	?>
</head>
<body>
<div id="main">
<h1>MY FAVORITE SONGS</h1>
<div id="logout">
<?php
//logout

user_session($username);

?>
</div>	
<div id="songbase">

<?php
$username = $_POST['username'];
$password = $_POST['password'];
if($username && $password)
{
$query = mysql_query("SELECT * FROM users WHERE username = '$username' " );

$numrows = mysql_num_rows($query);

	if ($numrows!=0)
		{
		while ($row = mysql_fetch_assoc($query))
			{
			$dbusername = $row['username'];
			$dbpassword = $row['password'];
			}
		
		
		
		if ($username==$dbusername&&$password==$dbpassword)
			{
				echo "<h3> Welcome " ;
				echo $username ;
				echo " : please feel free to add your favorite songs! </h3> " ;
				$_SESSION['username']=$username;
				?>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
Featured: Yes
<input type="checkbox" name="featured" value="1" />
No <input type="checkbox" name="featured" value="0" /></ br>
Song <input type="text" name="song" value="" /></ br>
Band <input type="text" name="band" value="" /></ br>
Album <input type="text" name="album" value="" /></ br>
<input type="submit" name="submit" value="submit" /> </form>
<br>
<br>
<br>
		<?php

	$a = $_POST['song'];
	$b = $_POST['band'];
	$c = $_POST['album'];
	$d = $_POST['featured'];
	

if(isset($a)||isset($||isset($c)){
	
save($a,$b,$c,$d);
echo "Added !";

};

display_songs();
mysql_close($conn);


				}
				else 
			{
				echo "mmm...sorry";
			}
					
		}
	else 
		die("that username does not exitst! <br> give it another<a href='index.php'>go</a>");
}

else
die("please enter valid information,");
?>
</div>

</div>	
 </body>
</html>

 

Εδώ το sessions function

 

>

function user_session($username){

if ($username)
{

echo "wana <a href='logout.php'>logout</a>?" ;

}
else
{
die("You are not logged in!");
}

}

 

εχω απελπιστει :(

Δημοσ.

Το πρώτο κομμάτι κώδικα είναι η κύρια σου σελίδα; Εγώ καταλαβαίνω πως ναι. Σε αυτό το αρχείο κάνεις κάθε φορά authenticate το χρήστη. Οι γραμμές

>
$username = $_POST['username'];
$password = $_POST['password'];

έχουν νόημα μόνο όταν ο χρήστης κάνει login. Την επόμενη φορά που θα τρέξει η σελίδα και π.χ. κάνει μία αναζήτηση οι τιμές $_POST['username']; και $_POST['password']; είναι άδειες. Άρα όταν κάνει ο χρήστης μία αναζήτηση, τρέχει ο κώδικας για το Login, αλλά οι τιμές username & password είναι χωρίς τιμή και για αυτό παίρνεις το μήνυμα ότι δεν είσαι logged in.

 

Προτείνω να βάλεις το check για το login σε άλλο αρχείο. Αν δεν θέλεις, τότε μπορείς να αλλάξεις λίγο τον κώδικα σου.

 

>
if($_SESSION['username'] == "") /Δεν έχω στο session κάποιο username, άρα θα κάνω authenticate το χρηστη
{
	$username = $_POST['username'];
	$password = $_POST['password'];
	...
}
else
{
	//εμφανίζω κανονικά τη σελίδα μου
}

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...