Avatar billede bigtime Nybegynder
14. oktober 2010 - 21:02 Der er 25 kommentarer og
1 løsning

session Porblem ??

Hey er der nogen der kan hjælpe mig med et lille problem,
jeg er ved at lave et login system det virker okay men når jeg vil gå ind og vil læse min post på siden så logger den delvis ud for jeg kan godt gå en side tilbage så er jeg logget ind igen.
jeg bruger det her på alle mine sider som skal beskyttes

<?PHP
session_start();
include("includes/db.php");
if(!isset($_SESSION['username']))
  die("Du skal logge ind for at se denne side");
  $ko = $_SESSION['username'];
Avatar billede danco Nybegynder
14. oktober 2010 - 22:09 #1
For det første mangler du {    } på din if sætning.

Derudover forstår jeg ikke hvad dit problem er og hvordan det udmønter sig i dit script.
Avatar billede majbom Novice
14. oktober 2010 - 22:22 #2
-> #1 - der mangler ikke { } - der er kun én linje i if-sætningen...

-> #0 - det er umuligt at løse dit problem med den stump kode, den tjekker bare om en variabel er sat...

hvorfor mener du at den logger dig ud? hvad er det der ikke virker? hvad gør den / gør den ikke?

mere kode, link eller bedre forklaring - eller det hele! :)
Avatar billede cronaldo Nybegynder
15. oktober 2010 - 00:33 #3
-> #2: Jeg kan godt forstår hvis #1 er forvirret, for indrykningen af koden tyder på, at linjen med $ko-variablen også skal indgå i if-sætningen!


Svar:
----
Er det bare mig, der mener, at $_SESSION['username'] altid vil få isset() til at returnere true når han ved login sætter den (også selvom den bliver = "") .. jeg tror flg. vil virke bedre:


<?PHP
session_start();
include("includes/db.php");
if( empty($_SESSION['username']) )
  die("Du skal logge ind for at se denne side");
  $ko = $_SESSION['username'];
Avatar billede danco Nybegynder
15. oktober 2010 - 17:12 #4
if($_SESSION['username'] == null)

Er gerne den jeg selv bruger, og har virket fint for mig hidtil.
Til tider bruger jeg også en $_SESSION['logged_in'] som indeholder en boolean værdi. I såfald kan man jo bare bruge en:

if(!$_SESSION['logged_in'])
eller
if($_SESSION['logged_in'] == false)


cronaldo har fuldstændig ret, grunden til min kommentar var indrykningen der tydede på $ko hørte med. Generelt synes jeg nu også at det er pænt at bruge {} i sin kode for at lette læsbarheden. Men det er jo i så fald en smagssag.
Avatar billede majbom Novice
15. oktober 2010 - 21:18 #5
-> #4 - jeg foretrækker osse {} uanset antal linjer i løkker og if-sætninger...

-> #3 - €_SESSION['username'] bliver vel heller ikke sat til '' hvis man ikke logger ind?
Avatar billede cronaldo Nybegynder
16. oktober 2010 - 12:06 #6
Splazz:

Du har ret såfremt han tjekker om der er returneret nogle rækker - hvis det tjek ikke er med så vil isset 100% ikke virker - og da jeg ikke tror det er meningen, at "username" må være tomt er !empty() helt optimal!
Avatar billede bigtime Nybegynder
16. oktober 2010 - 12:15 #7
hey tak for de mange indlæg :D
jeg brugte det her
<?PHP
session_start();
include("includes/db.php");
if( empty($_SESSION['username']) ) {
  die("Du skal logge ind for at se denne side");
  $ko = $_SESSION['username'];
}
og det lader til at virke fint.

det der med $ko er bare fordi jeg ikke rigtig vidste hvad jeg skulle kalden den smiler
Avatar billede majbom Novice
16. oktober 2010 - 12:25 #8
det giver jo ingen mening at tjekke om en variabel er tom og - hvis den er - smide "indholdet" af den over i $ko?
Avatar billede danco Nybegynder
16. oktober 2010 - 12:52 #9
Jeg vil nok give splazz ret her,
din $ko vil enten indeholde null eller '' (kan ikke huske hvad en tom session indeholder).
Avatar billede bigtime Nybegynder
16. oktober 2010 - 13:48 #10
okay hmm lidt sort medn det virker.

her er hele den kode jeg bruger i toppen af alle de sider som skal være beskydes og kun kan ses hvis man er logget ind

<?PHP
session_start();
include("includes/db.php");
if( empty($_SESSION['username']) ) {
  die("Du skal logge ind for at se denne side");
  $ko = $_SESSION['username'];
}
 
  $bruger = mysql_query("select * from brugere WHERE username='$ko'")or die(mysql_error());
while ($row1 = mysql_fetch_array($bruger)){

$profilID = $row1["id"];
}
?>
og så bruger jeg bare $profilID længernede af siden
Avatar billede danco Nybegynder
16. oktober 2010 - 13:55 #11
Jamen så er det hele jo fint, hvis du har testet både ved at være logget ind, og ved ikke at være logget ind og det virker efter hensigten så er målet jo nået.
Avatar billede bigtime Nybegynder
16. oktober 2010 - 13:59 #12
hvordan ville du da lave den hvis det var dig :D
man er vel altid imødekommende for nye forslag
Avatar billede cronaldo Nybegynder
16. oktober 2010 - 20:20 #13
Hvad med bare at hente profil-idet ud i en $session? Så slap du for en masse database kald! du kunne fx kalde den $_SESSION['user_id']
Avatar billede majbom Novice
16. oktober 2010 - 21:03 #14
$ko = $_SESSION['username'];

skal vel ned efter if-sætningen, ellers kan du jo ikke bruge den i dit db-kald...
Avatar billede cronaldo Nybegynder
16. oktober 2010 - 22:49 #15
Det er jeg ret sikker på, at man kan, jo!
Avatar billede majbom Novice
17. oktober 2010 - 08:26 #16
-> #15 - var det svar til mig?
Avatar billede cronaldo Nybegynder
17. oktober 2010 - 10:49 #17
Ja :)
Men det kan godt være, at man skal sætte variablen uden for..

noget ala:

$ko = '';
if( $var == $var2 )
{
$ko = '';
}
Avatar billede majbom Novice
17. oktober 2010 - 16:27 #18
det giver bare stadig ingen mening, når man vil hente noget fra databasen ved hjælp af indholdet af variablen, når variablen er tom...
Avatar billede cronaldo Nybegynder
17. oktober 2010 - 18:50 #19
Variablen er ikke tom - du kan godt definere variablen indenfor løkker og benytte den udenfor.. Fandt jeg ud af gennem praksis - jeg havde samme mening som dig tidligere, men det virker mærkværdigvis!
Avatar billede majbom Novice
17. oktober 2010 - 21:06 #20
det er jeg klar over, men i og med at den kun kommer ind i løkken hvis variablen er tom, giver det ingen mening!
Avatar billede cronaldo Nybegynder
17. oktober 2010 - 22:47 #21
Lol - det havde jeg slet ikke lagt mærke til :D
Nej, jeg bøjer mig i støvet - faktisk lidt sjovt. ;) Du har hundrede procent ret - den skal udenfor løkken så :P
Avatar billede majbom Novice
18. oktober 2010 - 07:41 #22
tak :)
Avatar billede bigtime Nybegynder
25. oktober 2010 - 15:10 #23
:D
Avatar billede majbom Novice
10. november 2010 - 14:23 #24
hvad blev det til bigtime?
Avatar billede bigtime Nybegynder
03. marts 2011 - 12:01 #25
tja det er ved at være gammelt så
men det virker for det meste så ved ikke hvordan jeg skal fordele pointne.
er der nogen der vil harve nogen for  i kom da alle med forslag :D
Avatar billede majbom Novice
03. marts 2011 - 12:36 #26
vi kom vist ikke rigtig nogen vegne her - jeg springer over
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