webby1 Skrevet 24. juni 2010 Rapporter Del Skrevet 24. juni 2010 (endret) Jeg får opp denne feilen, når jeg legger til header-funksjonen: Warning: Cannot modify header information - headers already sent by (output started at.... Her er PHP-koden: if (isset($_POST['lastopp'])) { $tilkobling = mysql_connect("localhost", "root", ""); mysql_select_db ("skatetube", $tilkobling); $sql = "INSERT INTO video (videotittel, videolink, bruker, videobeskrivelse) VALUES ('" . $_POST['videotittel'] . "', '" . $_POST['videolink'] . "', '$bruker', '" . $_POST['videobeskrivelse'] . "');"; $resultat = mysql_query($sql, $tilkobling); header("Location: profil.php"); exit; } Hva er galt? Takk på forhånd:) Endret 24. juni 2010 av webby1 Lenke til kommentar
JarlG Skrevet 24. juni 2010 Rapporter Del Skrevet 24. juni 2010 Først av alt, vis oss heile feilmeldinga, og linjane som nemnes i feilmeldinga. Tipper på at du allereie har brukt ein funksjon som resulterer i html (echo, print, skrive ting utenfor <?php ?>), noko som gjer at du ikkje kan bruke header-funksjonen. header() må alltid komme før alle ting som outputtes i "vis kildekode". Lenke til kommentar
JohndoeMAKT Skrevet 24. juni 2010 Rapporter Del Skrevet 24. juni 2010 Legg også til feilhåndtering rundt database-kallene og jeg regner med at du er sikker på at ingenting ondt kommer inn i SQL-strengen din fra $_POST? Lenke til kommentar
webby1 Skrevet 24. juni 2010 Forfatter Rapporter Del Skrevet 24. juni 2010 Legger til hele feilmeldingen og php-koden: Warning: Cannot modify header information - headers already sent by (output started at /var/www/arbeid/skatetube/avi.php:14) in /var/www/arbeid/skatetube/avi.php on line 147 if (isset($_SESSION['innlogget'])) { $tilkobling = mysql_connect("localhost", "root", ""); mysql_select_db ("skatetube", $tilkobling); $query = "SELECT * FROM kontoer WHERE bruker='" . $_SESSION['navn'] . "'"; $result = mysql_query($query, $tilkobling); if ($r = mysql_fetch_array($result)) { $bruker = $r['bruker']; $passord = $r['passord']; $kontoid = $r['kontoid']; $navn = $r['navn']; $hjemsted = $r['hjemsted']; $fodt = $r['alder']; $mail = $r['mail']; $biografi = $r['biografi']; echo '<div id="wrap"> <div id="header"> <div id="hleft"> <a href="profil.php" id="logo"></a> <ul id="menu"> <li><a href="#"><span class="bla">Last opp</span></a></li> <li><a href="#"><span class="gronn">Topp 20</span></a></li> <li><a href="#"><span class="rosa">Om oss</span></a></li> </ul> <div class="hfooter"></div> <input type="text" size="50" id="sok" name="bruker"> <input type="submit" name="knapp" class="knapp" value="Sk"> </div> <div id="hright"> <div id="hboks"> <div id="boksl"> <h2>'; if ($navn == true){ echo $navn; } else { echo $bruker; } echo '</h2> <div id="bruker"> <ul> <li><a href="#"><span>Meldinger</span></a></li> <li><a href="#"><span>Favoritter</span></a></li> <li><a href="#"><span>Venner</span></a></li> <li><a href="innstillinger.php"><span>Innstillinger</span></a></li> </ul> </div> </div> </div> </div> <div class="hfooter"></div> <div id="innhold"> <div id="venstre">'; echo '<div id="lastopp">'; echo '<h3>Filtype: AVI</h3>'; if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) { //Check if the file is JPEG image and it's size is less than 350Kb $filename = basename($_FILES['uploaded_file']['name']); $ext = substr($filename, strrpos($filename, '.') + 1); if (($ext == "avi") && ($_FILES["uploaded_file"]["type"] == "video/x-msvideo") && ($_FILES["uploaded_file"]["size"] < 104857643243)) { //Determine the path to which we want to save this file $newname = dirname(__FILE__).'/upload/'.$filename; //Check if the file with the same name is already exists on the server if (!file_exists($newname)) { //Attempt to move the uploaded file to it's new place if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) { echo "Opplasting var vellykket! Klikk p lagreknappen for publisere videoen"; } else { echo "En feil oppsto under opplasting. Pr¿v igjen"; } } else { echo "".$_FILES["uploaded_file"]["name"]." eksisterer allerede i vr database"; } } else { echo "Feil: Valg av feil filtype eller for stor video. Maks: 100 MB"; } } else { echo ""; } echo '<div class="lasten">'; echo ' <form enctype="multipart/form-data" action="" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" /> <input name="uploaded_file" type="file" /> <input type="submit" value="Upload" class="knappen" /> </form> '; echo '</div>'; echo ' <form action="" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="startUpload();"> <ul> '; echo '<li><input type="text" name="videolink" class="last" value="'. $_FILES['uploaded_file']['name'] .'" /><label>Filnavn</label></li> <li><input type="text" name="videotittel" class="last" /><label>Tittel</li> <li><textarea name="videobeskrivelse" id="sqlquery" cols="40" rows="8.75"></textarea><label class="area">Beskrivelse</label></li> <li><input type="submit" name="lastopp" value="Legg til video" class="last" /> </ul>'; echo' </label> </p> </li> </form>'; if (isset($_POST['lastopp'])) { $tilkobling = mysql_connect("localhost", "root", ""); mysql_select_db ("skatetube", $tilkobling); $sql = "INSERT INTO video (videotittel, videolink, bruker, videobeskrivelse) VALUES ('" . $_POST['videotittel'] . "', '" . $_POST['videolink'] . "', '$bruker', '" . $_POST['videobeskrivelse'] . "');"; $resultat = mysql_query($sql, $tilkobling); header( "refresh:5;url=avi.php" ); exit; } else { } echo '</div>'; echo '</div>'; echo '</div> <div id="hoyre"> <div id="siste"> <h3>Mine videoer</h3> <ul> </ul> <div class="hfooter"></div> <p><a href="video.php">Legg til video</a><br /> <a href="#">Flere videoer</a></p> </div> <div id="topp"> </div> </div> </div> </div></div> <div class="hfooter"></div> <div id="footer"></div>'; } else {} } else { echo "Du er ikke logget inn"; } Lenke til kommentar
Runar Skrevet 24. juni 2010 Rapporter Del Skrevet 24. juni 2010 Jeg siterer JarlG, som har fullstendig rett: Tipper på at du allereie har brukt ein funksjon som resulterer i html (echo, print, skrive ting utenfor <?php ?>), noko som gjer at du ikkje kan bruke header-funksjonen. header() må alltid komme før alle ting som outputtes i "vis kildekode". Lenke til kommentar
webby1 Skrevet 24. juni 2010 Forfatter Rapporter Del Skrevet 24. juni 2010 Oki! Men er det en annen funksjonen enn header som gjør at den går til en annen side etter å ha fullført "lastopp"? Lenke til kommentar
webby1 Skrevet 24. juni 2010 Forfatter Rapporter Del Skrevet 24. juni 2010 Har prøvd å finne en løsning til å oppdatere uten header, men ikke funnet noen. Noen som har noen tips? Lenke til kommentar
Runar Skrevet 24. juni 2010 Rapporter Del Skrevet 24. juni 2010 Du kan jo prøve output buffering. Lenke til kommentar
JohndoeMAKT Skrevet 24. juni 2010 Rapporter Del Skrevet 24. juni 2010 Eventuelt legge if (isset($_POST['lastopp'])) høyere opp i siden. Eller faktisk ha en MVC-struktur eller noe annet penere. Lenke til kommentar
Warz Skrevet 25. juni 2010 Rapporter Del Skrevet 25. juni 2010 På linje 131: header( "refresh:5;url=avi.php" ); Bytt til: echo '<head><meta http-equiv="refresh" content="5; URL=avi.php"></head>'; Lenke til kommentar
Runar Skrevet 25. juni 2010 Rapporter Del Skrevet 25. juni 2010 På linje 131: header( "refresh:5;url=avi.php" ); Bytt til: echo '<head><meta http-equiv="refresh" content="5; URL=avi.php"></head>'; Du bør ha en veldig god forklaring på hvorfor trådstarter skal gjøre dette. Har du lest koden han postet? Er du klar over at man ikke kan bruke meta-taggen midt inne i et dokument på den måten? Jeg skal ikke en gang begynne å snakke om ! Lenke til kommentar
Warz Skrevet 25. juni 2010 Rapporter Del Skrevet 25. juni 2010 Jeg skulle ha presisert at det var en dårlig idé, sorry! Når det er sagt så er jeg ganske sikker på at meta tag fungerer selv i body, nå ser jeg ingen som helst antydning til hverken head eller body i dette dokumentet, men mulig ikke hele koden vises. Beste hadde selvsagt vært å ikke gi noen output først. Finnes det et bra alternativ til meta refresh som er gyldig? I såfall vil jeg gjerne høre hva det er! vel, javascript skal vel alltids funke da men. Lenke til kommentar
Runar Skrevet 25. juni 2010 Rapporter Del Skrevet 25. juni 2010 Når det er sagt så er jeg ganske sikker på at meta tag fungerer selv i body [...] http://htmldog.com/reference/htmltags/meta/ Jeg mener fortsatt det beste løsningen er å bruke output buffering eller lignende. Javascript vil kun fungere hvis brukeren har aktivert det, så det er dumt å la en så viktig funksjon være avhengig av noe brukeren ikke nødvendigvis har. Lenke til kommentar
Warz Skrevet 25. juni 2010 Rapporter Del Skrevet 25. juni 2010 Når det er sagt så er jeg ganske sikker på at meta tag fungerer selv i body [...] http://htmldog.com/r.../htmltags/meta/ Jeg mener fortsatt det beste løsningen er å bruke output buffering eller lignende. Javascript vil kun fungere hvis brukeren har aktivert det, så det er dumt å la en så viktig funksjon være avhengig av noe brukeren ikke nødvendigvis har. Jeg er fullstendig klar over at taggen ikke skal plasseres utenfor header, men det betyr ikke at det IKKE funker. Bare for å være sikker så testet jeg nå denne koden og det fungerte i Chrome, FireFox og Internet explorer: <html><head><title>test</title></head><body> <p>hei</p> <meta http-equiv="refresh" content="5; URL=http://vg.no"> </body> </html> 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å