tomarild Skrevet 6. november 2010 Del Skrevet 6. november 2010 Hallo! Jeg har noen spørsmål om forskjellige PHP-funksjoner. Jeg har fikset et login-system som fungerer fint, men er ute etter følgende: Når noen har logget seg inn, så vil jeg at brukernavnet til vedkommende skal dukke opp der hvor login-boksene var tidligere. Jeg trodde jeg kunne gjøre noe slikt: <?php if (isset($_SESSION['user_id'])) {?> Velkomme <?php echo $_SESSION['user_name'];?> Det neste er at jeg har et skjema hvor de innloggede kan poste meldinger til en slags gjestebok. Jeg vil at de skal slippe å skrive inn sitt eget brukernavn, men at det automatisk dukker opp når innlegget vises. Kan jeg kanskje bruke samme funksjon til disse to tingene? Håper noen vet råd. Lenke til kommentar
Inaktivbruker_101125 Skrevet 6. november 2010 Del Skrevet 6. november 2010 (endret) Hvorfor bytter du mellom PHP og HTML? Det er like så greit å kjøre alt i PHP: <?php if (isset($_SESSION['user_id'])) { echo "Velkommen ".$_SESSION['user_name']."!"; } ?> Koden er ikke testet, men du forstår sikkert prinsippet. Angående gjesteboken kan du bruke cookies eller $_SESSION for å mellomlagre brukernavnet, som sendes som et argument til databasen der meldingene oppbevares. Ellers ser jeg ikke helt problemstillingen din – kanskje du vil utdype mer? Gjerne med kode. Endret 6. november 2010 av Ishq Lenke til kommentar
legg1 Skrevet 7. november 2010 Del Skrevet 7. november 2010 (endret) Måten jeg håndterer dette på selv, er å kjøre en sjekk. Jeg lagrer $_SESSION['uid'] (User-ID). Om bruker ikke er logget in: <? $id = $_SESSION['id']; // Hente $_SESSION['id'] til en variabel, så slipper man repetere seg selv så mye if(!$id) { // Om de ikke er logget inn, så kommer login skjemaet include("loginnskjema.php"); } else if($id) { // Ellers får de opp medlemslinker, som f.eks endre passord, se på meldinger etc. include("medlemslinker.php"); } ?> Nå kan du skrive formen din til gjestebok med allerede satt brukernavn. f.eks et skjult felt med brukernavnet <input type="hidden" name="brukernavn" value="<? echo $_SESSION['username']; ?>" /> Endret 7. november 2010 av legg1 Lenke til kommentar
duckyduck Skrevet 7. november 2010 Del Skrevet 7. november 2010 (endret) Først og fremst hvis du skal gjøre dette så er det en fordel å ha samme navn i $_SESSION variabelen Så er det også viktig at du åpner session på hver side med en session_start() funksjon altså: <?php session_start(); if (isset($_SESSION['user_name'])) { echo "Velkommen ".$_SESSION['user_name']."!"; } ?> Men session har sine ulemper når det kommer til diverse nettlesere og gjennomføring etc. Så jeg anbefaler cookie. Login.php // DATABASEKODE setcookie("user", $_POST['username']); andre.php if(isset($_COOKIE['user'])) echo "Velkommen, " . $_COOKIE['user'] . "!"; Endret 7. november 2010 av duckyduck Lenke til kommentar
Thomas. Skrevet 7. november 2010 Del Skrevet 7. november 2010 Nå kan du skrive formen din til gjestebok med allerede satt brukernavn. f.eks et skjult felt med brukernavnet <input type="hidden" name="brukernavn" value="<? echo $_SESSION['username']; ?>" /> Hva er vitsen med det, da? Kan enkelt postes uten brukernavn da. Hvorfor ikke bare hente ut brukernavn når man submit'er formen? <?php if(isset($_POST['submit'])) { $brukernavn = $_SESSION['brukernavn']; } ?> Lenke til kommentar
legg1 Skrevet 7. november 2010 Del Skrevet 7. november 2010 Nå kan du skrive formen din til gjestebok med allerede satt brukernavn. f.eks et skjult felt med brukernavnet <input type="hidden" name="brukernavn" value="<? echo $_SESSION['username']; ?>" /> Hva er vitsen med det, da? Kan enkelt postes uten brukernavn da. Hvorfor ikke bare hente ut brukernavn når man submit'er formen? <?php if(isset($_POST['submit'])) { $brukernavn = $_SESSION['brukernavn']; } ?> Ja, stemmer. beklager den der hehe, lettere trøtt når jeg satte meg her i dag ^^ Lenke til kommentar
tomarild Skrevet 7. november 2010 Forfatter Del Skrevet 7. november 2010 Tusen takk alle sammen. Setter stor pris på hjelpen. Skal teste ut dette her. Først og fremst hvis du skal gjøre dette så er det en fordel å ha samme navn i $_SESSION variabelen Ja, du har et poeng der Lenke til kommentar
AlecTBM Skrevet 7. november 2010 Del Skrevet 7. november 2010 Først og fremst hvis du skal gjøre dette så er det en fordel å ha samme navn i $_SESSION variabelen Så er det også viktig at du åpner session på hver side med en session_start() funksjon altså: <?php session_start(); if (isset($_SESSION['user_name'])) { echo "Velkommen ".$_SESSION['user_name']."!"; } ?> Men session har sine ulemper når det kommer til diverse nettlesere og gjennomføring etc. Så jeg anbefaler cookie. Login.php // DATABASEKODE setcookie("user", $_POST['username']); andre.php if(isset($_COOKIE['user'])) echo "Velkommen, " . $_COOKIE['user'] . "!"; Nei nei nei Hvilke ulemper har session med nettlesere? Eneste session har med nettlesere å gjøre er at det blir sendt en session cookie. Ikke bruk cookies på denne måten, da kan brukeren lett bytte ut navnet sitt som brukes (alle cookies lagres på PC, mens session bare lagrer en ID) Lenke til kommentar
duckyduck Skrevet 13. november 2010 Del Skrevet 13. november 2010 Du har et poeng AlecTBM. Bare jeg som tenkte litt for raskt. Hvis man kjører en session inn noe som er i en iframe så vil det bli problemer med session. Session er sikrere, bruk det Lenke til kommentar
AlecTBM Skrevet 14. november 2010 Del Skrevet 14. november 2010 Iframe vil ikke gi problemer for sessions, med mindre iframen er fra et annet (sub)domene. Og da hjelper ikke cookies uansett. Og iframe skal man ikke bruke med mindre det strengt tatt er veldig nødvendig Lenke til kommentar
Sk!ppy Skrevet 14. november 2010 Del Skrevet 14. november 2010 Hvordan kan du i det heletattanbefalle cookies?!!! Det eneste cookies er godt for, og ikke det engang mener jeg, er å huske hvor lenge brukeren skal være innlogget!! Det er kanskje det mest usikre du kan bruke! Lenke til kommentar
duckyduck Skrevet 14. november 2010 Del Skrevet 14. november 2010 Ro ned litt her, Sk!ppy. Cookies, imo, kan fint brukes så lenge de skjekkes opp mot database kontinuerlig. Det er mange forskjellige ting man kan bruke cookie til også. Men jeg innrømmer at det var en dårlig anbefaling. Lenke til kommentar
Sk!ppy Skrevet 14. november 2010 Del Skrevet 14. november 2010 Ja, om det sjkekkes opp mot databasen kontinuerlig, som er dumt ytelsemessig. Jeg foreslår å lage en session, lagre brukernavn i databasen og hente ut brukernavn ved hjelp av iden i session. Lenke til kommentar
Ernie Skrevet 14. november 2010 Del Skrevet 14. november 2010 Hvordan kan du i det heletattanbefalle cookies?!!! Det eneste cookies er godt for, og ikke det engang mener jeg, er å huske hvor lenge brukeren skal være innlogget!! Det er kanskje det mest usikre du kan bruke! Jeg tror du bør revudere det der litt. «Cookie» er på ingen måter noe unyttig. Det kan brukes til å lagre f.eks. innstillinger som ikke har noen betydning for andre brukere eller sikkerheten til nettstedet, og det kan gjøres uten at brukeren engang er en registert bruker av systemet. I forhold til sikkerhet har dog «cookie» liten nytte utover å holde på en referanse til noe på serveren. Lenke til kommentar
AlecTBM Skrevet 14. november 2010 Del Skrevet 14. november 2010 Cookie til å holde en brukerhash for autologin feks Lenke til kommentar
tomarild Skrevet 24. november 2010 Forfatter Del Skrevet 24. november 2010 Hei dere! Jeg sliter fortsatt med å få til dette her jeg, til tross for mange gode forslag og råd. Tenkte kanskje det holdt med noe sånt som dette <?php if (isset($_SESSION['user_id'])) { echo "Jeg er medlem"; } else { echo "Jeg er ikke medlem"; } ?> (laget enkelt bare for å teste) ..... men det funker ikke. Om jeg er logget inn eller ikke, så står det kun "Jeg er ikke medlem". Hvis dette hadde funket kunne jeg jo lagt inn noen knapper i echo-kommandoen der. Noen som føler seg kallet? Lenke til kommentar
Sk!ppy Skrevet 24. november 2010 Del Skrevet 24. november 2010 Har du startet sessions da? Lenke til kommentar
tomarild Skrevet 24. november 2010 Forfatter Del Skrevet 24. november 2010 (endret) Har du startet sessions da? Session skal være startet ved login. <?php session_start(); session_regenerate_id (true); $_SESSION['user_id']= $id; $_SESSION['alder'] = $alder; $_SESSION['full_name'] = $full_name; $_SESSION['user_name'] = $user_name; $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']); ?> Men jeg har kanskje ikke startet det på den aktuelle siden som man blir redirected til. Åssen kan det se ut? Endret 24. november 2010 av tomarild Lenke til kommentar
Sk!ppy Skrevet 24. november 2010 Del Skrevet 24. november 2010 Samme måte som ellers. Lenke til kommentar
AlecTBM Skrevet 24. november 2010 Del Skrevet 24. november 2010 Du må bruke session_start() på alle sider som skal bruke sessions. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå