Avatar billede floetti Nybegynder
08. juni 2003 - 21:51 Der er 15 kommentarer og
1 løsning

Login med session !

Hej !

Jeg eri nu igang med at lave et login system. Jeg har en MySQL database, hvori jeg har en kolonne som heder "id", og jeg vil gerne have at da man logger ind skal der startes en SESSION, som får værdien "id" hos den som logger ind.

Jeg har lavet det sådan:

<?php session_start();
   
        $sql = mysql_query("Select * from profiles where email = \"$_POST[email]\" && password = \"$_POST[pass\"");
        if (mysql_num_rows($sql)){
        { $_SESSION['id'] = '$row[id]'; }
        elseif($_GET['logout'] == '1') { $_SESSION['id'] = ''; session_destroy(); }
       
        if(!$_SESSION['id']) {
        echo "<h2>Logga inn</h2>";
        echo "<form method=\"post\" action=\"image.php\"><table>
            <tr><td>Brúkari:</td><td><input type=\"text\" size=\"10\" name=\"username\"></td></tr>
            <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr>
            <tr><td>&nbsp;</td><td><input type=\"submit\" value=\"Login\"></td></tr>
        </table></form>";
        } else {
        header ("location: profile.php");
        exit;
        }
        ?>

Spørgsmålet er bare, om det er ret lavet, det der med { $_SESSION['id'] = '$row[id]'; } og hvordan jeg kalder det frem igen?
Avatar billede ztyxx Nybegynder
08. juni 2003 - 21:56 #1
du kan altid tjekke indholdet af din session
echo $_SESSION[id];
Avatar billede ahv Nybegynder
08. juni 2003 - 21:56 #2
Noget lignende dette:

<?php
session_start();
$sql = mysql_query("Select * from profiles where email = \"$_POST[email]\" && password = \"$_POST[pass\"");
if (mysql_num_rows($sql) != 0) {
    $row = mysql_fetch_array($sql);
    $_SESSION['id'] = $row['id'];
    header ("location: profile.php");
    exit;
}

if (!$_SESSION['id']) {
    echo "<h2>Logga inn</h2>";
    echo "<form method=\"post\" action=\"image.php\"><table>
    <tr><td>Brúkari:</td><td><input type=\"text\" size=\"10\" name=\"username\"></td></tr>
    <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr>
    <tr><td>&nbsp;</td><td><input type=\"submit\" value=\"Login\"></td></tr>
    </table></form>";
?>
Avatar billede ahv Nybegynder
08. juni 2003 - 21:57 #3
Der er flere fejl, retter det lige til.
Avatar billede ahv Nybegynder
08. juni 2003 - 21:59 #4
<?php
session_start();
if (isset($_POST['login']) {
    $sql = mysql_query("SELECT * FROM profiles WHERE email = '$_POST[email]' AND password = '$_POST[pass]'");
    if (mysql_num_rows($sql) != 0) {
        $row = mysql_fetch_array($sql);
        $_SESSION['id'] = $row['id'];
        header ("location: profile.php");
        exit;
    }
}

if (!$_SESSION['id']) {
    echo "<h2>Logga inn</h2>";
    echo "<form method='post' action='image.php'><table>
    <tr><td>Brúkari:</td><td><input type='text' size='10' name='username'></td></tr>
    <tr><td>Loyniorð:</td><td><input type='password' size='10' name='password'></td></tr>
    <tr><td>&nbsp;</td><td><input type='submit' value='Login' name='login'></td></tr>
    </table></form>";
}
?>
Avatar billede floetti Nybegynder
08. juni 2003 - 22:00 #5
Jeg vil gerne hive data ud af databasen, hvor session er lige med "id", kan jeg så bare skrive i profile.php:

$sql = mysql_query("Select * from profiles id = $_SESSION[id]");

??
Avatar billede ahv Nybegynder
08. juni 2003 - 22:01 #6
Ja, eller måske:

$sql = mysql_query("SELECT * FROM profiles id = '$_SESSION[id]'");
Avatar billede ahv Nybegynder
08. juni 2003 - 22:18 #7
Hvis du bedre lære af at se hvordan andre har gjort, så kan du også tage et kig på sukos login scripts:
http://sukos.dk/php/login/
Avatar billede floetti Nybegynder
08. juni 2003 - 23:01 #8
Jeg har arbejdet lidt på det nu, det virker men jeg kan ikke få vist $_SESSION, hvad har jeg lavet galt ??

<?php
if($_GET[mode] == 'login'){
        $sql = mysql_query("Select * from users where user = \"$_POST[username]\" && password = \"$_POST[password]\"");
        if(mysql_num_rows($sql))
        $row = mysql_fetch_array($sql){
        $_SESSION['id'] = $row['id'];
        header ("location: profile.php");
        exit;
        }
        elseif($_GET['logout'] == '1') { $_SESSION['id'] = ''; session_destroy(); }
        }
        if($_GET[mode] == 'register'){
        $id = date('YmdHis');
        $sql = mysql_query("Insert into users (id, user, password, nick, email) Values (\"$id\",\"$_POST[user]\",\"$_POST[password]\",\"$_POST[nick]\",\"$_POST[email]\")");
        echo "Brúkari skrásettur";
        }else{
        echo "<h2>Logga inn</h2>";
        echo "<form method=\"post\" action=\"index.php?mode=login\"><table>
            <tr><td>Brúkari:</td><td><input type=\"text\" size=\"10\" name=\"username\"></td></tr>
            <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr>
            <tr><td>&nbsp;</td><td><input type=\"submit\" value=\"Login\"></td></tr>
        </table></form><br>
        <h2>Skráset búkarar</h2><br>
        <form method=\"post\" action=\"index.php?mode=register\"><table>
            <tr><td>Eyðkennis navn:</td><td><input type=\"text\" size=\"10\" name=\"nick\"></td></tr>
            <tr><td>Brúkaranavn:</td><td><input type=\"text\" size=\"10\" name=\"user\"></td></tr>
            <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr>
            <tr><td>Teldupostur:</td><td><input type=\"text\" size=\"10\" name=\"email\"></td></tr>
            <tr><td>&nbsp;</td><td><input type=\"submit\" value=\"Skráset\"></td></tr>
        </table></form>";
        }
        ?>

Jeg har så bare skrevet <? echo "$_SESSION[id];" ?> på profile.php, men der kommer bare ; tegnet frem ??
Avatar billede ahv Nybegynder
08. juni 2003 - 23:03 #9
Du mangler en session_start();
Avatar billede ahv Nybegynder
08. juni 2003 - 23:03 #10
<?php
session_start();
if($_GET[mode] == 'login'){
        $sql = mysql_query("Select * from users where user = \"$_POST[username]\" && password = \"$_POST[password]\"");
        if(mysql_num_rows($sql))
        $row = mysql_fetch_array($sql){
        $_SESSION['id'] = $row['id'];
        header ("location: profile.php");
        exit;
        }
        elseif($_GET['logout'] == '1') { $_SESSION['id'] = ''; session_destroy(); }
        }
        if($_GET[mode] == 'register'){
        $id = date('YmdHis');
        $sql = mysql_query("Insert into users (id, user, password, nick, email) Values (\"$id\",\"$_POST[user]\",\"$_POST[password]\",\"$_POST[nick]\",\"$_POST[email]\")");
        echo "Brúkari skrásettur";
        }else{
        echo "<h2>Logga inn</h2>";
        echo "<form method=\"post\" action=\"index.php?mode=login\"><table>
            <tr><td>Brúkari:</td><td><input type=\"text\" size=\"10\" name=\"username\"></td></tr>
            <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr>
            <tr><td>&nbsp;</td><td><input type=\"submit\" value=\"Login\"></td></tr>
        </table></form><br>
        <h2>Skráset búkarar</h2><br>
        <form method=\"post\" action=\"index.php?mode=register\"><table>
            <tr><td>Eyðkennis navn:</td><td><input type=\"text\" size=\"10\" name=\"nick\"></td></tr>
            <tr><td>Brúkaranavn:</td><td><input type=\"text\" size=\"10\" name=\"user\"></td></tr>
            <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr>
            <tr><td>Teldupostur:</td><td><input type=\"text\" size=\"10\" name=\"email\"></td></tr>
            <tr><td>&nbsp;</td><td><input type=\"submit\" value=\"Skráset\"></td></tr>
        </table></form>";
        }
        ?>
Avatar billede ahv Nybegynder
08. juni 2003 - 23:04 #11
og på profile.php skal du have:

<?php
session_start();
echo $_SESSION['id'];
?>
Avatar billede floetti Nybegynder
08. juni 2003 - 23:13 #12
OK ! fino, nu virker det... ;)

Men nu er det bare problemet at logge ud igen! jeg har skrevet en:

elseif($_GET['logout'] == '1') { $_SESSION['id'] = ''; session_destroy(); }

men den logger ikke ud?
Avatar billede ahv Nybegynder
08. juni 2003 - 23:15 #13
elseif($_GET['logout'] == '1') {
session_destroy();
header("Location: enside.php");
exit;
}

Burde logge dig ud.
Avatar billede ahv Nybegynder
08. juni 2003 - 23:16 #14
elseif($_GET['logout'] == 1) {
session_destroy();
header("Location: enside.php");
exit;
}
Avatar billede floetti Nybegynder
08. juni 2003 - 23:22 #15
--> ahv

Takk for hjælpen

Jeg går .. ;)
Avatar billede floetti Nybegynder
08. juni 2003 - 23:23 #16
Ups sådan, nu fik du point ;)
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