Avatar billede doomstone-dk- Nybegynder
16. august 2003 - 18:17 Der er 16 kommentarer og
1 løsning

Login med sessions problem

Ja jeg har et problem met et login script som simpelhen ikke vil virke, den gemmer ikke sessiosne!

Min loginside:
        function load_login($username, $pass, $clanid) {

           
   
$sql = "SELECT * FROM clanmembers WHERE alias='$username' AND passwd='$pass' AND clanid='$clanid'";           
$tjek = mysql_query($sql) or die ("Database error");

if(mysql_num_rows($tjek)) {

while($data = mysql_fetch_array($tjek)){

    $_SESSION['brugerid'] = $data['id'];
    $_SESSION['brugername'] = $data['alias'];
    $_SESSION['clanid'] = $data['clanid']; 
   
}

echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.ind.php?clanid=$_GET[clanid]\">";

}else{

echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.php?clanid=$_GET[clanid]&rong=yes\">";

}


}   



SIDE: admin.ind.php >>>
<?
session_start();
print_r($_SESSION);
?>

DET GIVER:
Array ();


Jeg ved at den finder bruger (Når man indstaster det rigtige code ord)
Men hvad er der galt?
Avatar billede detox Nybegynder
16. august 2003 - 18:24 #1
Husker du session_start() i starten af alle sider?
Avatar billede detox Nybegynder
16. august 2003 - 18:28 #2
Forøvrigt vil jeg skifte det her ud:

if(mysql_num_rows($tjek)) {

while($data = mysql_fetch_array($tjek)){

    $_SESSION['brugerid'] = $data['id'];
    $_SESSION['brugername'] = $data['alias'];
    $_SESSION['clanid'] = $data['clanid']; 
   
}

echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.ind.php?clanid=$_GET[clanid]\">";

}else{

med:

if(mysql_num_rows($tjek) == 1) {

    $_SESSION['brugerid'] = $data['id'];
    $_SESSION['brugername'] = $data['alias'];
    $_SESSION['clanid'] = $data['clanid']; 
   
echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.ind.php?clanid=$_GET[clanid]\">";

}else{

Da, der kun er en række der matcher din query.
Avatar billede doomstone-dk- Nybegynder
16. august 2003 - 19:14 #3
detox> Hjalp ikke!

Ups glemte selve logindsiden.

<?
session_start();




function load_login($username, $pass, $clanid) {

           
   
$sql = "SELECT * FROM clanmembers WHERE alias='$username' AND passwd='$pass' AND clanid='$clanid'";           
$tjek = mysql_query($sql) or die ("Database error");

if(mysql_num_rows($tjek) == 1) {
while($data = mysql_fetch_array($tjek)){
    $_SESSION['brugerid'] = $data['id'];
    $_SESSION['brugername'] = $data['alias'];
    $_SESSION['clanid'] = $data['clanid']; 
} 
echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.ind.php?clanid=$_GET[clanid]\">";

}else{

echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.php?clanid=$_GET[clanid]&rong=yes\">";

}



IF($_GET['mode']==""){
   
IF($_GET['rong']=="yes"){

Echo "<h3><center>Rong password or username</center></h3>";   
   
}   
   
   
    ?>
        <center>
<form method="post" action="admin.php?clanid=<?=$clannr?>&mode=2">
    <table  class="tabel_width">
      <tr>
      <td><span class="tbbody"><?=$_TEXT[$lang][nadmin.php][1]?></span></td><td><input class="input" type="input" name="name"></td>
      </tr>
      <tr>
      <td><span class="tbbody"><?=$_TEXT[$lang][nadmin.php][2]?></span></td><td><input class="input" type="password" name="password"></td>
      </tr>
    </table>

<input type="submit" class="submit" name="save" size="20" value="<?=$_GEN[$lang][logind]?>"></center>
  </form>
 
  <a href="admin.php?clanid=<?=$clannr?>&mode=4" class="tbbody"><center><?=$_TEXT[$lang][nadmin.php][3]?></center></a>
<?   
    }
IF($_GET['mode']=="2"){ // Loader Loginden
    load_login($_POST[name], $_POST[password], $_GET[clanid]);
    }
?>
</body>

</html>
Avatar billede detox Nybegynder
16. august 2003 - 19:23 #4
Jamen, det er sikkert fordi du tildeler sessionvariablerne værdier inden i en funktion. Variabler i funktioner er som standard lokale for den enkelte funktion.
Avatar billede detox Nybegynder
16. august 2003 - 19:26 #5
Måske kan du prøve at indsætte:
return $_SESSION;
nederst i funktionen. Og så kalde den med:
$_SESSION = load_login($_POST[name], $_POST[password], $_GET[clanid]);
Avatar billede doomstone-dk- Nybegynder
16. august 2003 - 19:27 #6
Jeg ved det ikke er det! tager for lang tid at forklare why men jeg ved det ikke er derfor!
Avatar billede detox Nybegynder
16. august 2003 - 19:27 #7
Hmm, næ du bruger jo redirect i funktionen...
Avatar billede doomstone-dk- Nybegynder
16. august 2003 - 19:32 #8
Virkede ikke!
Avatar billede detox Nybegynder
16. august 2003 - 19:40 #9
Kunne du så ikke prøve:

if(mysql_num_rows($tjek) == 1) {
while($data = mysql_fetch_array($tjek)){
    print_r ($data);
} 

og se, hvad det gi'r.
Avatar billede detox Nybegynder
16. august 2003 - 19:43 #10
Eller:

if(mysql_num_rows($tjek) == 1) {
while($data = mysql_fetch_array($tjek)){
    print_r ($data);
}
die();}
Avatar billede doomstone-dk- Nybegynder
16. august 2003 - 20:07 #11
Den echoer al dataen!
Avatar billede detox Nybegynder
16. august 2003 - 21:12 #12
Ja, så ved jeg ærligt talt ikke lige...
Avatar billede detox Nybegynder
18. august 2003 - 00:59 #13
Måske du ku' prøve:

if(mysql_num_rows($tjek) == 1) {
while($data = mysql_fetch_array($tjek)){
    $_SESSION['brugerid'] = $data['id'];
    $_SESSION['brugername'] = $data['alias'];
    $_SESSION['clanid'] = $data['clanid']; 
} 
echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.ind.php?clanid=$_GET[clanid]\">";

}else{
echo "Fejl!";
}
Avatar billede sukos Juniormester
18. august 2003 - 16:10 #14
Eller uden en while:

if(mysql_num_rows($tjek) == 1) {
$data = mysql_fetch_array($tjek);
    $_SESSION['brugerid'] = $data['id'];
    $_SESSION['brugername'] = $data['alias'];
    $_SESSION['clanid'] = $data['clanid']; 

echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.ind.php?clanid=$_GET[clanid]\">";

}else{
echo "Fejl!";
}
Avatar billede detox Nybegynder
18. august 2003 - 18:07 #15
sukos-> Ja, jeg ved ikke hvordan den 'while' sneg sig ind igen. Den fjernede jeg ellers for 2 dage siden ;-)
Avatar billede doomstone-dk- Nybegynder
18. august 2003 - 18:26 #16
Hvis jeg bruger:
$URL="admin.ind.php?clanid=$_GET[clanid]";
Echo "<center><h3><a href=\"".$URL."\">Login complete... Click to complete the login</a></h3></center>"; 

Istedt for:
echo "<meta http-equiv=\"Refresh\" content=\"0; URL=admin.ind.php?clanid=$_GET[clanid]\">";

Virker det! jeg ved ikek hvor for.
Jeg fadt ud af det at når jeg sadte en die(); istedet for meta'en så virkede sessionen! WHY?


Dette er mit andet logind script og det virker perfekt!
        function adminload_login($username, $pass) {
           
           
        //Tjækker for bands
    include "bandlist.php";
    $ban_count = count($bandlist)-1;
    $i="0";
       
    while($i <= $ban_count){       
    IF($_SERVER['REMOTE_ADDR'] == $bandlist[$i][ip]){       
    echo "You are band reason(".$bandlist[$i][ip].") Pleas contact ifo@doomstone.dk if you find this unfair";
    die();
    }
    $i++;
    }   

$sql = "SELECT * FROM clans WHERE name='$_POST[navn]' AND password='$_POST[password]'";


$tjek = mysql_query($sql) or die ("Database erro");

if(mysql_num_rows($tjek) != 0) {

while($data = mysql_fetch_array($tjek)){
    $_SESSION[userid] = $data[id];
    $_SESSION[username] = $data[name];
    $_SESSION[clanid] = $data[id];
    $_SESSION[login] = "1";
    $_SESSION[lang] = $data[lang];
    $clanid = $data[id];
   
   
$array[]="delsite";
$array[]="lastlog";
$array[]="iplog";
$arrayver[]="0";
$arrayver[]=date("H:i j/n/Y", time());
$arrayver[]=$_SERVER['REMOTE_ADDR'];
db_update("clans", $data[id], $array, $arrayver);

}               

echo "<meta http-equiv=\"Refresh\" content=\"0; URL=index.php?clanid=$clanid&admin=yes\">";

}else{

echo "<meta http-equiv=\"Refresh\" content=\"0; URL=index.php&rong=yes\">";

}


}

Og det er jo det samme som det andet oprindeligt var.

Og detox, sukos nu har jeg snart sakt en del gang at den få indformationen ned i og at men bliver sendt rigtigt vidre!
Avatar billede doomstone-dk- Nybegynder
17. april 2004 - 10:03 #17
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester