Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Php session error

Skapad av SkalmanOnDrugs, 2011-06-14 03:47 i Webbutveckling & Programmering

1 667
17 inlägg
0 poäng
SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
0
Jag försöker göra så att om man är inloggad ska något visas och om man inte är inloggad ska något annat visas. När man loggar in sparas ens username i $_SESSION['username']

Koden jag använder är följande

<?php
if(!isset($_SESSION['username'])){
include("menu.php");
}else{
include("shit.php");
?>

Jag får dock error "Parse error: syntax error, unexpected $end in /home/a2899491/public_html/v2/index.php on line 69"

På line 69 står det för övrigt ingenting, det är slutet av htmlkoden. Det verkar som att det är isset som förstör. Ifall jag tar bort issetfunktionen så får jag inget error.

Finns det något annat sätt att lösa det på? Eller vet någon hur man ska göra för att få det o funka?

Du måste konstruera ytterligare pyloner

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0
svslutar du else-satsen där i slutet?

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

TheCheesePolice
Visningsbild
P 29 Hjälte 871 inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
include("shit.php");
}
?>

cower
Visningsbild
P 44 Lund Hjälte 1 042 inlägg
0
Svar till SkalmanOnDrugs [Gå till post]:
Låter som om det är fel i sidan du gör include på.

Nattefrost
Visningsbild
P 34 Trollhättan Hjälte 5 035 inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
Du har ingen } efter else.

Guess I'm just another jerk in your social network

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0
Ifall det där är hela din kod så är det ett till fel i den, men det är inte det som genererar felmeddelandet. Eftersom du inte kör med session_start() i början av dokumentet kommer inte $_SESSION att finnas och därför kommer alltid shit.php att inkluderas oavsett om man är inloggad heller inte.

Jag är ond!

SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
Trådskapare
0





Svar till cower [Gå till post]:







Tack för alla svaren. Ja, det var ett jättelitet fel som fick allt att flippa ur. Ska nog inte sitta och programmera 4 på morgonen x) missar alla småfel.

Du måste konstruera ytterligare pyloner

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
We've all been there! :D
JAg satt och fick ryck häromdagen när jag skulle includea en fil. Visste att allt stämde, syntax stämde etc.
Men när jag skulle använda include-filen så fick jag ingen respons. Dött på andra änden liksom.

Visade sig att filen jag skulle includea egentligen hette filnamn .php, istället för filnamn.php :<<<<

Satt säkert i typ fem timmar med skiten.

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
Trådskapare
0

Svar till Syndafloden [Gå till post]:
Hahaha xD så kan det gå...

btw har en till snabb fråga här när vi ändå är igång. Jag är inte speciellt hemma med MySQL än har precis börjat använda det... hur returnerar jag värdet av en variabel som jag har i en table och lägger den i $_SESSION så jag kan sen kan använda den?

Säg till exempel att jag gjort ett inloggningssystem. När man loggar in med username och password så vill jag även kunna använda andra uppgifter om den användaren som ligger i samma rad i tabellen... t.ex. ålder och bostadsort säger vi.

Du måste konstruera ytterligare pyloner

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
Uhm, säg att du har tabellen Users, med t ex. userid, username, password, realname etc.

I MySQL (phpmyadmin) så gör du userid eller id eller så till primary key.

I inloggningsfunktionen vill du använda värdet från en POST-array för att kolla om det matchar värden i databasen.

Någon skriver in användaruppgifter i ett formulär, och skickar det via POST för att sedan bli inloggad.

$clean_psw = $_POST['password'];
$clean_user = $_POST['username'];
/* Kör bara i grova drag. Alla värden ska städas och saniteras och kontrolleras etc. */
$login = "SELECT * FROM Users WHERE username LIKE $clean_user AND password === $clean_psw";
$retrieved_user = mysql_query($login);

if ($retreved_user != null) {
$_SESSION['userinfo'] = array(); // En multidimensional array, wooo.
/* Här bör man bli inloggad, tror jag. Eller ja här kollar amn att den hämtade något från DBn som inte är null */
$_SESSION['userinfo'] = mysql_fetch_assoc($retrieved_user);

}


Hämta användardata där username och password stämmer
Om den hämtade något - loopa igenom resourcen
skapa $_SESSION-variabler med samma namn och värde som raden den hämtar. $_SESSION['userinfo']['username'] ska ge "Kalle".
Inte säker på sista arrayen där, hur den funkar riktigt. Men jag kommer inte på något, och det är i väldigt grova drag alltihop.


HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
Trådskapare
0

Svar till Syndafloden [Gå till post]:
Hmm... låter lite krångligt, men tack för svaret ^^ Ska sitta o pilla lite på det här nu och se om jag kommer ngn vart.

Du måste konstruera ytterligare pyloner

Syndafloden
Visningsbild
P 33 Karlstad Hjälte 10 705 inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
Ah, rätt enkelt (tror jag).

Skicka data från ett formulär (inloggning, POST).
Tvätta indatan (Säkerhetsåtgärd för att slippa sql-injektioner).
Skicka en mysql_query som letar efter alla rader där username LIKE username, och password === password (har jag för mig. Det är för att anv. namn inte ksa vara skiftlägeskänsligt, men password ska var aväldigt noga).

Om du får tillbaka en rad, så finns användaren.
Om användaren finns, sätt upp en typ $_SESSION['userinfo'] = array();
Då gör du en array i en array.

När du skickar din query får du tillbaka en mysql resource, en särskild datatyp.
mysql_fetch_assoc hämtar en array utifrån dina värden.
Sätt session-userinfo-arrayen lika med mysql_fetch_assoc().

Nu bör du ha en array som all din databasinfo sparas i (ett bra tips är att utesluta password ur den.)


Hoppas du förstår lite i alla fall! Det mesta finns det resurser på på internet (i överflöd), men återkom om du har fler frågor.

HEH, TIME FOR A BIT OF A ROUGH AND TUMBLE

Nattefrost
Visningsbild
P 34 Trollhättan Hjälte 5 035 inlägg
0
Svar till Tvillingen [Gå till post]:
Det du skriver är förvisso rätt, men det är inte det som genererar felet. Det som genererar denna typ av parse error är när man inte har avslutat något korrekt.



Svar till SkalmanOnDrugs [Gå till post]:
Det som är nice med php nu är att du inte behöver använda {} om du inte vill. Det är mycket jobbigare att se om du har avslutat alla sådana än om du kör med endif. Det tycker i alla fall jag.

Exempel:

if(true):
do something
endif;

http://php.net/manual/en/control-structures.alternative-syntax.php

Smaken är som baken.

Guess I'm just another jerk in your social network

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0

Svar till Nattefrost [Gå till post]:
Det vet jag och det var därför jag skrev "Ifall det där är hela din kod så är det ett till fel i den, men det är inte det som genererar felmeddelandet.". (:

Ett tillägg med den alternativa syntaxen är att den är ganska händig om man ska skriva HTML-kod mitt i. Exempelvis:

Ett stycke php-kod:
<?php foreach($links as $url => $item): ?>
<a href="<?php echo $url; ?>"><?php echo $item; ?></a>
<?php endforeach; ?>



Medan vi ändå är igång med hur man kan göra saker kortare kan jag nämna att om det endast är en rad som behövs inte måsvingar och man behöver inte heller avsluta loopen eller if-satsen.

Exempel:
Ett stycke php-kod:
if(true)
echo 'sant';
else
echo 'falskt';

Jag är ond!

Nattefrost
Visningsbild
P 34 Trollhättan Hjälte 5 035 inlägg
0

Svar till Tvillingen [Gå till post]:
Jag vet att du skrev det, men det är fortfarande avsaknad av måsvingen som orsakade detta parse error.

Guess I'm just another jerk in your social network

jnylen
Visningsbild
P 31 Hjälte 44 inlägg
0

Svar till SkalmanOnDrugs [Gå till post]:
Om du ska pilla med MySQL, glöm inte skydda skiten mot SQL Injections, t ex $userid = (int) $_POST['userid'];
Om det är id dvs.

Jag hette tidigare beatx

Tvillingen
Visningsbild
P 31 Hjälte 3 117 inlägg
0
Ett riktigt bra lösning för att skydda sig mot sql injections är att använda sig av prepared statements, som finns i Mysqli och PDO. Att använda sig av Mysqli eller PDO har även fördelen med att vara modernare än mysql_-funktionerna som har gjort sitt (:

http://php.net/manual/en/book.mysqli.php
http://php.net/manual/en/book.pdo.php

Jag är ond!


Forum » Datorer & IT » Webbutveckling & Programmering » Php session error

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

2 utloggade

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons