Koodi on:
<?php ob_start(); /* Multi upload ;) Käytä miten lystäät. 15:12 24.2.2004 */ define("UPLOAD_DIRECTORY", "upload/"); // määritellään tiedostojen uusi koti, eli minne tiedostot upitetaan define("KUVA_KOKO", 9999999); // yksittäisen tiedoston maksimikoko list($paate) = array_reverse(explode(".",$_FILES['kuva']['name'])); $paate = strtolower($paate); if(!is_dir(UPLOAD_DIRECTORY)) { mkdir(UPLOAD_DIRECTORY, 0777); // jos hakemistoa ei ole olemassa, luodaan sellainen } if (isset($_FILES['kuva'])) { if ($paate != "gif") { die ("Valitsemasi tiedoston paate ei ollut sallittu"); } if($_FILES['kuva']['size'] > KUVA_KOKO) { echo "Liian iso tiedosto!<br>".MAX_SIZE." on raja"; } $i = 1; while (is_file(UPLOAD_DIRECTORY.$_FILES['kuva']['name'])) { $halkaistu = explode(".",$_FILES['kuva']['name']); $halkaistu[0] = $halkaistu[0]."_".$i; $tiedoston_nimi = implode(".",$halkaistu); $i++; } move_uploaded_file($_FILES['kuva']['tmp_name'], UPLOAD_DIRECTORY.$_FILES['kuva']['name']); // tallennetaan tiedosto serverille } ?> <form action="" method="post" ENCTYPE="multipart/form-data"> <?php ?> <input type="file" name="kuva" size="75"><br> <input type="submit" value="upload"></form><?php ob_end_flush(); exit; ?>
(Muokatti vinkistä.)
Virhe tuli rivil 29
Eiköhän virhe ole aika selvä, skriptisi ylittää sallitun aikarajan. Tästä voi olla apua.
Mitä koodin pitäisi tehdä?
Nyt koodi jumiutuu while-silmukkaan, jos lähetetty tiedosto on valmiiksi upload-hakemistossa.
Sen pitaisi uploadata servulle tiedosto, mutta jos on jo olemassa saman niminen tiedosto niin muokataan nimee while silmukassa.
Trilog:kyl mie sen tiedan mutta miksi se tulee?
Korvaa tämä
<?php while (is_file(UPLOAD_DIRECTORY.$_FILES['kuva']['name'])) { $halkaistu = explode(".",$_FILES['kuva']['name']); $halkaistu[0] = $halkaistu[0]."_".$i; $tiedoston_nimi = implode(".",$halkaistu); $i++; } move_uploaded_file($_FILES['kuva']['tmp_name'], UPLOAD_DIRECTORY.$_FILES['kuva']['name']); // tallennetaan tiedosto serverille ?>
tällä
<?php $tiedoston_nimi = $_FILES['kuva']['name']; while (is_file(UPLOAD_DIRECTORY.$tiedoston_nimi)) { $halkaistu = explode(".",$_FILES['kuva']['name']); $halkaistu[0] = $halkaistu[0]."_".$i; $tiedoston_nimi = implode(".",$halkaistu); $i++; } move_uploaded_file($_FILES['kuva']['tmp_name'], UPLOAD_DIRECTORY.$tiedoston_nimi); // tallennetaan tiedosto serverille ?>
Alkuperäisen koodin ongelma on, että while-silmukassa verrataan koko ajan alkuperäistä tiedoston nimeä. Korjatussa versiossa while-silmukassa verrataan muutettua tiedoston nimeä.
alker kirjoitti:
Trilog:kyl mie sen tiedan mutta miksi se tulee?
Skriptin suorittaminen kestää PHP-tulkilla yli sallitun aikarajan (tässä 10sek). Kun aikaraja ylittyy skriptin suoritus lopetetaan pakotetusti.
Ny tuli toinen ongelma.
Joku vois kertoa paljon 95kt on bitteinä ja paljon 5mt on bitteinä :)
1 megatavu = 1024 kilotavua
1 kilotavu = 1024 tavua
1 tavu = 8 bittiä
95 kilotavua = 97280 tavua = 778240 bittiä
5 megatavua = 5120 kilotavua = 5242880 tavua = 41943040 bittiä
Google on muuten aika näppärä näihin muunnoksiin:
http://www.google.fi/search?q=95 kilobytes in bits
http://www.google.fi/search?q=5 megabytes in bits
alker kirjoitti:
Ny tuli toinen ongelma.
Joku vois kertoa paljon 95kt on bitteinä ja paljon 5mt on bitteinä :)
Kannattaa vielä muistaa, että mt tarkoittaa millitavua, Mt megatavua. Tarkoitin varmaan arvoja 95 kt ja 5 Mt. Huomaa myös välilyönnit.
Kannattaa myös muistaa, että millitavu ei ole kauhean relevantti käsite, sillä itse ainakin tykkään puuhastella vähintään kahdeksasosatavuilla. Sekoittamisen vaaraa tuskin lienee...
Jos halutaan vielä pilkkua nysvätä niin kilo, mega, giga jne. ovat SI-kertoimia, jotka on 1000 potensseja (eli 10^(3*n)) eivätkä 1024 potensseja (eli 2^(10*n)). Noille jälkimmäisille, eli binäärikertoimille on kehitetty veikeät johdannaisnimet kuten binäärikilo eli kibi, binäärimega eli mebi ja jotka lyhennetään Ki, Mi, Gi, Ti jne.
Eli en jaksanu tehä uutta aihetta niin lisään tänne.
Virhe ilmoitus:"Parse error: syntax error, unexpected T_VARIABLE in"
Kieli:PHP
Koodi:
<?PHP include("session.php"); if (!$_SESSION['tunnus']) { header("Location:login.php"); } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Lataamokeskus :.: Tiedostoja sinulle</title> <link rel="stylesheet" href="style.css" type="text/css" /> </head> <body> <div id="logo"> <div class="logo"> <img src="logo.png"> </div> </div> <div id="wrap"> <div class="navi"> <?PHP include("navi.php"); ?> </div> <div id="left"> <h1>Tervetuloa!</h1> <P> <?php include("fun.php"); if (!$_SESSION['tunnus']) { header("Location:index.php"); } else { yhdista(); if (!$_POST['nimi'] or !$_POST['kuvaus'] or !$_POST['linkki'] or !$_POST['kuvat']) { echo "Jätit jonkun kohdan tyhjäksi!"; } else { define("UPLOAD_DIRECTORY", "upload/"); // määritellään tiedostojen uusi koti, eli minne tiedostot upitetaan define("KUVA_KOKO", 778240); // yksittäisen tiedoston maksimikoko define("LINKKI_KOKO", 41943040); // yksittäisen tiedoston maksimikoko list($kuva_paate) = array_reverse(explode(".",$_FILES['kuva']['name'])); $kuva_paate = strtolower($kuva_paate); list($linkki_paate) = array_reverse(explode(".",$_FILES['linkki']['name'])); $linkki_paate = strtolower($kuva_paate); if(!is_dir(UPLOAD_DIRECTORY)) { mkdir(UPLOAD_DIRECTORY, 0777); // jos hakemistoa ei ole olemassa, luodaan sellainen } if ($_FILES['kuva']['name'] == "") { die ("Et ole lisännyt kuva tiedostoa mitä uploadata"); } if ($_FILES['linkki']['name'] == "") { die ("Et ole lisännyt lataus tiedostoa mitä uploadata"); } if ($kuva_paate != "gif" or $kuva_paate != "png" or $kuva_paate != "bmp" or $kuva_paate != "tif" or $kuva_paate != "tiff" or $kuva_paate != "GIF" or $kuva_paate != "PNG" $kuva_paate != "BMP" or $kuva_paate != "TIF" or $kuva_paate != "TIFF") { die ("Valitsemasi kuva tiedoston paate ei ollut sallittu"); } if ($linkki_paate != "rar" or $linkki_paate != "zip" or $linkki_paate != "RAR" or $linkki_paate != "ZIP") { die ("Valitsemasi lataus tiedoston paate ei ollut sallittu"); } if($_FILES['kuva']['size'] > KUVA_KOKO) { die ("Liian iso kuva tiedosto!<br>95kt on raja"); } if($_FILES['linkki']['size'] > LINKKI_KOKO) { die ("Liian iso kuva tiedosto!<br>5mt on raja"); } $i = 1; $tiedoston_nimi = $_FILES['kuva']['name']; while (is_file(UPLOAD_DIRECTORY.$tiedoston_nimi)) { $halkaistu = explode(".",$_FILES['kuva']['name']); $halkaistu[0] = $halkaistu[0]."_".$i; $tiedoston_nimi = implode(".",$halkaistu); $i++; } $i2 = 1; $tiedoston_nimi2 = $_FILES['kuva']['name']; while (is_file(UPLOAD_DIRECTORY.$tiedoston_nimi2)) { $halkaistu = explode(".",$_FILES['kuva']['name']); $halkaistu[0] = $halkaistu[0]."_".$i; $tiedoston_nimi2 = implode(".",$halkaistu); $i2++; } move_uploaded_file($_FILES['kuva']['tmp_name'], UPLOAD_DIRECTORY.$tiedoston_nimi); // tallennetaan tiedosto serverille move_uploaded_file($_FILES['linkki']['tmp_name'], UPLOAD_DIRECTORY.$tiedoston_nimi2); // tallennetaan tiedosto serverille $nimi = mysql_real_escape_string($_POST['nimi']); $linkki = mysql_real_escape_string("http://fames.jouluserver.com/".UPLOAD_DIRECTORY.$tiedoston_nimi2); $kuvaus = mysql_real_escape_string($_POST['kuvaus']); $kuva = mysql_real_escape_string("http://fames.jouluserver.com/".UPLOAD_DIRECTORY.$tiedoston_nimi); $koko = $_FILES['linkki'],['size']; $tunnus = $_SESSION['tunnus']; $kate = $_POST['kate']; $sql = "insert into lataamo (id,tunnus,nimi,linkki,kuvaus,kuva,kate,koko) values (0,'$tunnus','$nimi','$linkki','$kuvaus','$kuva','$kate','$koko')"; $tulos = mysql_query($sql); echo "Tiedoston lisäys onnistui!"; ?> <br> <a href="index.php">Takaisin etusivulle</a> <?php } } ?> <br><br><br><br><br> <P> </p> </div></div> <div id="right"> <div class="box"><div class="box_padding"> <b>Mainos</b> </div></div> <div class="in"> <p> <?php include("sivu.php"); ?> </p> <p> </div> <div class="box"><div class="box_padding"> <b><?php include("linkki.php"); ?></b> </div></div> <div id="footer"> <div class="bottom"> <a href="index.php">Etusivu</a> <a href="info.php">Info</a> <a href="login.php">Kirjaudu</a> <a href="register.php">Rekisteröidy</a> <a href="tiedostot.php">Tiedostot</a> <a href="etsi.php">Etsi</a> <br /> <br /><br /> <br /> <div class="ftext"> © Joona "Tietovirus" Nevalainen & Aleksi "Alker" Tanskanen 2009<br><br> <?php include("banner.php"); ?> </div></div> </div> </body> </html> <?php } ?>
Virhe rivi:72
Puuttuu or:
or $kuva_paate != "PNG" $kuva_paate != "BMP" or
Tuon tarkistuksen voisi tehdä fiksumminkin:
$sallitut_paatteet = array("gif", "png", "bmp", "tif", "tiff"); if (!in_array(strtolower($kuva_paate), $sallitut_paatteet)) { ...
Et salli jpg-kuvia? (jpg, jpeg)
Aihe on jo aika vanha, joten et voi enää vastata siihen.