Avatar billede bigtime Nybegynder
04. februar 2009 - 10:49 Der er 18 kommentarer og
1 løsning

Opret session og login

Hey.
jeg har et lille problem med at overføre session (tror jeg )
når man trykker på login knappen ryger du hvidre til login_confirm.php her er koden i den

<?php
session_start();
require("include/forbind.php");
$login = $_POST['login'];
if(empty($login)) {
    echo 'Denne side kræver login adgang';
} else {
    $username = $_POST['username'];
    $password = $_POST['password'];

    if(empty($username) || empty($password)) {
        echo 'Felterne "Brugernavn" og "Password" skal udfyldes!';
    } else {
        mysql_connect($mysql_host, $mysql_user, $mysql_pw);
        mysql_select_db($mysql_db);
        $tael = mysql_query("SELECT COUNT(*) FROM bruger WHERE brugernavn = '$username' AND kodeord = '$password'")or die (mysql_error());
        $antal = mysql_result($tael, 0);

        if($antal == 1) {
            $_SESSION[login] = true;
            header("location: index.php");
            exit;
        } else {
            echo 'Forkerte login oplysninger!';
        }
    }
}
?>

og nu er jeg logget ind så har den fjernet login boksen og der kan du rediger din profil ovs.
men ville gerne have den til at skrive velkommen bruger
meeeenn det er der det kniber det kan jeg ikke få den til, har haft brugt den her velkommen <? $_POST['username'] ?> men det vil den ikke men hvordan så ??
Avatar billede psychopixi Nybegynder
04. februar 2009 - 11:12 #1
Hvis du efter du sætter $_SESSION["login"]=true, sætter $_SESSION["user"] = $username, så kan du på din side blot bruge:
<?php
session_start();
echo "Velkommen " . $_SESSION["user"] . "<br/>";
?>

Og generelle råd til dit login system:
1. Brug hashede passwords.
2. Valider alle inputs der skal bruges til MySQL entries, for at sikre dig selv mod MySQL injection attacks. Brug for eksempel mysql_real_escape_string funktionen.
3. linien $_SESSION[login] = true;, skal være $_SESSION["login"] = true;
Avatar billede psychopixi Nybegynder
04. februar 2009 - 11:17 #2
Hvis du kun vil have din kode til at skrive velkommen lige efter brugeren er logget ind kan du fx bruge:

<?php
session_start();
if(isset($_SESSION["user"])){
echo "Velkommen " . $_SESSION["user"] . "<br/>";
unset($_SESSION["user"];
}
?>
Avatar billede bigtime Nybegynder
04. februar 2009 - 11:46 #3
jeg ville bare have den til at gemme brugerens brugernavn i en session eller noget så jeg kunne kalde den når jeg skulle bruge det
Avatar billede psychopixi Nybegynder
04. februar 2009 - 11:54 #4
Og det er netop hvad du gør hvis du bruger denne:

Login siden:
<?php
session_start();
$_SESSION["user"] = $username;
?>

Siden:
<?php
session_start();
echo $_SESSION["user"];
?>
Avatar billede bigtime Nybegynder
04. februar 2009 - 12:17 #5
øh login siden er på index.php og når du trykker på login knappen ryger du over til login_confirm.php som indeholder koden her over, og når du så er "godkendt login " ryger du tilbage til index.php.

session_start(); sætter du ikke den øverst i ens kode ?
bare fordi den skal ikke skrive brugerens navn der oppe
Avatar billede psychopixi Nybegynder
04. februar 2009 - 12:19 #6
Jo det er en god ide at sætte session_start() i toppen af din side.

Du kan bruge "echo $_SESSION["user"];" lige hvor du har lyst til i index.php efter du har kaldt session_start().
Avatar billede bigtime Nybegynder
04. februar 2009 - 12:23 #7
jeg får bare den her fejl hvis jeg rykker den ned i scripet altså echo $_SESSION["user"]

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/mitnavn/domains/siden.dk/public_html/siden/index.php on line 39
Avatar billede bigtime Nybegynder
04. februar 2009 - 12:27 #8
det er her i den skriver det.

<? if($_SESSION[login] == true){
  echo "&nbsp;&nbsp;<b class='login_forside'>Velkommen  </b> <? echo $_SESSION['user'] ?>"; } else { echo "&nbsp;&nbsp;<b class='login_forside'>Login</b>"; } ?>

eller er der en anden bredre måde at skrive det her på ?
Avatar billede psychopixi Nybegynder
04. februar 2009 - 12:29 #9
Fejlen ligger her:
if($_SESSION[login] == true){

Du SKAL have anførselstegn rundt om login, så det bliver:

if($_SESSION["login"] == true){

Og det skal der naturligvis også være der hvor du definerer denne variabel.
Avatar billede psychopixi Nybegynder
04. februar 2009 - 12:31 #10
Og du har også fejl i:
echo "&nbsp;&nbsp;<b class='login_forside'>Velkommen  </b> <? echo $_SESSION['user'] ?>";

Den bliver:
echo "&nbsp;&nbsp;<b class='login_forside'>Velkommen </b>".$_SESSION['user']."";
Avatar billede bigtime Nybegynder
04. februar 2009 - 12:38 #11
nu kommer den da ikke med fejl men den skriver det stadig ikke
<? if($_SESSION["login"] == true){
  echo '&nbsp;&nbsp;<b class="login_forside">Velkommen  </b> <? echo $_SESSION["user"] ?>'; } else { echo '&nbsp;&nbsp;<b class="login_forside">Login</b>'; } ?>
Avatar billede psychopixi Nybegynder
04. februar 2009 - 12:51 #12
Hvis der ikke kommer noget output, må det være fordi du:
1) Ikke har startet session_start();
2) Du har ikke angivet $_SESSION["login"]=true i login-systemet
3) Du har angivet $_SESSION["login"] forkert, evt. stavet det forkert.

Hvis du tjekker dette igennem og det stadig ikke virker, må du give mig koden for både index.php og login_comfirm.php, for at jeg har en chance for at lokalisere problemet.
Avatar billede bigtime Nybegynder
04. februar 2009 - 13:22 #13
hmmm kan sku ikke finde den fejl.
jwg kan godt få den til at udskrive det i toppen af siden men når jeg sætter den ind her vil den ikke

<? if($_SESSION["login"] == true){
  echo '&nbsp;&nbsp;<b class="login_forside">Velkommen  </b> <? echo $_SESSION["user"] ?>'; } else { echo '&nbsp;&nbsp;<b class="login_forside">Login</b>'; } ?>
Avatar billede psychopixi Nybegynder
04. februar 2009 - 13:25 #14
Som jeg beskrev tidligere er den kode forkert, den skal være:

<? if($_SESSION["login"] == true){
  echo '&nbsp;&nbsp;<b class="login_forside">Velkommen  </b>'.$_SESSION["user"].''; } else { echo '&nbsp;&nbsp;<b class="login_forside">Login</b>'; } ?>
Avatar billede bigtime Nybegynder
04. februar 2009 - 13:47 #15
aaa tak nu virkede det.
har lige 2 spørgsmål til hvad har . altså puktummerne af betydning her i .$_SESSION["user"].

det andet spørgsmål hvordan bruger sikkere jeg de forskællige sider
alså hvis bruger1 vil en på en side hvor man skal være logget ind for at.

smid det i et svar så du kan få dine point
Avatar billede psychopixi Nybegynder
04. februar 2009 - 13:52 #16
Punktummerne bruges til at adskille variable. Her er et eksempel:
<?php
$var = "foo";
$var2 = "bar";
echo "foobar, " . $var . $var2;
?>
Output: foobar, foobar

Du kan fx sikre dine sider ved:
<?php
if($_SESSION["login"] == false){
    header("location: /*LOGIN SIDE*/");
    exit;
}
//INDHOLD HER UNDER
?>

Den ovenstående kode sender brugeren til loginsiden hvis denne ikke er logget ind, ellers viser den indholdet på siden.
Avatar billede bigtime Nybegynder
04. februar 2009 - 21:09 #17
den sender ikke nogen nogen steder
<?php
if($_SESSION["login"] == false){
    header("location: index.dk");
    exit;
}
?>
men kommer med

Warning: Cannot modify header information - headers already sent by (output started at /home/navn/domains/side.dk/public_html/mappe/index.php:10) in /home/navn/domains/side.dk/public_html/mappe/profil.php on line 4
Avatar billede psychopixi Nybegynder
04. februar 2009 - 22:39 #18
Det skal være aller øvert i din kode.
Du kan ikke ændre headeren hvis der allerede er skrevet til siden.
Avatar billede bigtime Nybegynder
04. februar 2009 - 22:41 #19
den side som har
<?php
if($_SESSION["login"] == false){
    header("location: index.dk");
    exit;
}
?>
er includeret i index filen
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