Kuvanlisäyksessä on ongelma. Kuvat eivät lataudu palvelimelle ja sivulla, joka luo pikkukuvan (Location: http://xxxxxxxxxx.net/galleria/kuvat/thumb.php?kuva={$id}.jpg) tulee tällainen virheviesti:
"Warning: getimagesize(24.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home/intxxxx/public_html/ilmera/galleria/kuvat/thumb.php on line 9"
Tässä upload.php:
<?php ob_start() ?> <?php //muodostetaan yhteys tietokantapalvelimeen $yhteys = mysql_connect("localhost", "intxxx_xxx", "xxxxx") or die("Yhdistäminen ei onnistunut!"); //valitaan tietokanta mysql_selectdb("intxxxx_kgalleria", $yhteys) or die("Tietokantaa ei löytynyt!"); //haetaan tietokannan suurin kuvan id-numero $kysely = "SELECT MAX(ID) FROM galleria"; $haku = mysql_query($kysely, $yhteys); $id = mysql_result($haku, "0"); //lisättävän kuvan id-numero $id = $id + 1; ////////////////////////////////////// // Kuvan lähetys ///////////////////// ////////////////////////////////////// //Tiedoston suurin sallittu koko (kt) $max_size = 5000000; //Minne kuvat kopioidaan $hakemisto = "/home/intxxxx/public_html/ilmera/galleria/kuvat/"; function uploadimg() { global $hakemisto; global $max_size; global $logging; global $id; $file_size = $_FILES['file']['size']; $file_name = $_FILES['file']['name']; $file_tmp_name = $_FILES['file']['tmp_name']; $file_type = $_FILES['file']['type']; //Tarkistetaan onko tiedosto jo olemassa if (file_exists("$hakemisto" . "$file_name")) { die("Samanniminen tiedosto on jo ladattu!"); } //Tarkistetaan onko annettu tiedosto liian suuri if ((int)$file_size > (int)$max_size) { die("Tiedoston koko on liian suuri! Suurin sallittu koko on " . $max_size . " tavua."); } //Tarkistetaan onko annettu tiedosto oikean tyyppinen $type = explode("/", $file_type); $type = $type[0]; if ($type != "image") { die("Tiedosto ei ole kuva"); } //Siirretään tiedosto hakemistoon ja nimetään kuvan id:n mukaiseksi move_uploaded_file ($file_tmp_name, $hakemisto . $id . ".jpg"); echo "Kuva on lisätty onnistuneesti!"; } if ($file) { uploadimg(); } //otetaan talteen lähetetyt tiedot $kuvaaja = $_POST['kuvaaja']; $kuvateksti = $_POST['kuvateksti']; $paiva = $_POST['pp']; $valtio = $_POST['valtio']; $paikka = $_POST['paikka']; $liikennepaikka = $_POST['liikennepaikka']; $rataosa = $_POST['rataosa']; $vesistö = $_POST['vesistö']; $satama = $_POST['satama']; $lentokenttä = $_POST['lentokenttä']; //otetaan talteen aika, jolloin kuva lähetettiin $aika = time(); //lisätään tiedot tietokantaan $kysely = "INSERT INTO galleria SET id = '$id', lisäysaika = '$aika', kuvaaja = '$kuvaaja', kuvauspäivä = '$paiva', kuvateksti = '$kuvateksti', valtio = '$valtio', kuvauspaikka = '$paikka', liikennepaikka = '$liikennepaikka', rataosa = '$rataosa', satama = '$satama', vesistö = '$vesistö', lentokenttä = '$lentokenttä'"; //suoritetaan kysely $haku = mysql_query($kysely, $yhteys); //ohjataan sivulle, joka luo pikkukuvan ./kuvat/thumbs -hakemistoon header("Location: http://xxxxxxxxxx.net/galleria/kuvat/thumb.php?kuva={$id}.jpg"); ?>
Oletko tarkistanut, että kuva on siellä missä pitäisi? On myös yleensä turhaa ottaa id talteen ja lähettää takaisin MySQL:älle, jos id on asetettu oikein eli id INT PRIMARY KEY AUTO_INCREMENT
. Kannattaisi varmaan nimetä tiedostot jollain toisella tavalla, esim.
Hennkka kirjoitti:
Oletko tarkistanut, että kuva on siellä missä pitäisi?
Mikä kuva? Ongelman ydin on se että kuvia ei pysty lähettämään palvelimelle.
Kaikki muut tiedot tallentuvat, siis ne jotka tallennetaan tietokantaan.
Miksi ohjaat käyttäjän sitten sivulle, jos et ole tarkistanut, onko kuvan siirto edes onnistunut.
Eli kaiken järjen mukaan sinun pitäisi tarkistaa aina, onko tiedosto edes siirtynyt, onko tiedosto ollut edes kuva, onko mitään tiedostoa edes lähetetty, yms. yms.
Vasta kun kaikki ehdot ovat toteutuneet siirrät käyttäjän sivulle "joka luo thumbit".
Itse en tuon scriptisi perusteella edes tiedä, missä asetat $file-muuttujalle arvon, onko kenties palvelimella register_globals päällä, vai onko siellä joskus semmoinen ollut?
Tuo ei ole minun tekemäni. Sain sen eräältä tähän projektiin kuuluvalta.
Taidan tehdä tuon skriptin ihan uudelleen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.