Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: formin tiedostokentät hukassa

alker [31.08.2009 12:27:17]

#

HTML formi:

<?php
include("session.php");
if (!$_SESSION['tunnus'] ) {
header("Location:login.php");
}
else {
include("fun.php");
yhdista();
$sql = "select id,nimi from kate";
$tulos = mysql_query($sql);
?>
<html>
<head>
<title>Fin Web Design</title>
<link rel="stylesheet" type="text/css" href="tyyli.css">
</head>
<body>
<div id="sivu">
<div id="logo"><br><img src="logo.png"></div>
<div id="navi">
<?php
include("navi.php");
?>
</div>
<br>
<div id="sisalto">

Kuvan maksimi koko on 95kt.<br>
Lataustiedoston maksimi koko on 5mt.
<form method="POST" action="upload2.php">
Kirjoita sivupohjan nimi:<br>
<input type="text" name="nimi"><br>
Kirjoita kuvaus sivupohjalle:<br>
<input type="text" name="kuvaus"><br>
<input type="hidden" name="upload" value="<?php print time(); ?>">
<?php
include("upload.php");
?>
Valitse kategoria sivupohjalle:<br>
<select name="kate">
<?php

while ($rivi = mysql_fetch_assoc($tulos)) {
echo "<option value=\"";
echo $rivi['id'];
echo "\" >";
echo $rivi['nimi'];"</option>";
}
?>
</select><br>
<input type="submit" value="Lisää sivupohja">
</form>
</div>
</div>
<div id="copy"><br>
&copy Fin Web Design
</div>
</body>
</html>
<?php
}
?>

Käsittely:

<?php
include("session.php");
if (!$_SESSION['tunnus']) {
header("Location:login.php");
}
$_SESSION['kate'] = $_POST['kate'];
$_SESSION['nimi'] = $_POST['nimi'];
$_SESSION['kuvaus'] = $_POST['kuvaus'];

$conf['filetypes'] = array("bmp","jpg","jpeg","png","swf","svg","txt","gif");
$conf['linkki_filetypes'] = array("rar","zip","RAR","zip");
$conf['kuva_filesize'] = 1024; // Max. tiedoston koko Kt. Eli 1024 = 1MB, 2048 = 2MB.
$conf['linkki_filesize'] = 5120; // Max. tiedoston koko Kt. Eli 1024 = 1MB, 2048 = 2MB.
$conf['kansio'] = "upload/"; // Kansio minne kaikki laitetaan.
$conf['fix_pahat_kirjaimet'] = true; // Muuttaa ääkköset aakkosiksi, poistaa ()[] jne.
$conf['polku'] = ""; // Laitetaan alkuun joku osoite. Älä muuta jos et tiedä mitä olet tekemässä
$conf['banned_ips'] = array("123.123.123.123","123.123.123.123"); // IP:t, jotka eivät voi lisätä tiedostoja.
$conf['imagecheck'] = true; // Tarkistaa onko kyseessä oikeasti kuva, jos tiedostopääte on GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM tai WBMP.
$conf['nayta_tiedostot'] = true; // Näyttää listauksen upatuista tiedostoista
$conf['session'] = "upload"; // SESSION:in nimi. Ei tarvitse muuttaa, jos et tajua sitä.
$conf['charset'] = "ISO-8859-15"; // Merkistö. Yleensä ISO-8859-15

// Itse scripta. Älä koske enää ;)

session_start();
// Merkistö
header('Content-type: text/html; charset='.$conf['charset']);

// Tarvittavat functiot
function humanread($bytes) {
    $pp = array("B","KB","MB","GB","TB");
    $menossa = 0;
    while ($bytes >= 1024) {
        $menossa++;
        $bytes = $bytes / 1024;
    }
    return round($bytes,2).$pp[$menossa];
}

function msgdie($msg,$error=false) {
    print('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset='.$conf['charset'].'">
    <LINK rel="stylesheet" type="text/css" href="'.$_SERVER['PHP_SELF'].'?css">
    <title>File Upload - Ilmoitus</title>
    <style type="text/css">

    </style>
  </head>
  <body>
    <center>');


if ($error == true) print '<div id="fileupload_error"><h1>Virhe</h1>';
else  print '<div class="fileupload"><h1 id="ilo">Ilmoitus</h1>';

print ('
            '.$msg.'
        </div>
    </center>
  </body>
</html>');
exit();

}


// Jos uppaus?
if (is_numeric($_POST['upload'])) {

    // Aikatarkistukset
    if (strlen($_POST['upload']) > (strlen(time()) * 100)) msgdie("Jotain ihmeellistä on tapahtunut...",true);
    if ($_POST['upload'] > time()) msgdie("Olet etuajassa.",true);
    if ($_SESSION[$conf['session']] == $_POST['upload']) msgdie("Olet nähtävästi yrittänyt painaa Refresh nappulaa. Paina mielummin <a href='".$_SERVER['PHP_SELF']."'>tästä</a>.",true);

    // Tiedostolle tarkistukset
    if ($_FILES['kuva']['size'] > ($conf['kuva_filesize'] * 1024)) die("Kuva tiedosto on liian suuri. Se voi olla vain 95kt");
    if ($_FILES['linkki']['size'] > ($conf['linkki_filesize'] * 1024)) die("Lataus tiedosto on liian suuri. Se voi olla vain 5Mt");
    if ($_FILES['linkki']['size'] == 0) msgdie("Et lähettänyt lataus tiedostoa",true);
    if ($_FILES['kuva']['size'] == 0) msgdie("Et lähettänyt kuva tiedostoa",true);

    // Tiedostonpääte
    list($kuva_paate) = array_reverse(explode(".",$_FILES['kuva']['name']));
    $kuva_paate = strtolower($kuva_paate);
    if ($kuva_paate == "") msgdie("Kuva tiedostolla ei ollut päätettä!",true);
    $sallitaanko = false;
    foreach ($conf['filetypes'] as $sallittu) {
        if ($kuva_paate == strtolower($sallittu)) $sallitaanko = true;
    }
    list($linkki_paate) = array_reverse(explode(".",$_FILES['linkki']['name']));
    $linkki_paate = strtolower($linkki_paate);
    if ($linkki_paate == "") msgdie("Lataus tiedostolla ei ollut päätettä!",true);
    $sallitaanko = false;
    foreach ($conf['linkki_filetypes'] as $sallittu) {
        if ($linkki_paate == strtolower($sallittu)) $sallitaanko = true;
    }
    if ($sallitaanko == false) msgdie("Jonkun Tiedoston pääte  ei ole sallittu!",true);


}


    // Nyt on siirron aika
    $kuva_nimi_orginal = basename($_FILES['kuva']['name']);

    $linkki_nimi_orginal = basename($_FILES['linkki']['name']);


    // ÄÄKKÖSKORJAUS
    if ($conf['fix_pahat_kirjaimet'] == true) {
        $kuva_nimi_orginal = str_replace(array("ä","ö","å","Ä","Ö","Å"," "),array("a","o","a","A","O","A","_"),$kuva_nimi_orginal);
        $kuva_nimi_orginal = preg_replace("[^a-zA-Z0-9]","",$kuva_nimi_orginal);
    }
    if ($conf['fix_pahat_kirjaimet'] == true) {
        $linkki_nimi_orginal = str_replace(array("ä","ö","å","Ä","Ö","Å"," "),array("a","o","a","A","O","A","_"),$linkki_nimi_orginal);
        $linkki_nimi_orginal = preg_replace("[^a-zA-Z0-9]","",$linkki_nimi_orginal);
    }
    // Harvinaista - mutta mahdollista
    if ($linkki_nimi_orginal == "") { $linkki_nimi_orginal = base64_encode(basename($_FILES['kuva']['name']));  }
    if ($kuva_nimi_orginal == "") { $kuva_nimi_orginal = base64_encode(basename($_FILES['kuva']['name']));  }


    $linkki_nimi = $linkki_nimi_orginal;

    $kuva_nimi = $kuva_nimi_orginal;

    $i = 1;
    while (is_file($conf['kansio'].$linkki_nimi)) {
        // Tiedosto on jo olemassa, eli keksitään uusi nimi
        $halkaistu = explode(".",$linkki_nimi_orginal);
        $halkaistu[0] = $halkaistu[0]."_".$i;
        $linkki_nimi = implode(".",$halkaistu);
        $i++;
    }
        $i = 1;
    while (is_file($conf['kansio'].$kuva_nimi)) {
        // Tiedosto on jo olemassa, eli keksitään uusi nimi
        $halkaistu = explode(".",$kuva_nimi_orginal);
        $halkaistu[0] = $halkaistu[0]."_".$i;
        $kuva_nimi = implode(".",$halkaistu);
        $i++;
    }
    if (@move_uploaded_file($_FILES['kuva']['tmp_name'], $conf['kansio'].$kuva_nimi)) {
        $polku = $conf['polku'].$conf['kansio'].$kuva_nimi;
        if ($conf['polku'] != "") $polku = $conf['polku'].$kuva_nimi;

        $_SESSION['kuva'] = "http://fames.jouluserver.com/upload/".$kuva_nimi;
    } else {
        msgdie("Tiedoston siirto ei onnistunut. Tämä johtuu mm. seuraavista syistä:<br>* Tällä scriptillä ei ole oikeuksia upload kansioon.<br><br>Palaa <a href='".$_SERVER['PHP_SELF']."'>tästä</a> takaisin.",true);
    }

    if (@move_uploaded_file($_FILES['linkki']['tmp_name'], $conf['kansio'].$linkki_nimi)) {
        $polku = $conf['polku'].$conf['kansio'].$linkki_nimi;
        if ($conf['polku'] != "") $polku = $conf['polku'].$linkki_nimi;

        $_SESSION['linkki'] = "http://fames.jouluserver.com/upload/".$linkki_nimi;

    } else {
        msgdie("Tiedoston siirto ei onnistunut. Tämä johtuu mm. seuraavista syistä:<br>* Tällä scriptillä ei ole oikeuksia upload kansioon.<br><br>Palaa <a href='".$_SERVER['PHP_SELF']."'>tästä</a> takaisin.",true);
    }

header("Location:lisaa2.php");
?>

Ja html formin file kohdat:

Anna kuvatiedosto:<br>
<input type="file" name="kuva" id="kuva"><br>
Anna lataustiedosto:<br>
<input type="file" name="linkki" id="linkki"><br>

Eli virheenä tulee:
Virhe

Et lähettänyt lataus tiedostoa

Niko [31.08.2009 12:53:31]

#

formista puuttuu enkoodaustyyppi. Eli lisäät form tagiin

enctype="multipart/form-data"

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta