[PHP] Hjälp med bilduppladdninssida

Permalänk
Medlem

[PHP] Hjälp med bilduppladdninssida

Hej!

Behöver lite hjälp med ett remote skript, vill ha en till funktion på min sida (liknande imageshack) där man kan ange en URL till en bild så tar min sida den bilden och lagra den.

Detta är en kod jag har fått av en, men den funkar inte, får bara en vit sida.

$allowed = array('jpg', 'jpeg', 'gif', 'png'); if(isset($_POST['REQUEST_METHOD'] == 'url')) { $ext = array_pop(explode('.',$post['url'])); $filename = basename($_POST['url']); if(in_array($ext, $allowed) { file_put_contents('img/' . $newname . '.' . $ext ,file_get_contents($_POST['url'])) } else { print 'non valid ext'; } }

men jag vill även att skriptet ska ändra namnet med md5 kryptering.

På den koden jag har nu så får man ladda upp bilden själv och så använder den sig av denna skripten för att ändra namnet

if($_SERVER['REQUEST_METHOD'] == 'POST') { preg_match('/\.([a-zA-Z]+?)$/', $_FILES['file']['name'], $matches); if(in_array(strtolower($matches[1]), $accepted)) { if($_FILES['file']['size'] <= $maxsize) { $newname = md5_file($_FILES['file']['tmp_name']).'.'.$matches[1]; move_uploaded_file($_FILES['file']['tmp_name'], $filedir.'/'.$newname); $linkurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).'#'.$newname; $imgurl = 'http://'.$_SERVER['HTTP_HOST'].preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']).$filedir.'/'.$newname; $alt = $_POST["alt"]; print '<h2>Bilden laddades upp utan problem!!!!</h2> <p id="codes"> <img src="'.$imgurl.'" height="430" widht="291" alt="Bilden är uppladdad" > <label for="codedirect">Direkt Länk:</label> <input type="text" id="codedirect" value="'.$imgurl.'" onclick="javascript:this.focus();this.select();" size="40" readonly="true" /></p>'; } else print '<h2>Sorry, Max storleken är 1Mb<h2>'; } else print '<h2>Sorry, Filtypen är inte tillåten.<h2>'; }

och from:en ser ut så här.

<FORM enctype="x-www-form-urlencoded" ACTION="<?php print preg_replace('/\/([^\/]+?)$/', '/', $_SERVER['PHP_SELF']) ?>" method="url"> <label for="file">Laddar upp bilden genom URL: </label><input type="text" name="file" id="url" /> <br><br><br> <input name="submit" type="submit" value="Ladda upp...." class="button"> </form>

Tack på förhand!

Permalänk
Medlem
Skrivet av Emael:

...
$ext = array_pop(explode('.',$post['url']));
...

Du kanske menar:

$ext = array_pop(explode('.',$_POST['url']));

Visa signatur

- Archlinux -

Permalänk
Medlem

Samma fel, vit sida

kört fast o vet inte hur man fixar

vill bara få in koden så att den ladda ner bilden från den länken man ange in till den koden där den ändra namnet

Permalänk
Medlem

error_reporting(E_ALL);
längst upp så du får lite mer debugging

Permalänk
Medlem
Skrivet av dEnnA:

error_reporting(E_ALL);
längst upp så du får lite mer debugging

Funkade inte, fick inte ut nån debug logg.

Permalänk
Medlem

För det första så ska du ta bort isset från

if(isset($_POST['REQUEST_METHOD'] == 'url'))

och för det andra ska nog REQUEST_METHOD vara 'GET', 'HEAD', 'POST' eller 'PUT'.

Permalänk
Medlem

funkade inte, testat massa olika, men gav upp och sökte på google och fick upp det här

include('config.php'); // check against a regexp for an actual http url and for a valid filename, also extract that filename using a submatch (see PHP's regexp docs to understand this) if(preg_match('/\.([a-zA-Z]+?)$/('.$accepted.'))$#', $_FILES['file']['name'], $matches)) { die('Invalid url given'); } // try getting the image if($img = file_get_contents($_POST['img_url'])) { die('Getting that file failed'); } // try writing the file with the original filename -- note that this will overwrite any existing filename in the same directory -- that's up to you to check for if(file_put_contents($filedir.$matches[1], $img)) { die('Writing the file failed'); }

har ändrat den så att den funkar till "Writing the file failed"

Hur får jag den att på steg tre köra MD5 på namnet?

/Är nybörjare på php