webForumDet fria alternativet

Bild som submit-knapp

10 svar · 359 visningar · startad av carl_x

carl_xMedlem sedan mars 20001 858 inlägg
#1

Har ett script i PHP som jag använder för att ladda upp bilder. Problemet är att om jag använder en bild som submit-knapp så fungerar det inte. Vad är problemet?

<input type="image" name="submit" src="../images/spara.gif" style="width: 43px; height: 14px;" />
GuffaMedlem sedan juni 2004533 inlägg
#2

Ifall du kollar efter ett värde i Request.Form("submit") så fungerar det inte om du använder type="image". Däremot så kan du kolla efter "submit.x" eller "submit.y".

carl_xMedlem sedan mars 20001 858 inlägg
#3

Förslag på hur det skulle kunna se ut då?

AxelMedlem sedan aug. 20004 638 inlägg
#4

Eller skicka med en ny variabel med ett hidden-fält.

carl_xMedlem sedan mars 20001 858 inlägg
#5

Och hur löser man det på bästa sätt?

GuffaMedlem sedan juni 2004533 inlägg
#6

carl_x skrev:

Förslag på hur det skulle kunna se ut då?

Det beror ju alldeles på hur koden ser ut som tar emot formuläret.

carl_xMedlem sedan mars 20001 858 inlägg
#7

Guffa skrev:

Det beror ju alldeles på hur koden ser ut som tar emot formuläret.

<form name="ladda" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<br />
Lägg till i befintlig kategori:<br /><?php echo $parties; ?>
<br />
Skapa ny kategori:<br/><input type="text" name="newParty" class="mataIn" />
<br />
Kommentar till bilden:<br/><input type="text" name="comment" class="mataIn" />
<br />
Bild som ska laddas upp:<br /><input type="file" name="picture" class="mataIn" />
<br />
<input type="image" name="submit" src="../images/spara.gif" style="width: 43px; height: 14px;" />
</form>
GuffaMedlem sedan juni 2004533 inlägg
#8

Är det där all kod? Då är det ju inte så konstigt att det inte fungerar. Du har ju ingenting som sparar filen.

carl_xMedlem sedan mars 20001 858 inlägg
#9

Guffa skrev:

Är det där all kod? Då är det ju inte så konstigt att det inte fungerar. Du har ju ingenting som sparar filen.

<?php
require("template.php");
require("../functions.php");
function rezise($path, $name)
{
	global $imageMaxW, $imageMaxH;
	$fullpath = $path . '/' . $name;
	$info = getimagesize($fullpath);
	if($info[0] < $imageMaxW && $info[1] < $imageMaxH)
	{
		copy($fullpath, $path . '/small-' . $name);
	}
	else
	{
		list($newW, $newH) = getNewSize($info[0], $info[1], $imageMaxW, $imageMaxH);
		switch($info[2])
		{
			case 1:  //Gif
				$img = imagecreatefromgif($fullpath);
				$outfcn = "imagegif";
				break;
			case 2: //Jpeg
				$img = imagecreatefromjpeg($fullpath);
				$outfcn = "imagejpeg";
				break;
			case 3: //Png
				$img = imagecreatefrompng($fullpath);
				$outfcn = "imagepng";
				break;
			default:
				return -1;
		}
		$img2 = imagecreatetruecolor($newW, $newH);
		imagecopyresampled($img2, $img, 0, 0, 0, 0, $newW, $newH, $info[0], $info[1]);
		$outfcn($img2, $path . '/small-' . $name);
		imagedestroy($img);
		imagedestroy($img2);
	}
}

if(checkP("submit") && checkF("picture"))
{
	if(checkP("comment"))
		$comment = $_POST['comment'];
	else
		$comment = "";

	if(checkP("party") && $_POST['party'] != "0")
		$pId = intval($_POST['party']);
	if(checkP("newParty"))
	{
		query("INSERT INTO parties VALUES(0, '" . strip(htmlentities($_POST['newParty'])) . "')");
		$pId = insertid();
}
	else
	{
		header("Location: " . $_SERVER['PHP_SELF'] . "?error=party");
		die();
	}

	$path = $picPath . $pId;
//	echo $path;
	if(!file_exists($path))
	{
//	echo "Fan!";
		mkdir($path, 0777);
	}

	$info = getimagesize($_FILES['picture']['tmp_name']);
	if($info[2] == 0 || $info[2] == 1 || $info[2] == 2)
	{
		$sql = "INSERT INTO pictures (party, name, comment) VALUES('" . $pId . "', '" . strip($_FILES['picture']['name']) . "', '" . strip(htmlentities($comment)) . "')";
		query($sql);
		$name = insertid() . strtolower(strrchr($_FILES['picture']['name'], '.'));
		$pic = $path . '/'. $name;
		move_uploaded_file($_FILES['picture']['tmp_name'], $pic);
		rezise($path, $name);
		header("Location: " . $_SERVER['PHP_SELF'] . "?uploaded=true");
		die();
	}
	else
	{
		header("Location: " . $_SERVER['PHP_SELF'] . "?error=format");
		die();
	}

}
echo top();
?>
<td class="Text">
<!-- Sidan innehåll börjar här -->
<b>Lägg till bilder</b>
<br /><br />
Scriptet genererar två bilder; en liten thumbnail på max 100x74 pixlar, och en lite större bild med en maxhöjd på 500 pixlar och en maxbredd på 678 pixlar.
<br /><br />
<?php
if(checkG("uploaded") && $_GET['uploaded'] == 'true')
	echo "Bilden är nu inlagd";
else if(checkG("error"))
{
	if($_GET['error'] == 'party')
	{
		echo "Något gick fel.<br /><br />";
	}
	else if($_GET['error'] == 'format')
	{
		echo "Felaktigt bildformat. Bilden måste vara antingen gif, jpg eller png<br /><br />";
	}
}

$sql = "SELECT * FROM parties ORDER BY name DESC";
$res = query($sql);
$parties = '<select class="mataIn" style="width: 350px;" name="party"><option value="0">Ny kategori</option>';
$sel = false;
while($row = fetch($res))
{
	$parties .= '<option ' . (!$sel ? 'selected="selected"' : '') . ' value="' . $row->partyId . '">' .unstrip($row->name) . '</option>';
	$sel = true;
}
$parties .= '</select>';
?>
<form name="addPicture" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<br />
Lägg till i befintlig kategori:<br /><?php echo $parties; ?>
<br /><br />
Skapa ny kategori: (Max 100 tecken)<br/><input type="text" name="newParty" class="mataIn" style="width: 350px;" />
<br /><br />
Kommentar till bilden: (Frivilligt, max 65535 tecken)<br/><input type="text" name="comment" class="mataIn" style="width: 350px;" />
<br /><br />
Bild som ska laddas upp: (Endast JPG, PNG eller GIF)<br /><input type="file" name="picture" class="mataIn" style="width: 350px;" />
<br /><br />
<input type="submit" name="submit" value="Ladda upp bild">
<!--<input type="image" name="submit" src="../images/spara.gif" style="width: 43px; height: 14px;" />-->
</form>
</td>
<?php
echo bottom();
?>
GuffaMedlem sedan juni 2004533 inlägg
#10

Du kanske skulle flytta tråden till PHP?

Jag kan ingen PHP, men jag kan ju gissa...

Kontrollerar checkP("submit") ifall du har ett värde ifrån formuläret med nyckeln "submit"? I så fall är det ju det som inte fungerar.

carl_xMedlem sedan mars 20001 858 inlägg
#11

Problemet är löst.

139 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)