Avatar billede hansen24aar Nybegynder
16. oktober 2005 - 20:37 Der er 37 kommentarer

vis brugernavn efter login

Når jeg har logget ind på min side. hvordan får jeg så vist brugernavnet på den som er logget ind?

det må skulle gøres via sessions - men har ikke så meget forstand på det med sessions og det samme gælder når man skal logge ud. skal den jo slette de sessions der bliver startet af den person som logger på...

jeg har et login system men har brug for hjælp til at lave de nødvendige sessions til at den kan vidergive brugernavn til index siden hos den som der logger ind.

håber i kan hjælpe mig.
Avatar billede michael_stim Ekspert
16. oktober 2005 - 20:42 #1
$_SESSION['navn']=$row['navn'];

index:

session_start();
$navn=$_SESSION['navn'];
echo $navn;
Avatar billede michael_stim Ekspert
16. oktober 2005 - 20:43 #2
Du skal selvf. også have session_start(); med på den side hvor du sätter sessionen.
Avatar billede jakobdo Ekspert
16. oktober 2005 - 20:43 #3
eller bare: echo $_SESSION["navn"];
Avatar billede hansen24aar Nybegynder
16. oktober 2005 - 21:00 #4
takker. hvad så med logud funktionen hvordan laver jeg den? så den sletter alle sessions?
Avatar billede michael_stim Ekspert
16. oktober 2005 - 21:03 #5
unset (tror jeg nok)
www.php.net/session
Avatar billede michael_stim Ekspert
16. oktober 2005 - 21:05 #6
session_unregister('navn');
Avatar billede nizo Nybegynder
16. oktober 2005 - 21:37 #7
de bliver fjernet saa snart du sætter session_destroy() den dræber alle sessions
Avatar billede hansen24aar Nybegynder
16. oktober 2005 - 22:07 #8
ok :)
Avatar billede michael_stim Ekspert
16. oktober 2005 - 22:08 #9
Men alle sessions skal jo ikke unsettes...
Avatar billede hansen24aar Nybegynder
16. oktober 2005 - 23:33 #10
Nej det ved jeg godt... må jeg lige spørge om noget andet. du skal nok få flere point hvis du kan guide mig igennem...

Jeg har lavet på den index side man kommer ind på når man logger sig ind. et link der hedder vis brugernavn. men det er ikke det brugernavn som man logger ind under der kommer fra der. giver dig lige mit script så du kan se det.

du får hele min index side så du kan se hvordan det ser ud. jeg sætter nogle stjerner der hvor jeg skal have dig til at guide mig igennem...
Avatar billede hansen24aar Nybegynder
16. oktober 2005 - 23:38 #11
Det som er imellem stjernerne skal jeg have hjælp til. hvis du vil hjælpe mig....

<?php
session_start();
?><head>
<LINK REL="SHORTCUT ICON" HREF="../img/jpe.ico">
</head>
<?php
echo "<title>Joy Palaze Entertainment</title>";
?>


<style type="text/css">
<!--
.style1 {
    font-size: x-small;
    font-family: "Book Antiqua", "Bookman Old Style", "Comic Sans MS", Haettenschweiler;
}
fieldset {
    color: navy;
    border-color:#0066FF;
    width: 145;
    }
legend {
    color: #FF0000;
    }
hr {
color:#0066FF;
width:350;
}
-->
</style><table width="900" height="635" border="0" align="center" cellpadding="0" cellspacing="0" background="../img/baggrund.gif">
  <tr>
    <td height="120" colspan="4">&nbsp;</td>
  </tr>
  <tr>
    <td width="182" height="100" align="center" valign="bottom">
    <a href="index.php"><img src="../img/logo.gif" /></a>    </td>
    <td colspan="2" rowspan="2" valign="top"><br />
    <table border=0 width="300" align="center">
    <tr align="center"><td width="100">Rediger Profil</td>
    <td width="100">
*************************************************************************************
<?php
mysql_connect(xxx, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$sql = "
  SELECT
    *
  FROM
    profil
  ORDER BY
  navn DESC
  LIMIT 1
  ";
$qh = mysql_query( $sql ) or die ( mysql_error() );
if ( mysql_num_rows( $qh ) > 0 )
{
  while ( $row = mysql_fetch_assoc( $qh ) )
  {
    echo 'Vis <a href="vis_profil.php?id=' . $row['id'] . '">' . $row['navn'] . '</a>';
  }
};
?>
*************************************************************************************
</td>
    <td width="100">Upload Billed</td>
    </tr>
    <tr><td colspan="3" align="center"><hr /></td></tr>
    <tr><td colspan="3">Velkommen <b><?php
    $navn=$_SESSION['Name'];
    echo $navn;
    ?></b>. Vi er meget glade for at se dig bruge<br /> vores helt nye og forbedret side med flere nye, servicer.<br /> Vi håber du bliver tilfreds med det vi kan tilbyde dig her.</td></tr>
    <tr><td colspan="3" align="center"><hr></td></tr>
    <tr><td colspan="3" align="center">De 3 nyeste billed profiler</td></tr>
    <tr><td height="100" align="center">Profil 1</td>
    <td height="100" align="center">Profil 2</td>
    <td height="100" align="center">profil 3</td>
    </tr>
    <tr><td colspan="3"><hr></td></tr>
    <tr><td colspan="3">Fester</td></tr>
    <tr><td colspan="3"><hr></td></tr>
    <tr><td colspan="3">Udflugter</td></tr>
    </table>
    </td>
    <td width="239" valign="top"><br />
    Profiler: <?php
mysql_connect(xxx, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$query = mysql_query("SELECT COUNT(*) FROM profil");
$antal = mysql_result($query, 0);
echo $antal;
?><br />
    Forum: <?php
mysql_connect(xxx, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$query = mysql_query("SELECT COUNT(*) FROM forum");
$antal = mysql_result($query, 0);
echo $antal; ?><br />
    Online profiler: <?php ?><br />
    Jokes: <?php
mysql_connect(xxx, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$query = mysql_query("SELECT COUNT(*) FROM jokes");
$antal = mysql_result($query, 0);
echo $antal;

    ?>
    </td>
  </tr>
  <tr>
    <td valign="top"><p>
    <fieldset>
    <legend>Din Info</legend>
    <?php
    $navn=$_SESSION['Name'];
    echo'Du er logget ind som:<br>';
    echo'<b>';
    echo $navn;
    echo'</b>';
    ?>
    </fieldset><br />
    <fieldset>
    <legend>Bruger menu</legend>
    <a href="index.php">Forside</a><br />
    <a href="../inc/logud.php">Logud</a><br />
    Online Liste<br />
    Post<br />
    Nye profiler
    </fieldset>
    <p>
    <fieldset>
    <legend>Sjov</legend>
    Chat
    </fieldset>
    <p>
   
    </td>
    <td align="center" valign="top">
    <fieldset>
    <legend>Nyheder</legend>
    <?php

mysql_connect(xxxt, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$sql = "
  SELECT
    *
  FROM
    nyheder
  ORDER BY
    dato DESC
  LIMIT 3
  ";
$qh = mysql_query( $sql ) or die ( mysql_error() );
if ( mysql_num_rows( $qh ) > 0 )
{
  while ( $row = mysql_fetch_assoc( $qh ) )
  {
    echo '<a href="../inc/vis_nyhed.php?id=' . $row['id'] . '">' . $row['overskrift'] . '</a><br>';
  }
}
else
{
  echo "Ingen nyheder.";
}
?>
    </fieldset>
    <p>
    <fieldset>
    <legend>Opdatering</legend>
    her kommer vores<br /> opdateringer.
    </fieldset>
    <p>
    <fieldset>
    <legend>Sponsere</legend>
    Her kommer vores<br />
    sponsere fra en <br />
    database.
    </fieldset>
    </td>
  </tr>
 
  <tr >
    <td height="40" colspan="4" align="center" valign="top"><span class="style1">Joy Palaze Entertainment<br>
    Copyright &copy; year 2005 </span></td>
  </tr>
</table>
Avatar billede jakobdo Ekspert
17. oktober 2005 - 07:53 #12
Jeg tror vi mangler dit login script.
Avatar billede hansen24aar Nybegynder
17. oktober 2005 - 09:56 #13
ok det kommer her.
*************************************************************************************
login.php

<form action="./dologin.php" enctype="multipart/form-data" method="post">
    <input type="hidden" name="login" value="login">
    <table border="0" width="400" align="center"><tr><td colspan="2" align="center"><h2>Profil Login</h2></td></tr>
    <tr><td>Brugernavn</td><td><input type="text" name="navn" size="40" maxlength="25"></td></tr>
    <tr><td>Password</td><td><input type="password" name="password" size="40" maxlength="25"></td></tr>
    <tr><td align="center"><input type="submit" name="submit" value="Login"></td><td align="center"><input type="reset" value="Ryd Login"></td></tr></table></form>
    <?php
    if (isset($error) && $error == "fejl"){
    echo"<center>Forkert brugernavn eller adganskode prøv igen</center>";
    }
    ?>
*************************************************************************************
dologin.php

<?php
    session_start();
    //hvis formen er sendt
    if(isset($_POST['login'])) {
   
    //Opkald til database og valg af datbase
   
    $db = mysql_connect("xxx","xxx","xxx") or die("desværre ingen forbindelse til databasen");
    mysql_select_db("palaze", $db) or die("kunne ikke vælge databasetabellen");
   
    $tjek = mysql_query("SELECT navn, pass FROM profil WHERE navn='$navn' AND pass='$password'") or die(mysql_error());
   
    if(mysql_num_rows($tjek) != 0) {
    $session = session_ID;
    $Name = $navn;
    $id = $id;
   
    session_register("sessionnr");
    session_register("Name");
    session_register("id");
   
    header("location:index.php");
    }else{
    header("location:login.php?error=fejl");
    }
    }else{
    header("location:login.php");
    exit;
    }
    ?>
*************************************************************************************
håber i kan hjælpe mig....
Avatar billede showsource Seniormester
17. oktober 2005 - 10:11 #14
Når du logger ind:

<?php
    session_start();
    //hvis formen er sendt
    if(isset($_POST['login'])) {
 
    //Opkald til database og valg af datbase
 
    $db = mysql_connect("xxx","xxx","xxx") or die("desværre ingen forbindelse til databasen");
    mysql_select_db("palaze", $db) or die("kunne ikke vælge databasetabellen");
 
    $tjek = mysql_query("SELECT id, navn FROM profil WHERE navn='". $_POST["navn"] ."' AND pass='". $_POST["password"] ."'") or die(mysql_error());
 
    if(mysql_num_rows($tjek) == 1) {
    $row = mysql_fetch_array($tjek);
 
    $_SESSION["sessionnr"] = session_id();
    $_SESSION["Name"] = $row[navn];
    $_SESSION["id"] = $row["id"];
 
    header("location:index.php");
    }else{
    header("location:login.php?error=fejl");
    }
    }else{
    header("location:login.php");
    exit;
    }
    ?>

Så kan du få vist navnet på den som er logget ind med

echo $_SESSION["Name"];
Avatar billede jakobdo Ekspert
17. oktober 2005 - 14:43 #15
Jeg synes altid det er en god ide at lave:

$navn = mysql_escape_string($_POST["navn"]);
$password = mysql_escape_string($_POST["password"]);

$tjek = mysql_query("SELECT id, navn FROM profil WHERE navn='". $navn ."' AND pass='". $password ."' LIMIT 1") or die(mysql_error());

Ellers kan man lave sql injections og limit 1, vi skal jo kun have en bruger.
Avatar billede hansen24aar Nybegynder
17. oktober 2005 - 21:54 #16
Jeg har fundet fejlen... men ved ikke hvordan eg retter den... når jeg laver en logud skal den slette alle de session jeg sætter. hvordan gør jeg det?

jeg har en fil der hedder logud.php jeg indrammer igen mit script med stjerner.
min logud.php ser sådan her ud....

logud.php

<?php
session_start();
?>
<head>
<LINK REL="SHORTCUT ICON" HREF="img/jpe.ico">
</head>
<?php
echo "<title>Joy Palaze Entertainment</title>";
?>
<style type="text/css">
<!--
.style1 {
    font-size: x-small;
    font-family: "Book Antiqua", "Bookman Old Style", "Comic Sans MS", Haettenschweiler;
}
fieldset {
    color: navy;
    border-color:#0066FF;
    width: 145;
    }
legend {
    color: #FF0000;
    }
-->
</style><table width="900" height="635" border="0" align="center" cellpadding="0" cellspacing="0" background="../img/baggrund.gif">
  <tr>
    <td height="120" colspan="4">&nbsp;</td>
  </tr>
  <tr>
    <td width="182" height="100" align="center" valign="bottom">
    <a href="../index.php"><img src="../img/logo.gif" /></a>    </td>
    <td colspan="2" rowspan="2">
*************************************************************************************        <?php
    session_unset('Name');
    session_unset('id');
    session_unset('sessionnr');
    session_destroy(); {
    echo'<center>Du er nu logget ud</center>';
    }
    ?>
*************************************************************************************
    </td>
    <td width="239" valign="top"><br />
    Profiler: <?php
mysql_connect(xxx, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$query = mysql_query("SELECT COUNT(*) FROM profil");
$antal = mysql_result($query, 0);
echo $antal;
?><br />
    Forum: <?php
mysql_connect(xxx, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$query = mysql_query("SELECT COUNT(*) FROM forum");
$antal = mysql_result($query, 0);
echo $antal; ?><br />
    Online profiler: <?php ?><br />
    Jokes: <?php
mysql_connect(xxx, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$query = mysql_query("SELECT COUNT(*) FROM jokes");
$antal = mysql_result($query, 0);
echo $antal;

    ?>
    </td>
  </tr>
  <tr>
    <td valign="top"><p>
    <fieldset>
    <legend>Start</legend>
    <a href="../index.php">Forside</a><br />
    <a href="../users/login.php">Login</a><br />
    Forum<br />
    <a href="../users/opret.php">Opret Bruger</a><br />
    </fieldset>
    <p>
    <fieldset>
    <legend>Sjov</legend>
    <a href="../inc/jokes.php">jokes</a><br />
    Spil<br />
    Download<br />
    Chat
    </fieldset>
    <p>
    <fieldset>
    <legend>Administration</legend>
    Admin Login<br />
    <a href="../inc/news.php">Tilføj nyhed</a><br />
    <a href="../inc/feedback.php">Feedback</a><br />
    Om os<br />
    Send mail
    </fieldset>
    </td>
    <td align="center" valign="top">
    <fieldset>
    <legend>Nyheder</legend>
    <?php

mysql_connect(xxx, xxx, xxx) or die(mysql_error());
mysql_select_db(palaze) or die(mysql_error());

$sql = "
  SELECT
    *
  FROM
    nyheder
  ORDER BY
    dato DESC
  LIMIT 3
  ";
$qh = mysql_query( $sql ) or die ( mysql_error() );
if ( mysql_num_rows( $qh ) > 0 )
{
  while ( $row = mysql_fetch_assoc( $qh ) )
  {
    echo '<a href="../inc/vis_nyhed.php?id=' . $row['id'] . '">' . $row['overskrift'] . '</a><br>';
  }
}
else
{
  echo "Ingen nyheder.";
}
?>
    </fieldset>
    <p>
    <fieldset>
    <legend>Opdatering</legend>
    her kommer vores<br /> opdateringer.
    </fieldset>
    <p>
    <fieldset>
    <legend>Sponsere</legend>
    Her kommer vores<br />
    sponsere fra en <br />
    database.
    </fieldset>
    </td>
  </tr>
 
  <tr >
    <td height="40" colspan="4" align="center" valign="top"><span class="style1">Joy Palaze Entertainment<br>
    Copyright &copy; year 2005 </span></td>
  </tr>
</table>
Avatar billede jakobdo Ekspert
17. oktober 2005 - 22:12 #17
Du skal bruge dette kode:

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (isset($_COOKIE[session_name()])) {
  setcookie(session_name(), '', time()-42000, '/');
}

// Finally, destroy the session.
session_destroy();
?>
Avatar billede hansen24aar Nybegynder
17. oktober 2005 - 22:14 #18
skal jeg sætte den kode på min logud side?
Avatar billede jakobdo Ekspert
17. oktober 2005 - 22:16 #19
Har du et logud script?
Hvis ja, der kunne du godt smide det ind!
Avatar billede hansen24aar Nybegynder
17. oktober 2005 - 22:29 #20
Mit eneste logud script er var det jeg skrev før du kom med dit script
Avatar billede jakobdo Ekspert
17. oktober 2005 - 22:33 #21
*************************************************************************************        <?php
$_SESSION = array();
if (isset($_COOKIE[session_name()]))
{
  setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
echo'<center>Du er nu logget ud</center>';
?>
*************************************************************************************
Avatar billede hansen24aar Nybegynder
18. oktober 2005 - 21:20 #22
når jeg bruger det script får jeg denne fejl...

Warning: Cannot modify header information - headers already sent by (output started at C:\Programmer\YellowTip\Htdocs\joy-palaze\users\logud.php:6) in C:\Programmer\YellowTip\Htdocs\joy-palaze\users\logud.php on line 36
Avatar billede jakobdo Ekspert
18. oktober 2005 - 21:24 #23
Problemet er du allerede har sendt output til browseren.
Derfor ville jeg "bare" lave en logud script som bestod af:
<?
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()]))
{
  setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
header("location: index.php");
?>

Så når den fil køres, bliver brugeren logget ud og sendt til forsiden!
Du kan evt også overveje at bruge ob_start() og ob_end_flush().
Avatar billede hansen24aar Nybegynder
18. oktober 2005 - 21:24 #24
fejlen er i denne linie...

<?php
$_SESSION = array();
if (isset($_COOKIE[session_name()]))
{
-->  setcooie(session_name(), '', time()-42000, '/'); <--
}
session_destroy();
echo'<center>Du er nu logget ud</center>';
?>
Avatar billede hansen24aar Nybegynder
18. oktober 2005 - 21:28 #25
nu får jeg disse fejl

Warning: Cannot modify header information - headers already sent by (output started at C:\Programmer\YellowTip\Htdocs\joy-palaze\users\logud.php:8) in C:\Programmer\YellowTip\Htdocs\joy-palaze\users\logud.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at C:\Programmer\YellowTip\Htdocs\joy-palaze\users\logud.php:8) in C:\Programmer\YellowTip\Htdocs\joy-palaze\users\logud.php on line 41

<?php
$_SESSION = array();
if (isset($_COOKIE[session_name()]))
{
-->  setcookie(session_name(), '', time()-42000, '/'); <--
}
session_destroy();
--> header("location:..index.php"); <--
?>

Hvordan bruger jeg ob_start() og ob_end_flush()
Avatar billede jakobdo Ekspert
18. oktober 2005 - 21:29 #26
Har du lavet en fin som kun indeholder:
<?
session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()]))
{
  setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
header("location: index.php");
?>

Og får du da fejl, hvis du kalder den?
Avatar billede hansen24aar Nybegynder
18. oktober 2005 - 21:47 #27
nej men det kan jeg lige prøve.
Avatar billede hansen24aar Nybegynder
18. oktober 2005 - 21:49 #28
hmmm selvom at jeg så prøver at logge ind med et andet navn så kommer det forrige frem under mit link til at vise profilen
Avatar billede jakobdo Ekspert
18. oktober 2005 - 21:54 #29
Det skulle det nu godt nok ikke!
prøv at lav en test side, og bagefter du har "kørt" logud.php
så åben siden: debug.php
som indeholder:
<?php
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
?>
Avatar billede hansen24aar Nybegynder
18. oktober 2005 - 22:02 #30
http://80.163.22.100 /joy-palaze

prøv at logge på med
brugernavn: test
password: test

og bagefter opret en profil selv og log på med den...
så er jeg ret sikker på den skriver test igen og ikke dit profil navn
Avatar billede jakobdo Ekspert
18. oktober 2005 - 22:15 #31
Før var jeg logget ind med test, så oprettede jeg en ny!
Loggede ind med exp2 og så fik jeg:
Du er logget ind som:
exp2
Det er vel ok? :o)
Avatar billede hansen24aar Nybegynder
19. oktober 2005 - 07:57 #32
ja ja men det er det til linket...
Avatar billede jakobdo Ekspert
19. oktober 2005 - 09:07 #33
Det kan jeg godt se ja!
Den linker stadig til det game! :o)
Avatar billede hansen24aar Nybegynder
19. oktober 2005 - 21:20 #34
Ja hvordan retter jeg det med den link? ved du det?
Avatar billede jakobdo Ekspert
19. oktober 2005 - 21:36 #35
Jeg har prøvet at lave et eksempel her: http://www.codebreaker.dk/exp/656572.php
jeg tror du gør noget forkert et sted.
Så simplet kan det gøres.
Avatar billede hansen24aar Nybegynder
19. oktober 2005 - 21:42 #36
nu er jeg nok dum at høre på...

men nu har jeg en vis_profil.php hvordan og hvorledes virker det så med mit login? og de sessions du har lavet i dit eksempel?
Avatar billede jakobdo Ekspert
19. oktober 2005 - 21:48 #37
Det vil jo virke fint nok, blot et spørgsmål om at indlæse de korrekte data og navngive $_SESSION["variablerne"] korrekt.
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