Rigo Skrevet 6. mars 2012 Del Skrevet 6. mars 2012 Vel, jeg er igjen her med enda et spørsmål. Jeg har kommet frem til skriptet nedenfor. Dette skal vise filene som ligger i kunder mappen, og alt funket fint helt til jeg lastet det opp på webserveren min. Jeg utviklet og laget alt på xampp, og hadde null error meldinger der, men med en gang jeg lastet det opp på webserveren min fikk jeg disse errorene: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at PATH/fil.php:1) in PATH/fil.php on line 1 Warning: Cannot modify header information - headers already sent by (output started at PATH/fil.php:1) in PATH/fil.php on line 5 <?php session_start(); ?> <? // Sjekker om brukeren er på if (!isset($_SESSION['username'])) { header('Location: index.php'); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href="css/stil.css" type="text/css" /> <title>Kunder</title> </head> <div id="wrap"> <div id="innhold"> <div class="header">Oversikt over kunder</div> <?php // Mappe $dirPath = 'kunder'; if ($handle = opendir($dirPath)) { while (false !== ($file = readdir($handle))) { // Filer som skal ignoreres if ($file != "." && $file != ".." && $file != "index.php" && $file != "feil.php" && $file != "utvikler") { if (is_dir("$dirPath/$file")) { // Mappe echo "<img src='css/bilder/mappe.png' /> "; echo "<a href='kunder/$file'>$file</a><br>"; } else { // Fil echo "<a href='$file'>$file</a><br>"; } } } closedir($handle); } ?> <br/><i>Trykk på din mappe.</i> </div> <div id="meny"> <div class="header"> Meny </div> <a href="logout.php">Logg ut</a> </div> </div> </body> </html> Lenke til kommentar
MisterIT Skrevet 6. mars 2012 Del Skrevet 6. mars 2012 (endret) småtrøtt og den feilmeldingen kan oppstå pga mye rart. Kan si om "username" innholder noen nordiske tegn? hvilken os er det på webserveren og hvilken er det på pc-en?, har du noen merkelig path name der du bruker -, _, osv på webserveren? ~edit, og er kodene innholdet i fil.php filen? Endret 6. mars 2012 av MisterIT Lenke til kommentar
Leakim Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 (endret) Legg til <? ob_start(); ?> helt på toppen av .php siden din, og <? ob_flush(); ?> helt i bunnen av den. Ikke spør meg hvorfor denne feilen kommer opp, men har hatt samme problemet og fant ut at dette virket Rettelse. Gjør slik: <?php ob_start(); session_start(); // Sjekker om brukeren er på if (!isset($_SESSION['username'])) { header('Location: index.php'); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href="css/stil.css" type="text/css" /> <title>Kunder</title> </head> <div id="wrap"> <div id="innhold"> <div class="header">Oversikt over kunder</div> <?php // Mappe $dirPath = 'kunder'; if ($handle = opendir($dirPath)) { while (false !== ($file = readdir($handle))) { // Filer som skal ignoreres if ($file != "." && $file != ".." && $file != "index.php" && $file != "feil.php" && $file != "utvikler") { if (is_dir("$dirPath/$file")) { // Mappe echo "<img src='css/bilder/mappe.png' /> "; echo "<a href='kunder/$file'>$file</a><br>"; } else { // Fil echo "<a href='$file'>$file</a><br>"; } } } closedir($handle); } ob_flush(); ?> <br/><i>Trykk på din mappe.</i> </div> <div id="meny"> <div class="header"> Meny </div> <a href="logout.php">Logg ut</a> </div> </div> </body> </html> Endret 7. mars 2012 av Leakim1991 Lenke til kommentar
slacky Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 (endret) ALTID når du får error tilsvarnde: "header is already sent" så kan det løses dette med ob_start() & ob_end_flush() - Jeg mener tydlig å huske at jeg har nevnt dette for deg i en tidligere tråd. Edit: Om du får en error alà "Header is already sent.." så er løsningen å bruke ob_start(); ob_end_flush(); om jeg husker rett. Se PHP.net for vidre info om disse. Endret 7. mars 2012 av warpie Lenke til kommentar
Rigo Skrevet 7. mars 2012 Forfatter Del Skrevet 7. mars 2012 Hei, takk for svar! Jeg har prøvd med ob_start(); og ob_end_flush(); uten hell.. Får den samme erroren, noe som jeg ikke forstår. Burde ha nevnt at jeg allerede har prøvd dette i tråden, men men. Brukernavnet er noe så enkelt som admin. Kan det ha noe med at login siden min "outputer" noen form for session som ikke blir lukket? Index.php <?php session_start(); // Sjekker om brukeren er på if (isset($_SESSION['username'])) { header('Location: main'); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="css/stil.css" type="text/css" /> <title>Kunder</title> </head> <body> <div id="midtboks"> <div class="header">Logg inn</div> <table border="0"> <form method="POST" action="logginn.php"> <tr><td>Brukernavn</td><td>:</td><td><input type="text" name="username" size="20"></td></tr> <tr><td>Passord</td><td>:</td><td><input type="password" name="password" size="20"></td></tr> <tr><td> </td><td> </td><td><input type="submit" value="Logg inn"></td></tr> </form> </table> </div> </body> </html> Lenke til kommentar
Warz Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 (endret) Feilen skyldes at tekst har blitt printet ut før du redirecter, den beste måten å løse dette på er dermed å fjerne all tekst før redirect. En typisk feil kan være at noen hvite linjer eller mellomrom har klart å havne før <?php taggen, dette regnes som tekst og fører til en slik feil. Sjekk derfor nøye etter dette. Det bør ikke bli noen problemer så lenge ingen tekst outputer før redirecten. ob_start() og ob_end_flush() er en måte å løse problemet på, men det er på ingen måte den ultimate løsningen og etter min mening er det bedre å faktisk løse feilen i stedet for å "skjule" den ved hjelp av slike metoder. Endret 7. mars 2012 av Warz 1 Lenke til kommentar
MikkelRev Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 Er dette hele koden, eller brukes det noen includes/requires ? Lenke til kommentar
Rigo Skrevet 7. mars 2012 Forfatter Del Skrevet 7. mars 2012 (endret) Dette er hele koden. Har ingen includes eller requires, så jeg skjønner ikke hvorfor det ikke funker. Alt funket strålende på xampp, men så fort jeg flyttet det over til webserveren min fikk jeg errorer.. @Warz, problemet mitt er sessions, og den delen er jo helt først på alle sider, så jeg skjønner ikke hva du mener med at tekst har allerede blitt printet ut. Kunne du forklare denne delen litt nærmere? Jeg har ingen mellomrom før <?php taggen, og jeg har prøvd å fjerne alle mellomrom, og så å si det meste som kan gjøres. Endret 7. mars 2012 av Rigo Lenke til kommentar
MikkelRev Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 Høyreklikk nettleseren og vis sidekilde for å se om det har sneket seg inn noen tegn før <!DOCTYPE html. Fjern session_start midlertidig om nødvendig. Lenke til kommentar
Rigo Skrevet 7. mars 2012 Forfatter Del Skrevet 7. mars 2012 (endret) EDIT: Ser ut som jeg løste problemet med å legge til @ foran session. Får fortsatt en error om at jeg ikke kan bruke header, og jeg har sett på det og, men det funker ikke med ob_flush.. Har samme problem på mange av sidene mine, hvor jeg bruker header på f. eks linje 40. Alt funket fint på xampp, men gikk rett vest da jeg flyttet det over til webserveren.. Error: Warning: Cannot modify header information - headers already sent by (output started at /PATH/main.php:1) in /PATH/main.php on line 9 Full kilde: <?php ob_start(); @session_start(); // Sjekker om brukeren er på if (!isset($_SESSION['username'])) { header('Location: index.php'); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel="stylesheet" href="css/stil.css" type="text/css" /> <title>Kunder</title> </head> <div id="wrap"> <div id="innhold"> <div class="header">Oversikt over kunder</div> <?php // Mappe $dirPath = 'kunder'; if ($handle = opendir($dirPath)) { while (false !== ($file = readdir($handle))) { // Filer som skal ignoreres if ($file != "." && $file != ".." && $file != "index.php" && $file != "feil.php" && $file != "utvikler") { if (is_dir("$dirPath/$file")) { // Mappe echo "<img src='css/bilder/mappe.png' /> "; echo "<a href='kunder/$file'>$file</a><br>"; } else { // Fil echo "<a href='$file'>$file</a><br>"; } } } closedir($handle); } ob_flush(); ?> <br/><i>Trykk på din mappe.</i> </div> <div id="meny"> <div class="header"> Meny </div> <a href="loggut.php">Logg ut</a> </div> </div> </body> </html> Endret 7. mars 2012 av Rigo Lenke til kommentar
MisterIT Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 den andre linjen din. <?php session_start(); ?> <? sleng på <?php session_start(); ?> <?php Lenke til kommentar
Rigo Skrevet 7. mars 2012 Forfatter Del Skrevet 7. mars 2012 Det der hjalp ikke, men les over for å se hvordan jeg løste det. Har et annet problem, som du også ser på posten min ovenfor. Lenke til kommentar
MisterIT Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 kan du ta og echo ut ($_SESSION['username'])? Lenke til kommentar
Rigo Skrevet 7. mars 2012 Forfatter Del Skrevet 7. mars 2012 Jeg har jo fikset session delen. Problemet mitt nå er at den ikke lar meg bruke header, altså re-dirigering. Lenke til kommentar
Gjest Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 (endret) Du har forsatt ikke løst session delen, @ fjerner error-output. Dermed eksisterer forsatt problemet ditt. Endret 7. mars 2012 av Gjest Lenke til kommentar
MisterIT Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 Jeg har jo fikset session delen. Problemet mitt nå er at den ikke lar meg bruke header, altså re-dirigering. feilmeldingen indikere at det forsatt er noen feil her. Vennligst bare prøv Lenke til kommentar
Rigo Skrevet 7. mars 2012 Forfatter Del Skrevet 7. mars 2012 Jepp, funker fint å echo'e ut brukernavnet, men dette funker KUN om jeg har med @ foran session! Lenke til kommentar
Warz Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 (endret) Både session_start() og header() krevet at INGENTING har blitt sendt til browseren før de kjører. Eksempel på ugyldig kode: Eksempel 1: <?php session_start(); header('Location: index.php'); Eksempel 2: <?php session_start(); ?> <?php header('Location: index.php'); Ser du feilen? Ikke? Her er fasiten og feilen er markert med X Eksempel 1: X<?php session_start(); header('Location: index.php'); Eksempel 2: <?php session_start(); ?>X <?php header('Location: index.php'); Ved å sette @ foran session_start() vil du skjule feilen som advarer deg at noe har blitt printet ut. Ironisk nok fører feilmeldingen til output i seg selv, men å skjule denne outputen hjelper deg ikke siden feilmeldingen advarer om at du har output! Du må altså finne hvor du har blanke mellomrom eller linjer utenfor <?php ?> taggene. Jeg ville startet enkelt, ta mitt eksempel 1 og fiks feilen: <?php session_start(); if (!isset($_SESSION['username'])) { header('Location: index.php'); } Så lenge denne er plassert helt øverst i ditt php dokument og helt opp i hjørnet skal det fungere. Endret 7. mars 2012 av Warz Lenke til kommentar
Rigo Skrevet 7. mars 2012 Forfatter Del Skrevet 7. mars 2012 (endret) Jeg er 100% sikker på at det ikke er noen mellomrom. Har gått igjennom snart 20 ganger, og jeg skjønner ikke hvorfor dette ikke vil funke. Har jo fått så mange svar fra så mange av dere, og ingenting funker. <?php session_start(); if (!isset($_SESSION['username'])) { header('Location: index.php'); } ?> Funker ikke.. Får erroren igjen. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mounted-storage/home145/sub039/sc79186-ZXQA/kunder/main.php:1) in /mounted-storage/home145/sub039/sc79186-ZXQA/kunder/main.php on line 2 ------------------------------------------------------------------- Jeg får fortsatt denne erroren om jeg bruker det som står nedenfor: Warning: Cannot modify header information - headers already sent by (output started at /mounted-storage/home145/sub039/sc79186-ZXQA/kunder/main.php:1) in /mounted-storage/home145/sub039/sc79186-ZXQA/kunder/main.php on line 6 Dette er det jeg har øverst nå. <?php @session_start(); // Sjekker om brukeren er på if (!isset($_SESSION['username'])) { header('Location: index.php'); } echo ($_SESSION['username']) ?> Endret 7. mars 2012 av Rigo Lenke til kommentar
Warz Skrevet 7. mars 2012 Del Skrevet 7. mars 2012 (endret) Da må det være noe du ikke forteller oss, den koden fungerer nemlig uten problemer (testet selv). Filen du kjører heter main.php? Endret 7. mars 2012 av Warz 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å