Noniin, monet pyysivät että laittaisin koodin mukaan niin eiköhän sitä saisi tulla muistakaa että koodin kopiointi on ehdottomasti kielettyä mikäli tulen näkemään koodin niin sakkoja saa tulla tulemaan vaan.
Ongelmat:
1. Kun uploadaa kuvan niin sitten se tulee esimerkiksi tuohon malliin: http://palveluntarjoaja.com/~tunnus/upload// <- Tuossa oli suoraan yksi virhe, kaksi kauttamerkkiä.
2. Osoite tulee tälläiseen malliin: http://palveluntarjoaja.com/~tunnus/upload//kuvagif <- taas virhe joka on seuraavalainen elikkä kuvagif, mutta se on pääte gif siis siihen ei tule sitä pistettä .gif.
Tiedostot ovat tässä:
* class.php * <?php class imageupload { // Julkiset variablet public $path = ''; public $errorStr = ''; public $imgurl = ''; // Salaiset variablet private $_errors = array(); private $_params = array(); private $_lang = array(); private $_maxsize = 1048576; public $_im_status = false; // Julkiset methodit public function __construct () { require 'config.php'; $this->_types = $types; $this->_lang = $lang; $this->_upload_dir = $upload_dir; $this->_maxsize = $maxsize; $this->path = $PHP_SELF; if (is_array($_FILES['__upload'])) { $this->_params = $_FILES['__upload']; if (function_exists('exif_imagetype')) $this->_doSafeUpload(); else $this->_doUpload(); if (count($this->_errors) > 0) $this->_errorMsg(); } } public function allowTypes () { $str = ''; if (count($this->_types) > 0) { $str = 'Sallitut tiedostot: ('; $str .= implode(', ', $this->_types); $str .= ')'; } return $str; } // Salaiset methodit private function _doSafeUpload () { preg_match('/\.([a-zA-Z]+?)$/', $this->_params['name'], $matches); if (exif_imagetype($this->_params['tmp_name']) && in_array(strtolower($matches[1]), $this->_types)) { if ($this->_params['size'] > $this->_maxsize) $this->_errors[] = $this->_lang['E_SIZE']; else $this->_im_status = true; if ($this->_im_status == true) { $ext = substr($this->_params['name'], -4); $this->new_name = md5(time()).$ext; move_uploaded_file($this->_params['tmp_name'], $this->_upload_dir.$this->new_name); $this->imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).$this->_upload_dir.$this->new_name; } } else $this->_errors[] = $this->_lang['E_TYPE']; } private function _doUpload () { preg_match('/\.([a-zA-Z]+?)$/', $this->_params['name'], $matches); if(in_array(strtolower($matches[1]), $this->_types)) { if ($this->_params['size'] > $this->_maxsize) $this->_errors[] = $this->_lang['E_SIZE']; else $this->_im_status = true; if ($this->_im_status == true) { $ext = substr($this->_params['name'], -3); $this->new_name = md5(time()).$ext; move_uploaded_file($this->_params['tmp_name'], $this->_upload_dir.$this->new_name); $this->imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).$this->_upload_dir.'/'.$this->new_name; } } else $this->_errors[] = $this->_lang['E_TYPE']; } function _errorMsg() { $this->errorStr = implode('<br />', $this->_errors); } } ?>
* confing.php * <?php $title = 'Upload'; $types = array('jpg', 'gif', 'png', 'psd', 'pspimage'); $maxsize = 1024*1024; $upload_dir = 'uploads/'; $lang['E_TYPE'] = 'Väärä tiedostotyyppi.'; $lang['E_SIZE'] = 'Tiedoston koko ei ole hyväksyttävä!'; ?>
* index.php * <?php require 'class.php'; require 'config.php'; $im = new imageupload(); if ($_POST['__upload']) { header('location: '.'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF'])); } ?> <h1>Valitse tiedosto:</h1> <form method="post" enctype="multipart/form-data" action="<?=$im->path?>"> <input type="file" name="__upload" size="72" /> <input type="submit" value="Upload" /> </form> <p><?=$im->allowTypes();?></p> <div class="block"> <? if ($im->_im_status == true) { echo '<h2>Lataus onnistui!</h2> <p class="codes"> <label for="codebb">Foorumin allekirjoitus:</label><br /> <input type="text" size="40" value="[url='.$im->imgurl.'][img='.$im->imgurl.'[/img][/url]" onclick="javascript:this.focus();this.select();" readonly="true" /><br /> <label for="codedirect">Suora linkki:</label><br /> <input type="text" size="40" value="'.$im->imgurl.'" onclick="javascript:this.focus();this.select();" readonly="true" /></p>'; } elseif (!empty($im->errorStr)) { echo '<div class="errors">'.$im->errorStr.'</div>'; } else { echo ' '; } ?>
Sitten tässä on mukana log.dat, ja kansio upload mutta niissä on tyhjää.
Mikäli auttaa niin siitä kiitos jo etukäteen ja mikäli haluaa neuvoa messengerin kautta niin listaan vaan tällänen pätkä: cx.sixpack@hotmail.com
Mod. edit: php-tagit
Ois tämä varmaan mahtunu ensimmäiseen lankaankin.
Tulostele noita arvoja ($this->new_name
, $ext
) suorituksen eri vaiheissa niin eiköhän se sillä selviä. Tiedoston päätteen voit hakea myös pathinfo-funktiolla, ja kuvan tyypin voisi hakea mime-tyypistä. Antaisit luokalle mieluummin parametrina nuo $types
yms., luokasta saisi samalla useamman instanssin, nyt tuo toimii singletonin tapaan.
Äh, voitko laittaa nyt noi koodit että miten laitan?
Koodi näyttää ensinnäkin olevan suora kopio osoitteesta:
http://kreoton.net/php-image-upload-script
Funktiossa _doUpload on rivi:
$this->imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).$this->_upload_dir.'/'.$this->new_name;
Tämä voisi olla kohta, jossa kuvan osoitteeseen ilmestyy ylimääräinen kenoviiva. Kokeile siis muuttaa tämä rivi samanlaiseksi kuin funktiossa _doSafeUpload.
Lisäksi funktiossa _doUpload on rivi:
$ext = substr($this->_params['name'], -3);
Ongelmana on, että pääte lisätään tiedoston nimeen sellaisenaan, jolloin väliin ei myöskään tule pistettä. Tässäkin voisi toimia paremmin funktion _doSafeUpload tyyli:
$ext = substr($this->_params['name'], -4);
Tosin tämä toimii vain, jos tiedoston päätteessä on kolme kirjainta. Parempi ratkaisu on esim. tsurigan ehdottama pathinfo-funktio:
$pinfo = pathinfo($this->_params['name']); $ext = "." . $pinfo["extension"];
Neme kirjoitti:
Noniin, monet pyysivät että laittaisin koodin mukaan niin eiköhän sitä saisi tulla muistakaa että koodin kopiointi on ehdottomasti kielettyä mikäli tulen näkemään koodin niin sakkoja saa tulla tulemaan vaan.
I lol'd
Jaaniin onhan tuossa mime-tyypin tarkistus nyt kun tarkemmin kahtuu. pathinfon voi myös korvata one-linerilla substr( $path, strrpos( $path, '.' ) )
(piste tulee mukaan), jos ei tarvitse tiedostopolusta muita osia.
Lumpio kirjoitti:
Neme kirjoitti:
Noniin, monet pyysivät että laittaisin koodin mukaan niin eiköhän sitä saisi tulla muistakaa että koodin kopiointi on ehdottomasti kielettyä mikäli tulen näkemään koodin niin sakkoja saa tulla tulemaan vaan.
I lol'd
http://kapsi.fi/tzaeru/
Tein ihan itse!
Ai että joku vielä pälli 28- vuotias kehtaa huijata rahaa vastaan perkele!
Ootko siis maksanu tuosta?
Olen.
Jos nyt ymmärsin tilanteen oikein, melko röyhkeää toimintaa poistaa koodista alkuperäisen tekijän tiedot, suomentaa tekstit surkeasti ("salaiset methodit") ja pyytää vielä rahaa toimimattomasta koodista. Toivottavasti koodin kaupustelija ymmärtää palauttaa rahat takaisin ja hävetä tekojaan.
HEIPPA!
Jos nyt ymmärsin oikein niin 99.9999999 jne... % putkassakin esiintyvistä naamoista on saanut enemmän ideoita netistä, kuin pukannut takas puhtaasti omia (including me) & esitellessään 'ideoitaan' - kylmästi lyönyt alle oman nimensä jne...
Niin ja hänhän omistaa vielä kotisivun oliko se (http://tatsi.net) ja olikohan se Marko Tarvinen yms.
neau33 kirjoitti:
HEIPPA!
Jos nyt ymmärsin oikein niin 99.9999999 jne... % putkassakin esiintyvistä naamoista on saanut enemmän ideoita netistä, kuin pukannut takas puhtaasti omia (including me) & esitellessään 'ideoitaan' - kylmästi lyönyt alle oman nimensä jne...
Niin. Samalla periaatteella mm. lumilautailijan saadessa ison hypyn nähdessään idean, että "hyppäänpä tuplasti pidemmälle siten, että teen triplasti enemmän voltteja kans!" on hän vain pahainen matkija.
Eri asia kopioida yksi yhteen kuin saada -idea-. "Näinpäs jonkun muun tekemän koodin, kopioinpa sen ja suomennan kommentoinnit.." on vähän eri asia kuin "Wau, demo jossa käytetään raytraceriä, teenpä samanlaisen."
Aihe on jo aika vanha, joten et voi enää vastata siihen.