Avatar billede bqnke Nybegynder
30. december 2015 - 00:33 Der er 10 kommentarer

hent oplysninger fra mysql.

Hej eksperter.
Kan i sige mig hvordan, jeg kan hente oplysningerne ud på den bruger der har logget ind, så jeg kan bruge oplysningerne rundt omkring i min session, fx vil jeg gerne hente navn ud fra mysql på brugeren og så også kunne bruge det når jeg føre personen over på en ny side.

min kode ser så ledes ud:

include('config.php');
    session_start();
    if (isset($_POST['submit'])){
   
    $username = $_POST['username'];
    $password = $_POST['password']; 

    $sql = "SELECT * FROM `users` WHERE `username` = '$username' AND `password` = '$password' LIMIT 1";
    $result = $conn->query($sql);
    if (!$result->num_rows == 1) {
        echo "<br><p><center>E-mail og kodeord passer ikke sammen</p></center><br>";
    } else {
            $_SESSION['loggedin'] = 1;
       
              }
}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <title></title>
  <meta http-equiv="content-type" content="charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
    <div id="topmenu">
        <?php
            if ($_SESSION['loggedin'] == 1) {
        ?>
        <div id="login">
        Velkommen <?php echo $username; ?>, du er nu logget ind.
        <a class="opretbruger" href="minkonto.php">Min konto</a>
        <a class="opretbruger" href="logaf.php">Log af</a>
        </div>
        <?php
        }else{
          ?>
            <div id="login">
        <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
                <a class="opretbruger" href="opret.php">Opret bruger</a>
                <input id="username" type="text" name="username" value="E-mail" />
                <input id="password" type="password" name="password" value="Kodeord" />
                <input name="submit" type="submit" value=" Login " />
            </form>
        </div>
        <?php
        }
        ?>
Avatar billede olsensweb.dk Ekspert
30. december 2015 - 01:06 #1
(utested)
 
include('config.php');
session_start();
if (isset($_POST['submit'])){   
    $username = $_POST['username'];
    $password = $_POST['password']; 

    $sql = "SELECT * FROM `users` WHERE `username` = '$username' AND `password` = '$password' LIMIT 1";
    $result = $conn->query($sql);   
    if (!$result->num_rows == 1) {
        echo "<br><p><center>E-mail og kodeord passer ikke sammen</p></center><br>";
    } else {
        $_SESSION['loggedin'] = 1;
           
            $row = $result->fetch_assoc();
            $_SESSION['user']=$row;           
           
            // test udskrift
            echo $row['id'];
            echo "<br>";
            echo $row['username'];
            echo "<br>";
            echo $_SESSION['user']['username'];           
            echo "<pre>";
            print_r($_SESSION['user']);
            echo "</pre>";           
           

    }
}



normalt vil jeg lave en function der retunerer bruger info, bla pga jeg ikke vil sprede mine sql sætninger på alle siderne, og gøre det nemmere at genbruge
Avatar billede bqnke Nybegynder
30. december 2015 - 01:17 #2
Her kan jeg udskriver verdierne, det virker også fint nok.

Men der jeg ville hen, er at når brugeren er logget ind og session er == 1

så vil jeg gerne kunne kalde brugerens oplysninger så jeg kan printe dem ud igen og igen på de forskellige sider jeg kommer ind på.
Avatar billede olsensweb.dk Ekspert
30. december 2015 - 01:23 #3
læg user info i session
hvilke jeg gør med denne linje
$_SESSION['user']=$row;           

så du på alle sider bruge dette
echo $_SESSION['user']['username'];
forudsat du har started session på siden
Avatar billede bqnke Nybegynder
30. december 2015 - 01:31 #4
Nu virker det godt nok, den logger mig bare af sessionen når jeg opdatere siden et par gange ?
Avatar billede olsensweb.dk Ekspert
30. december 2015 - 09:57 #5
#4
mon det skyldes du forsøger at starte session flere gange, selv om den er started ??
pak din session_start ind i en isset
dvs hvis sesion ikke er started, så start den
if (!isset($_SESSION)) {
    session_start();
}


og unset din submit variabel, når den er brugt, så den ikke existere når du trykker på F5

if (isset($_POST['submit'])){
    unset($_POST['submit']);
    $username = $_POST['username'];
    $password = $_POST['password']; 
    .....
Avatar billede bqnke Nybegynder
30. december 2015 - 10:28 #6
Du vil ikke prøve at pakke det ind i koden ? forstår det ikke helt.

hvordn skal den vide jeg har trykket sessionstart, når jeg sætter session til at være == 1 efter login ?
Avatar billede olsensweb.dk Ekspert
30. december 2015 - 10:46 #7
(utested)
include('config.php');

if (!isset($_SESSION)) {
    session_start();
}


if (isset($_POST['submit'])){
    unset($_POST['submit']);
 
    $username = $_POST['username'];
    $password = $_POST['password']; 

    $sql = "SELECT * FROM `users` WHERE `username` = '$username' AND `password` = '$password' LIMIT 1";
    $result = $conn->query($sql);   
    if (!$result->num_rows == 1) {
        echo "<br><p><center>E-mail og kodeord passer ikke sammen</p></center><br>";
    } else {
        $_SESSION['loggedin'] = 1;           
        $row = $result->fetch_assoc();
        $_SESSION['user']=$row;           
    }
}


>hvordn skal den vide jeg har trykket sessionstart,
du tester på om variablen $_SESSION findes med isset, sessionstart er ikke noget du trykker.


>når jeg sætter session til at være == 1 efter login ?
så skal $_SESSION være started, du sætter den ikke til at være == 1, du sætter den til at være = 1, med linjen
$_SESSION['loggedin'] = 1;

== er sammenligning som jeg også skrev http://www.eksperten.dk/spm/1008131#reply_8205948
Avatar billede bqnke Nybegynder
30. december 2015 - 10:58 #8
Ja den har jeg forstået med = og ==

Men koden reagere på sammen måde på den nye måde, efter et par opdateringer af siden, taber den data på brugeren ...
Avatar billede olsensweb.dk Ekspert
30. december 2015 - 11:11 #9
når du laver opdateringer, er det så med F5 eller

man skulle kunne tro du laver en session_destroy et sted du opdaterer

er coden i #0 hele coden ??
Avatar billede olsensweb.dk Ekspert
30. december 2015 - 11:31 #10
man kunne rette 
Velkommen <?php echo $username; ?>, du er nu logget ind.

til 

Velkommen <?php echo $_SESSION['user']['username']; ?>, du er nu logget ind.

da session værdien findes hele tiden, når man er logget ind også når du skifter side
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

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