jic Skrevet 17. desember 2003 Del Skrevet 17. desember 2003 Warning: Cannot send session cache limiter - headers already sent (output started at /mnt/home4/e/ec/ecards/public_html/index.php:10) in /mnt/home4/e/ec/ecards/public_html/meny.php on line 9 får denne feil melding. Linje 9 i meny.php session_start(); if(!isset($username)) { Alle filene som er i katalogen include vises ikke. Lenke til kommentar
???????? Skrevet 17. desember 2003 Del Skrevet 17. desember 2003 Problemet er at "headers already sent ". Er det noen form for output i scriptet før du starter en session, genererer serveren automatisk en html header, slik at browseren vet hva den skal vise. Pass på at det ikke er noen mellomrom eller andre output før headeren settes. Bruk eventuelle @ for å fjerne warnings og notic. Lenke til kommentar
jic Skrevet 18. desember 2003 Forfatter Del Skrevet 18. desember 2003 (endret) Problemet er at "headers already sent ". Er det noen form for output i scriptet før du starter en session, genererer serveren automatisk en html header, slik at browseren vet hva den skal vise. Pass på at det ikke er noen mellomrom eller andre output før headeren settes. Bruk eventuelle @ for å fjerne warnings og notic. Hei takk for at du tok tid for å svare meg. Jeg greide å løse dette problemet men fikk en annen problem. echo " <? $sjekk_side = isset($side); if ($sjekk_side == 1) { if (@fopen('include/$side.php', 'r')) { include ('include/$side.php'); } if (!(@fopen('include/$side.php', 'r'))) { include('include/404.php'); } } if ($sjekk_side <> 1) { include('include/index.php'); } ?>"; Jeg får feil mld Hvis jeg bruker " disse mens hvis jeg bruker ' så virker ikke include scriptet. Har du noen tips på¨hva jeg kan gjøre. } ?>"; Endret 18. desember 2003 av jic Lenke til kommentar
FuLu Skrevet 18. desember 2003 Del Skrevet 18. desember 2003 Er utrolig viktig å gi oss selve feilmeldingen, det kan være alt fra "file not found" til parse error. Kunne også vært kjekt med kodesnutten fra noen linjer før/etter og selve linja som feiler. Først da har vi noe å gå på. Hvis du tar en titt på første linje på koden du nettopp ga oss nå, hvorfor har du den koden inni en echo blokk? Vil også kommentere måten du includer filer på. Den er ikke akuratt gjennomførbar hvis du vil gjøre siden noe mer secure. Hvis jeg sier index.php?side=../config og du f.eks har en config.php i det området og har f.eks lagret brukernavn/passord til databasen der.. så er den metoden veldig usikker. Du bør sjekke i det minste at realpath'en e.l. er innenfor det området du vil at filer skal includes fra. Eventuelt sjekke om $side ikke inneholder masse ../ foran, ja den kan sikkert oppstå flere enn en gang, så du må eventuelt filtrere vekk alle ../ som oppstår. Lenke til kommentar
Torbjørn Skrevet 18. desember 2003 Del Skrevet 18. desember 2003 hvorfor skriver du ut php kode med echo??? Lenke til kommentar
jic Skrevet 18. desember 2003 Forfatter Del Skrevet 18. desember 2003 (endret) hvorfor skriver du ut php kode med echo??? Hmm jeg lastet ned en ferdig login script. Her er koden for scriptet <?php include("config.php"); $connect = mysql_connect("$user_hostname", "$user_username", "$user_password"); mysql_select_db("$user_database", $connect); session_start(); if(!isset($username)) { [COLOR=red]echo "<form method=\"POST\" action=$PHP_SELF> <center> <table> <tr> <td>Username:</td> <td><input type=\"text\" name=\"username\" size=\"20\"></td> </tr> <tr> <td>Password:</td> <td><input type=\"password\" name=\"password\" size=\"20\"></td> </tr> <tr> <td colspan=\"2\"> <p align=\"center\"><input type=\"submit\" value=\"Submit\" name=\"submit\"></td> </tr> </table> </center> </form>"; exit;[/COLOR]}[/color]session_register("username"); session_register("password"); $sql = "SELECT * FROM users WHERE username = \"$username\" AND password = \"$password\""; $result = @mysql_query($sql) or die("No."); if(mysql_num_rows($result) == "0") { session_unregister("username"); session_unregister("password"); echo "<h2 align=center>Wrong username and password, try again</h2>"; exit; } $username = mysql_result($result,0,"username"); mysql_close($connect); ?> Endret 18. desember 2003 av jic Lenke til kommentar
jic Skrevet 18. desember 2003 Forfatter Del Skrevet 18. desember 2003 Er utrolig viktig å gi oss selve feilmeldingen, det kan være alt fra "file not found" til parse error. Kunne også vært kjekt med kodesnutten fra noen linjer før/etter og selve linja som feiler. Først da har vi noe å gå på. Hvis du tar en titt på første linje på koden du nettopp ga oss nå, hvorfor har du den koden inni en echo blokk? Vil også kommentere måten du includer filer på. Den er ikke akuratt gjennomførbar hvis du vil gjøre siden noe mer secure. Hvis jeg sier index.php?side=../config og du f.eks har en config.php i det området og har f.eks lagret brukernavn/passord til databasen der.. så er den metoden veldig usikker. Du bør sjekke i det minste at realpath'en e.l. er innenfor det området du vil at filer skal includes fra. Eventuelt sjekke om $side ikke inneholder masse ../ foran, ja den kan sikkert oppstå flere enn en gang, så du må eventuelt filtrere vekk alle ../ som oppstår. Har du noen enklere include script???? En annen ting fins det noen login script m/Mysql hvor det ikke er session får ikke ting til å fungere med den. Lenke til kommentar
???????? Skrevet 18. desember 2003 Del Skrevet 18. desember 2003 Hei, sessions er gankse vanlig og nyttig når du utvikler bruker php - så du burde bruke litt tid på å lære det da det vil gjøre hverdagen lettere! I nyeste utgaven av PHP magacine finner du en bra artikkel om sessions. Denne utgaven finner du også GRATIS på hjemmesidene deres, da det er første gagnen de publiserer bladet elektronisk! Ta en kikk på www.php-mag.net Lenke til kommentar
Torbjørn Skrevet 19. desember 2003 Del Skrevet 19. desember 2003 hmmm... noen burde lage en sticky " headers already sent " post å legge øverste her i forumet. Lenke til kommentar
FuLu Skrevet 19. desember 2003 Del Skrevet 19. desember 2003 Sessions funker flott, hvis man har riktig versjon av PHP ISP'en som leverer webhotellet for en nettside jeg utvikler, har desverre PHP 4.1.2 fortsatt på serveren. Om de noen sinne har planer om å oppgradere er en annen sak. Poenget var, har du siste versjon av PHP, så "tror" jeg du skal være fri for bugs på det feltet. Hvis du er også en uheldig person som har et webhotell med ikke så ny PHP innstallert, så kan det hende du vil oppleve problemer. Et tips når det gjelder forholdet logikk og output. Jeg foretrekker å ha håndtering / logikk / bearbeiding av data, som f.eks valg av side, login, logout, oppdatering av database, tukling med session data, validering av parametere som kommer via GET, POST osv helt først. Rekkefølge hvordan kodeflyt kan være: - logikk - output av html På den måten slipper du å tenke på session_start skaper krøll. Samme vil gjelde hvis du engang skulle bruke header() til f.eks redirect eller sette content-type. Og du trenger bare bruke session_start en gang. Den kunne egentlig egnet seg inni config.php fila di. Når det gjelder den koden du postet nå sist så kunne jeg ikke se noe galt (kanskje det er noe galt er bare litt sent på natta nå). Eneste jeg la merke til var bruken av $PHP_SELF, du har vel register_globals = on? Dette er ikke på som default i de siste utgivelsene av PHP. 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å