Avatar billede php_programmoer Nybegynder
22. november 2005 - 21:00 Der er 16 kommentarer og
1 løsning

Tjekke om bruger er logget ind - sessions ?

Jeg har indtil nu tjekket om en bruger er logget ind ved hjælp af denne:

if(!empty($_SESSION['brugernavn']))
{
//Man er logget ind, og kan derfor se det hemlige indhold
}else{
//Brugeren er ikke logget ind
echo "Du er ikke logget ind. Gå til login side <a href=\"login.php\">her.</a>";
}
?>

Og det så ud til at virke, men så undrede jeg mig over hvordan det kunne virke, når den kun tjekker om feltet brugernavn er tomt :S hvordan kan det dog virke ? og nu har jeg så lige fundet ud af at hvis er logget på som fx jens, så har man adgang til både peter,anderses,kurds og alle andres profiler :)

Kan i ikke lige give mig en kort lille funktion som denne der tjekker om en bruger er logget ind - og hvis du ikke har lagt mærke til det så skal det tjekkes med sessions :D
Avatar billede jakobdo Ekspert
22. november 2005 - 21:09 #1
Hvis en bruger ikke er logget ind, så vil $_SESSION["brugernavn"] slet ikke eksistere, og dermed være tomt.
Avatar billede php_programmoer Nybegynder
22. november 2005 - 21:12 #2
Tak for info! :)

men som sagt virker det ikke.. fx hvis eksperten brugte samme funktion ville jeg have adgang til dine ting nu, men det har jeg ikke vel ? :)

kender du en mere sikker metode ?
Avatar billede jakobdo Ekspert
22. november 2005 - 21:16 #3
Når du trækker en profil ud, så skal du lave tjekket:
SELECT * FROM brugere WHERE id = $_SESSION["brugerid"] LIMIT 1
eller
SELECT * FROM brugere WHERE brugernavn = $_SESSION["brugernavn"] LIMIT 1

Dermed kan man kun se sin egen profil og redigere den.
Avatar billede php_programmoer Nybegynder
22. november 2005 - 21:19 #4
Så det vil sige hvis jeg skal putte den ind i min funktion vil den se således ud:
$query = mysql_query("SELECT * FROM brugere WHERE brugernavn = $_SESSION["brugernavn"] LIMIT 1");
if($_SESSION['brugernavn'] = "$query")
{
//Man er logget ind, og kan derfor se det hemlige indhold
}else{
//Brugeren er ikke logget ind
echo "Du er ikke logget ind. Gå til login side <a href=\"login.php\">her.</a>";
}


eller hvad ?
Avatar billede jakobdo Ekspert
22. november 2005 - 21:20 #5
Nej, det er hvis du f.eks. skal redigere ens egen profil.
Hvis det kun er en indlogget person som må se noget hemmeligt, så skal du teste om isset($_SESSION["brugernavn"]) eller !empty($_SE....)
Avatar billede hmortensen Nybegynder
22. november 2005 - 21:25 #6
Du skal ALTID tjekke med isset()

if (isset($_SESSION['brugernavn']) && !empty($_SESSION['brugernavn']))
Avatar billede php_programmoer Nybegynder
22. november 2005 - 21:28 #7
Har lige indsat den jeg lavede lige oven over din sidste post i min edit_profile.php, men for denne fejl:

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING on line 6

linie 6: $query = mysql_query("SELECT * FROM brugere WHERE brugernavn = $_SESSION["brugernavn"] LIMIT 1");
Avatar billede hmortensen Nybegynder
22. november 2005 - 21:35 #8
$query = mysql_query("SELECT * FROM brugere WHERE brugernavn = '".$_SESSION["brugernavn"]."' LIMIT 1");
Avatar billede php_programmoer Nybegynder
22. november 2005 - 21:38 #9
Nej desværre! det virker ikke, og jeg har tjekket at felterne hedder der der står :)
Avatar billede polle007 Nybegynder
22. november 2005 - 21:38 #10
en lille note, empty kontrollerer _også_ om variablen er sat. Så empty of isset i samme udtryk er ikke nødvendigt
Avatar billede php_programmoer Nybegynder
23. november 2005 - 21:28 #11
Vil en eller anden af jer ikke lægge et svar tak :)
Avatar billede jakobdo Ekspert
23. november 2005 - 21:29 #12
Fik du din side til at spille?
Avatar billede php_programmoer Nybegynder
23. november 2005 - 21:48 #13
Desværre :(

..men i prøvede trods alt
Avatar billede jakobdo Ekspert
24. november 2005 - 08:17 #14
Prøv lige at smid det login script herind.
Avatar billede php_programmoer Nybegynder
24. november 2005 - 17:37 #15
Her er den det du skal bruge :) (har kun slettet menuen)

<?
session_start();

include "mysql.php";

//Tjekker om man er logget ind
if (isset($_SESSION['brugernavn']) && !empty($_SESSION['brugernavn']))
{
//Laver en query der finder ens brugerid i databasen
$query = mysql_query("SELECT * FROM brugere WHERE brugernavn='". $_SESSION['brugernavn'] ."'") or die(mysql_error());
$row = mysql_fetch_assoc($query);

//Man er logget ind, og kan derfor se det hemlige indhold


$id = $_GET['id'];


echo "<form action=\"\" method=\"post\">";
echo "Mail: <input name=\"mail\" type=\"text\"><br>";
echo "Hjemmeside: <input name=\"hjemmeside\" type=\"text\"><br>";
echo "Interesser: <input name=\"interesser\" type=\"text\"><br>";
echo "Alder: <input name=\"alder\" type=\"text\"><br>";
echo "Fritekst: <textarea rows=\"5\" cols=\"50\" name=\"fritekst\"></textarea>";
echo "<input name=\"submit\" type=\"submit\" value=\"gem\"><br>";
echo "</form>";

include "mysql.php";

$mail = $_POST["mail"];
$hjemmeside = $_POST["hjemmeside"];
$interesser = $_POST["interesser"];
$alder = $_POST["alder"];
$mitId = $_GET["id"];

mysql_query("UPDATE `brugere` SET `mail` = '$mail', `hjemmeside` = '$hjemmeside', `interesser` = '$interesser', alder ='$alder', fritekst ='$fritekst' WHERE id = '$mitId'");

}
else
{
//Brugeren er ikke logget ind
echo "Du er ikke logget ind. Gå til login side <a href=\"login.php\">her.</a>";
}
?>

men det virker selvfølgelig ikke, da den kun tjekker om brugeren er logget ind - den del virker dog :)
Avatar billede johan.o Nybegynder
24. november 2005 - 22:35 #16
Jeg fatter ikke hvorfor du ikke blot lukker her og laver en henvisning til dit 'nye' spørgsmål således at alle dem der forsøger at gøre deres bedste for at hjælpe dig, kan arbejde sammen istedet for at 'vi' skal hoppe rundt i alle dine spørgsmål for at følge med i hvor langt du er med dit projekt.

Du har oprettet dette : http://exp.dk/spm/666799

Luk dog her og så er jeg sikker på at jakobdo polle007 og andre vil fortsætte deres hjælp der.

Jeg gider ihvertfald ikke skulle checke to tråde før jeg kan overskue dit projekt.

Mvh. Johan
Avatar billede php_programmoer Nybegynder
25. november 2005 - 14:21 #17
Ok, bare jeg får hjælp :)

- dette er nu lukket og i kan kigge på http://exp.dk/spm/666799
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