Avatar billede jost Nybegynder
10. marts 2008 - 16:39 Der er 9 kommentarer og
1 løsning

Session kald

Hej

Jeg sidder med et problem som jeg tror har noget med sessions at gøre.

Jeg har et formfelt hvis action fører til en side hvor de informationer der er tastet ind formfeltet (brugernavn og password) bliver tjekket op mod en database og sender brugeren hen til en ny side som er brugerens egen side.

Problemet er at på brugerens egen side kan jeg ikke få fat oplysningerne fra databasen.

Og det er fordi, tror jeg, at der går noget galt med sessionen.

Er det korrekt?

Mine koder ser sådan ud her:
Loginformen:
<form id='contact' name='contact' action='login.php' target="loadme" method='post'>
                        <table width="200" border="0">
                          <tr>
                            <td><label for='full-name'>login: </label></td>
                            <td><input name="login" type="text" class="border {required:true}" /></td>
                            <td><label for='email'>Password: </label></td>
                            <td><input name="password" type="password" class="border {required:true,password:true}" /></td>
                            <td><input name="submit" type="submit" class="formborder" value="" /></td>
                          </tr>
                        </table>
Siden med database tjekket:
<?php
session_start();

if (isset($_POST['submit'])) {

mysql_connect ('localhost','root',''); //kører på en lokal maskine
mysql_select_db('database');

$brugernavn=$_POST['login'];
$pw=$_POST['password'];

$sql= "SELECT id, login, pw, navn, homedir, FROM brugere WHERE login='$brugernavn' AND pw='$pw'";
     
$svar = mysql_query($sql);

      if (!$svar) {
        echo("<p>Der opstod en fejl i forsøget på at få fat på databasen. <br/>".
                "Og fejlen er: " . mysql_error() . " </p>");
    exit();
   
    }
 
  $brugerdata = mysql_fetch_array($svar);
 
  $navn = $brugerdata['navn'];
  $homedir = $brugerdata['homedir'];
 
  }

  if (isset($brugerdata['id'])) {
        $_SESSION['KYL']= $brugerdata['id'];
      header('location:'.$homedir.'.php');
          }    else {
    echo "Du har skrevet forkert brugernavn og/eller password. Prøv venligst igen. Er der fortsat problemer så kontakt din administrator.";
    }

?>

$homedir er brugerens egen side, som ser sådan ud her:

Hej <?php $navn ?>

Og det er her jeg tror problemet er. $navn kan ikke findes. Den skirver i hvert fald ikke noget.

Mvh

Jost
Avatar billede fant0mas Nybegynder
10. marts 2008 - 16:49 #1
Der er flere ting, men for det første sætter du aldrig en session med brugernavnet.
$_SESSION['navn']= $brugerdata['navn'];

<?php
session_start();
echo $_SESSION['navn'];
?>
Avatar billede fant0mas Nybegynder
10. marts 2008 - 16:51 #2
Og så er det altså MEGET vigtigt du kigger på mysql_real_escape_string() før du ligger det ud.
Avatar billede jost Nybegynder
10. marts 2008 - 17:49 #3
hmm.. så jeg skal bruge dette stykke kode:

$sql= "SELECT id, login, pw, navn, homedir, access_level FROM brugere WHERE login='$brugernavn' AND pw='$pw'";
    mysql_real_escape_string($brugernavn),
        mysql_real_escape_string($pw);

Jeg er ikke helt med på den session der?

Jeg har fire filer

index.html - med formen der kalder filen med database tjekket
login.php - filen der bliver kaldt af formen. Derudover der require'r en fil med et database kald. Her har jeg også session'en ($_SESSION['KYL']= $brugerdata['id']; som jeg så ikke må).
dbkald.php - filen med kaldet til databasen (denne var ikke beskrevet ovenover, men jeg har bare taget database kaldet og indsat den der).
brugerside.php - det er den der $homedir og som også require'r dbkald.php (men det ved jeg ikke om er nødvendigt).

Hvor er der den session skal være?

Det kan sikkert gøre på en meget smartere måde den måde jeg har gjort det på :-)

Mvh

Jost
Avatar billede fant0mas Nybegynder
10. marts 2008 - 18:03 #4
<?php
session_start();

if (isset($_POST['submit'])) {

    mysql_connect ('localhost','root',''); //kører på en lokal maskine
    mysql_select_db('database');

    $sql= "SELECT id, login, pw, navn, homedir, FROM brugere WHERE login='".mysql_real_escape_string($_POST['login'])."' AND pw='".mysql_real_escape_string($_POST['password'])."'";
    $svar = mysql_query($sql)or die(mysql_error());
    $check = mysql_num_rows($svar);
    if($check == 1){
        $brugerdata = mysql_fetch_array($svar);
       
        $_SESSION['navn'] = $brugerdata['navn'];
        $_SESSION['KYL']= $brugerdata['id'];
        $homedir = $brugerdata['homedir'];       
       
        header('location:'.$homedir.'.php');
    }else{
    echo "Du har skrevet forkert brugernavn og/eller password. Prøv venligst igen. Er der fortsat problemer så kontakt din administrator.";
    }
}
?>
Avatar billede fant0mas Nybegynder
10. marts 2008 - 18:06 #5
Hvis det er en succes, så burde du på en anden side kunne skrive:
<?php
session_start();
echo 'Bruger: '.$_SESSION['navn'];
echo '<br>';
echo 'ID: '.$_SESSION['KYL'];
?>
Avatar billede jost Nybegynder
10. marts 2008 - 18:22 #6
hmm.. det gav mig denne fejlmeddelse:

ou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM brugere WHERE login='jost' AND pw='kode'' at line 1

Det kan være der er en slå fjel i koden eller der en anden fejl, men jeg skal ud af døren nu og kan ikke nå at tjekke det. Men tak for hjælpen indtil videre :-)
Avatar billede fant0mas Nybegynder
10. marts 2008 - 18:48 #7
$sql= "SELECT id, login, pw, navn, homedir, FROM brugere WHERE

Komma efter homedir skal ikke være der.
Avatar billede jost Nybegynder
11. marts 2008 - 10:31 #8
Det virker :-)  Mange tak.

Smid et svar hvis du vil have points.

/Jost
Avatar billede fant0mas Nybegynder
11. marts 2008 - 10:53 #9
Godt. Svar
Avatar billede fant0mas Nybegynder
11. marts 2008 - 10:53 #10
Prøver igen :P
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