Gå til innhold

Får ikke echoet ut session variabler


Anbefalte innlegg

Hei,

 

Har et snodig problem. Har et login/logout script som funker. Session registreres og ser om jeg er logget inn og jeg kan logge ut.

 

Men det som IKKE funker er når jeg skal echoe ut brukernavnet f.eks. Jeg skjønner ikke hvorfor, sikkert en ekstrem nybegynner feil jeg ikke klarer å se her.

 

index.php

<?
// Use session variable on this page. 
session_start();

////// Logout Section. Delete all session variable.
session_destroy();

$message="";

////// Login Section.
$Login=$_POST['Login'];
if($Login){ // If clicked on Login button.
$username=$_POST['username'];
$md5_password=md5($_POST['password']); // Encrypt password with md5() function. 

// Connect database. 
$host="x"; // Host name.
$db_user="x"; // MySQL username.
$db_password="x"; // MySQL password.
$database="x"; // Database name.
mysql_connect($host,$db_user,$db_password);
mysql_select_db($database);

// Check matching of username and password.
$result=mysql_query("select * from users where username='$username' and password='$md5_password'");
if(mysql_num_rows($result)!='0'){ // If match.
session_register("username"); // Create session username.
header("location:main.php"); // Re-direct to main.php
exit;
}else{ // If not match.
$message="--- Incorrect Username or Password ---";
}

} // End Login authorize check.
?>

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

<body>
<? echo $message; ?>
<form id="loginform" name="loginform" method="post" action="<? echo $PHP_SELF; ?>">
User : <input name="username" type="text" id="username" />
Password : <input name="password" type="password" id="password" />
<input name="Login" type="submit" id="Login" value="Login" />
</form>
</body>
</html> 

 

main.php

<?php
session_start(); // Use session variable on this page. 
if(!session_is_registered("username")){ // if session variable "username" does not exist.
header("location:index.php"); // Re-direct to index.php
}
?>

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

<body>
<p>Hello <?php echo $_SESSION['username']; ?>! You are now Logged in.</p>
<p><a href="index.php">Logout</a></p>
</body>
</html>

Endret av Avean
Lenke til kommentar
Videoannonse
Annonse

Fant ut hva problemet var på mitt script. Hadde ikke satt opp noe session variabel mot $_POST username i det hele tatt. Så det fikset jeg.

 

Nå har jeg laget en if statement men sliter med oppsettet her.

Rett og slett hvordan jeg skal formatere det helt riktig.

 

<?php if(isset($SESSION[username])) {
echo "Welcome $SESSION[username]";
}else {
echo "<form method="post" action="<?php echo $PHP_SELF ?>" ?>
Username: <input name='username' type='text' size='10' maxlength='20' id='username' /> 
Password: <input name='password' type='password' size='10' maxlength='20' id='password' />
<input name='Login' type='submit' value='Login' id='Login' />

</form>
"; } ?>

 

Dette funker ikke, her får jeg syntax error så jeg er nødt til å sette ' istedenfor " på selve html formen. Problemet da er at action $PHP_SELF på formen vil ikke fungere.

Tips anyone ? :p

Lenke til kommentar

<?php
   if(isset($_SESSION['username'])){
       echo 'Welcome ' . $_SESSION['username'];
   }else{
       echo '
       <form method="post" action="' . $PHP_SELF . '">
           Username: <input name="username" type="text" size="10" maxlength="20" id="username" /> 
           Password: <input name="password" type="password" size="10" maxlength="20" id="password" />
           <input name="Login" type="submit" value="Login" id="Login" />
       </form>
       ';
   }
?>

 

Tips: Tenk over hvor du putter " og ', og hvorfor du putter de der. Legg også merke til "$_" istedenfor "$". $PHP_SELF skal nok være $_SERVER['PHP_SELF']. Sjekk Predefined Variables. And happy coding =]

  • Liker 1
Lenke til kommentar

Du bør også fjerne session_register fra scriptet ditt, ettersom det er en utgått funksjon etter PHP 5.3.0, med andre ord kan scriptet ditt slutte å virke hvis du plutselig overfører scriptet til en annen webserver med en nyere PHP-versjon.

 

Du bør heller sette session-variabler på denne måten:

 

$_SESSION['username'] = "Oluf";

Lenke til kommentar
  • 4 uker senere...

Du bør også fjerne session_register fra scriptet ditt, ettersom det er en utgått funksjon etter PHP 5.3.0, med andre ord kan scriptet ditt slutte å virke hvis du plutselig overfører scriptet til en annen webserver med en nyere PHP-versjon.

 

Du bør heller sette session-variabler på denne måten:

 

$_SESSION['username'] = "Oluf";

 

Samme med

if(!session_is_registered("username")){

 

Bør være noe slikt som

if(!isset($_SESSION['username'])) {

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...