PHP & Sessions, hvordan?

Tags:    php

Jeg har en menu "bjælke" med et include script til mit loginscript, som jeg har bikset sammen med koder fra udvikleren.dk.
Den henter brugernavnet fra min SQL, og skriver det når man har logget ind. Men når jeg så skifter side "vender" den tilbage til Brugernavnet GUEST, selvom den husker "cookien".

Jeg håber at jeg har forklaret det ordentligt/grundigt. Men hvordan kan jeg få den til at huske "loginnavnet" på alle mine sider?

login.php:

<?
require('meta.php');
?>
<html>
<head></head>
<body>
<form name="Login" method="POST" action=<? echo $php_self; ?>>

<center>
<table border="0" cellpadding="0" width="100%">
<tr>
<td width="12%">
<p class="text"></p></td>
<td width="88%"><p class="text">e-mail</p></td>
</tr>
<tr>
<td width="12%">
<p class="text"></p></td>
<td width="88%"><input type="text" name="name" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text" size="17"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><p class="text">password</p></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><input type="password" name="Passworddb" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text" size="17"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><input type="submit" name="Submit" value="Login" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><?php
session_start();
$conn = mysql_connect("localhost", "xxxxx", "xxxxx");
mysql_select_db("kenneth_db");

if(!isset($_POST['Submit'])) {
echo "<p class='text'>Guest";
}else{
$postbruger = $_POST['name'];
$postpass = $_POST['Passworddb'];
//For læservenligheden overføres post variablerne til normale variabler

$resultat = mysql_query("SELECT player_id FROM webl_players WHERE name = '$postbruger' AND
Passworddb = '$postpass'");//Spørger efter ID

$number = mysql_num_rows($resultat);//Tæller antaller af resultater
if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
$_SESSION['loget_in'] = 1;
$_SESSION['name'] = $postbruger;
$_SESSION['Passworddb'] = $postpass; //Sætter session variablerne
echo "<p class='text'>$postbruger";

}else echo"<p class='text'>Wrong ID";
}
?></td>
</tr>
</table>
</center>
<p align="left">

</p>
</form>
</body>
</html>


Please help!

Kenneth



4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Jeg har en menu "bjælke" med et include script til mit loginscript, som jeg har bikset sammen med koder fra udvikleren.dk.
Den henter brugernavnet fra min SQL, og skriver det når man har logget ind. Men når jeg så skifter side "vender" den tilbage til Brugernavnet GUEST, selvom den husker "cookien".

Jeg håber at jeg har forklaret det ordentligt/grundigt. Men hvordan kan jeg få den til at huske "loginnavnet" på alle mine sider?

login.php:

<?
require('meta.php');
?>
<html>
<head></head>
<body>
<form name="Login" method="POST" action=<? echo $php_self; ?>>

<center>
<table border="0" cellpadding="0" width="100%">
<tr>
<td width="12%">
<p class="text"></p></td>
<td width="88%"><p class="text">e-mail</p></td>
</tr>
<tr>
<td width="12%">
<p class="text"></p></td>
<td width="88%"><input type="text" name="name" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text" size="17"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><p class="text">password</p></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><input type="password" name="Passworddb" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text" size="17"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><input type="submit" name="Submit" value="Login" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><?php
session_start();
$conn = mysql_connect("localhost", "xxxxx", "xxxxx");
mysql_select_db("kenneth_db");

if(isset($_POST['Submit'])) {
$postbruger = $_POST['name'];
$postpass = $_POST['Passworddb'];
//For læservenligheden overføres post variablerne til normale variabler

$resultat = mysql_query("SELECT player_id FROM webl_players WHERE name = '$postbruger' AND
Passworddb = '$postpass'");//Spørger efter ID

$number = mysql_num_rows($resultat);//Tæller antaller af resultater
if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
$_SESSION['loget_in'] = 1;
$_SESSION['name'] = $postbruger;
$_SESSION['Passworddb'] = $postpass; //Sætter session variablerne
} else echo"<p class='text'>Wrong ID";

if(!isset($_SESSION['loget_in']) || $_SESSION['loget_in'] != 1 && !isset($_POST['Submit'])){
echo "<p class="'text'>Guest";
} else if (isset($_SESSION['loget_in']) && $_SESSION['loget_in'] == 1){
echo "<p class='text'>$_SESSION['name']";
}
?></td>
</tr>
</table>
</center>
<p align="left">

</p>
</form>
</body>
</html>


Please help!

Kenneth


Jeg har ændret i din kode fra - if(!isset($_POST['Submit'])) {

Dit problem var at du betragtede alle som en gæst hvis man ikke lige havde foretaget en submit via. din login-form... og det holder ikke... prøv det nu[Redigeret d. 24/01-03 17:11:34 af Erik K. Aarslew-Jensen]



Jeg har en menu "bjælke" med et include script til mit loginscript, som jeg har bikset sammen med koder fra udvikleren.dk.
Den henter brugernavnet fra min SQL, og skriver det når man har logget ind. Men når jeg så skifter side "vender" den tilbage til Brugernavnet GUEST, selvom den husker "cookien".

Jeg håber at jeg har forklaret det ordentligt/grundigt. Men hvordan kan jeg få den til at huske "loginnavnet" på alle mine sider?

login.php:

<?
require('meta.php');
?>
<html>
<head></head>
<body>
<form name="Login" method="POST" action=<? echo $php_self; ?>>

<center>
<table border="0" cellpadding="0" width="100%">
<tr>
<td width="12%">
<p class="text"></p></td>
<td width="88%"><p class="text">e-mail</p></td>
</tr>
<tr>
<td width="12%">
<p class="text"></p></td>
<td width="88%"><input type="text" name="name" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text" size="17"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><p class="text">password</p></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><input type="password" name="Passworddb" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text" size="17"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><input type="submit" name="Submit" value="Login" style="background-color: <?php echo"$color1" ?>; border: 1 solid <?php echo"$color3" ?>" class="text"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"></td>
</tr>
<tr>
<td width="12%"></td>
<td width="88%"><?php
session_start();
$conn = mysql_connect("localhost", "xxxxx", "xxxxx");
mysql_select_db("kenneth_db");

if(isset($_POST['Submit'])) {
$postbruger = $_POST['name'];
$postpass = $_POST['Passworddb'];
//For læservenligheden overføres post variablerne til normale variabler

$resultat = mysql_query("SELECT player_id FROM webl_players WHERE name = '$postbruger' AND
Passworddb = '$postpass'");//Spørger efter ID

$number = mysql_num_rows($resultat);//Tæller antaller af resultater
if($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in
$_SESSION['loget_in'] = 1;
$_SESSION['name'] = $postbruger;
$_SESSION['Passworddb'] = $postpass; //Sætter session variablerne
} else echo"<p class='text'>Wrong ID";

if(!isset($_SESSION['loget_in']) || $_SESSION['loget_in'] != 1 && !isset($_POST['Submit'])){
echo "<p class="'text'>Guest";
} else if (isset($_SESSION['loget_in']) && $_SESSION['loget_in'] == 1){
echo "<p class='text'>$_SESSION['name']";
}
?></td>
</tr>
</table>
</center>
<p align="left">

</p>
</form>
</body>
</html>


Please help!

Kenneth

Jeg har ændret i din kode fra - if(!isset($_POST['Submit'])) {

Dit problem var at du betragtede alle som en gæst hvis man ikke lige havde foretaget en submit via. din login-form... og det holder ikke... prøv det nu[Redigeret d. 24/01-03 17:11:34 af Erik K. Aarslew-Jensen]


Hej Erik,

Tak for dit svar, desværre kommer den nu med en fejl medd.:

Håber du kan klare den. ;-)

Parse error: parse error, expecting `','' or `';'' in login.php on line 64


[Redigeret d. 26/01-03 14:05:22 af Kenneth Olsen]



Sorry... en lille tastefejl

echo "<p class="'text'>Guest";

skal selvfølgelig være

echo "<p class='text'>Guest";




Husk nu at lukke tråden, når det virker :o)



t