Gå til innhold

Feil under opplasting når "register_globals" = OFF


Anbefalte innlegg

Jeg har laget et opplastingsscript for en venn, og for noen dager siden sluttet alt å fungere. Jeg sende en mail til webhosten hans, og fikk dette til svar:

 

Pga mange problemer med brukerscipt på serverene våre er register_globals, i php, nå satt til off på samtlige servere. Vennligst gå gjennom dine script slik at de evt kan omprogrammeres.

 

Da gikk det verken ann å bruke adresser som index.php?side=bilder eller mailskjemaer.

 

Jeg prøvde følgende:

 

Satte inn:

ini_set('register_globals','On');

øverst i PHP-scriptet.

 

Satte inn:

if(!empty($_GET)) {
extract($_GET);
} else if(!empty($HTTP_GET_VARS)) {
extract($HTTP_GET_VARS);
}

if(!empty($_POST)) {
extract($_POST);
} else if(!empty($HTTP_POST_VARS)) {
extract($HTTP_POST_VARS);
}

øverst i PHP-scriptet.

 

Og laget en fil med teksten php_value register_globals On som jeg kalte .htaccess

 

Nå fungerer linker og mailskjemaer, men jeg får ikke opplastings-scriptet til å fungere. I HTML-skjemaet er navnet/id'en på filen som lastes opp "bilde". Så for å skjekke filformatet bruker jeg:

print($bilde_type);

men det står ingen ting. Har også prøvd:

print($_POST['bilde_type']);
// og:
print($_POST[bilde_type]);
// og:
print($_REQUEST['bilde_type']);
// og:
print($_REQUEST[bilde_type]);

men ingen ting virker...

Lenke til kommentar
Videoannonse
Annonse
http://www.php.net/manual/en/features.file...oad.post-method

 

Prøv å putte inn printr($_FILES) et sted i upload-scriptet ditt.

 

MVH Audun

Her er koden min:

 

<?php
require("headers.php");

$ny_id = rand(1000000, 9999999);

$bilde_type = $_FILES['bilde']['type'];
$bilde_size = $_FILES['bilde']['size'];
$bilde = $_FILES; // Prøvde også $_FILES['bilde']

list($width, $height, $type, $attr) = getimagesize($bilde);

if($_POST['overskrift'] && $_POST['bilde_text'] && $_POST['nyhet'] && !$_GET['error'])
{
$_SESSION['ses_overskrift'] = $_POST['overskrift'];
$_SESSION['ses_bilde_text'] = $_POST['bilde_text'];
$_SESSION['ses_nyhet'] = $_POST['nyhet'];

// Sjekker type (2)
if($bilde_type == "image/jpeg" ||
$bilde_type == "image/jpg" ||
$bilde_type == "image/pjpeg" ||
$bilde_type == "image/gif" ||
$bilde_type == "image/x-png" ||
$bilde_type == "image/png")
{
 // Sjekker bildets størrelse (3)
 if($bilde_size==0)
 {
 	$error = "Bildet må være større enn 0 KB";
 }
 else 
 {  	
 	// Lager GD-bilde av opplastet fil etter filformat
 	if($bilde_type == "image/jpeg" || $bilde_type == "image/jpg" || $bilde_type == "image/pjpeg")
 	{
   $bilde = imagecreatefromjpeg($bilde);
 	}
 	elseif($bilde_type == "image/gif")
 	{
   $bilde = imagecreatefromgif($bilde);
 	}
 	elseif($bilde_type == "image/x-png" || $bilde_type == "image/png")
 	{
   $bilde = imagecreatefrompng($bilde);
 	}
 	
 	$ses_h = 320;
 	$ses_w = 320;
 	$h = 320;
 	$w = 320;
 	
 	if($width>$height) // X større enn Y
 	{
   $w = $h*($width/$height) - ($h*($width/$height)-$w);
   $h = $ses_w*($height/$width);
 	}
 	elseif($width<$height) // X mindre enn Y
 	{
   $h = $w*($height/$width) - ($w*($height/$width)-$h);
   $w = $ses_h*($width/$height);
 	}
 	elseif($w>$h) // X større enn Y
 	{
   $w = $h;
 	}
 	elseif($w<$h) // X mindre enn Y
 	{
   $h = $w;
 	}
     
 	$lagret_bilde = imagecreatetruecolor($w, $h); // Lager en hvit bakgrunn som alt skal legges på
 	$hvit = imagecolorallocate($lagret_bilde, 255, 255, 255); // Lager hvitfarge til bakgrunn
 	imagefill($lagret_bilde, 0, 0, $hvit); // Fyller bildet med hvit farge
 	imagecopyresampled($lagret_bilde, $bilde, 0, 0, 0, 0, $w, $h, $width, $height); // Endrer størrelsen på bildet
 	
 	imagejpeg($lagret_bilde, "../system/img-bin/nyheter/".$ny_id.".jpg", 100); // Lagrer bilde på server
 	chmod("../system/img-bin/nyheter/".$ny_id.".jpg", 0644); // CHMOD av bilde
 	
 	//mysql_query("INSERT INTO bg_temp (`id`,`dato`) VALUES ('".$ny_id."',NOW())"); // Legger inn data om bilde i database
 } //SLUTT (3)

} // SLUTT (2)
else
{	// Hvis filtype er feil:
 $error = 'Bildet må være i filformatet GIF, JPEG, eller PNG';
}
} // SLUTT 1
elseif(!$_GET['error'])
{
$error = "Alle felt må fylles ut";
}

if($error && !$_GET['error'])
{
header("302 Moved Temporarily");
header("Location: admin.php?id=add-nyhet&error=".$error);
exit;
}

if($_GET['error'])
{
$ny_id = $_GET['ny_id'];
}
?>

 

Får opp feilmeldingen:

Warning: getimagesize(): Unable to access Array in /usr/local/psa/home/vhosts/adresse.com/httpdocs/admin/crop-image.php on line 10

 

Warning: getimagesize(Array): failed to open stream: No such file or directory in /usr/local/psa/home/vhosts/adresse.com/httpdocs/admin/crop-image.php on line 10

 

Warning: imagecreatefromjpeg(Array): failed to open stream: No such file or directory in /usr/local/psa/home/vhosts/adresse.com/httpdocs/admin/crop-image.php on line 36

 

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /usr/local/psa/home/vhosts/adresse.com/httpdocs/admin/crop-image.php on line 91

Lenke til kommentar

I dokumentasjonen til filopplasting, som jeg har lenket til, står det følgende:

 

$_FILES['userfile']['tmp_name']

The temporary filename of the file in which the uploaded file was stored on the server.

 

I ditt tilfelle blir det altså:

 

$bilde = $_FILES["bilde"]["tmp_name"];

 

Variabelen $_FILES['userfile']['tmp_name'] inneholder full path og filnavn til filen.

 

MVH Audun

Lenke til kommentar
I dokumentasjonen til filopplasting, som jeg har lenket til, står det følgende:

 

$_FILES['userfile']['tmp_name']

The temporary filename of the file in which the uploaded file was stored on the server.

 

I ditt tilfelle blir det altså:

 

$bilde = $_FILES["bilde"]["tmp_name"];

 

Variabelen $_FILES['userfile']['tmp_name'] inneholder full path og filnavn til filen.

 

MVH Audun

Takk :roll:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...