Upload + Watermerk + Admin
Simpel upload script met watermerk en Admin. Gebruiker upload een plaatje en dan kan de Admin hem goedkeuren en dan is hij te zien op een pagina. Admin kan de plaatjes ook verwijderen. Wat moet ik zelf doen om het script te gebruiken: -Map aan maken die de naam upload heeft en je moet hem chmoden naar 777. -Het bestandje config.php aanpassen -De volgende SQL code invoeren: CREATE TABLE `foto_log` ( `id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `bestand` VARCHAR( 255 ) NOT NULL , `zien` ENUM( 'ja', 'nee' ) NOT NULL DEFAULT 'nee', `datum` INT( 10 ) NOT NULL , `ip` VARCHAR( 32 ) NOT NULL ) ENGINE = MYISAM ; -Een transparante PNG maken voor het watermerk, en de naam van het bestand invoeren in upload.php Voorbeeld transparante PNG: Opmaak moet je zelf maar maken :). En er staan al zoveel beveiligings scripts op het web dat je admin.php zelf wel kan beveiligen. Ik heb alleen het adminsysteem gemaakt, het upload systeem komt van Bas Kreleger.
--------------------- config.php-------------------------
<?php
/*
CREATE TABLE `foto_log` (
`id` INT( 4 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`bestand` VARCHAR( 255 ) NOT NULL ,
`zien` ENUM( 'ja', 'nee' ) NOT NULL DEFAULT 'nee',
`datum` INT( 10 ) NOT NULL ,
`ip` VARCHAR( 32 ) NOT NULL
) ENGINE = MYISAM ;
*/
//--- verbinding maken met database
$username = 'username';
$password = '****';
$host = 'localhost';
$database = 'Database';
if(mysql_connect($host,$username,$password))
{
if(!mysql_select_db($database))
{
echo 'Sorry, ik kon helaas geen verbinding maken met de databasetabel!';
}
}else{
echo 'Sorry, ik kon helaas geen verbinding maken met de databaseserver!';
}
?>
----------------------- upload.php ----------------------------
<?
include "config.php";
//--- zet path
$path = "upload/"; // met slash en chmod 777! (of lager ivm veiligheid)
//--- zet max. kb's
$maxkb = 2097152; // 2097152 gedeelt door 1024 is 2048kb = 2mb. DUS 1024 keer <aantal kb's> = $maxkb
//--- watermerk path
$path_watermerk = "watermerk.png"; // dit MOET een transparante .png zijn!!!
//--- bekijk of het bestand kleiner of net zo groot als 40 kb is en of de foto wel geupload is en of extentie wel .jpg of .jpeg is!
if ($_POST['submit'] && $_FILES['userfile']['size'] <= $maxkb && !file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['size'] && is_uploaded_file($_FILES['userfile']['tmp_name']) && (strtolower(substr($_FILES['userfile']['name'], -3)) == "jpg" || strtolower(substr($_FILES['userfile']['name'], -4)) == "jpeg"))
{
//--- upload image naar $path
move_uploaded_file($_FILES['userfile']['tmp_name'], $path . $_FILES['userfile']['name']);
$bestand = $_FILES['userfile']['name'];
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("INSERT INTO foto_log (bestand, datum, ip) VALUES ('".$bestand."',NOW(),'".$ip."')") or die(mysql_error());
//--- transparante watermerk
$watermerk = imagecreatefrompng($path_watermerk);
$watermerk_width = imagesx($watermerk);
$watermerk_height = imagesy($watermerk);
imagecreatetruecolor($watermerk_width, $watermerk_height);
//--- orriginele image
$image = imagecreatefromjpeg($path . $_FILES['userfile']['name']);
$size = getimagesize($path . $_FILES['userfile']['name']);
//--- defineer de coordinaten van het watermerk - dit voorbeeld is links onder
/*
bijv: geuploade plaatje: 180 x 130
watermerk groote: 50 x 16
berekening voor coordinaten 'x' as:
180 (breedte geuploade foto) - 50 (breedte watermerk) - 5 (ruimte rechts) = 125 pixels vanaf links
berekening voor 'y' as:
130 (hoogte geuploade foto) - 16 (hoogte watermerk) - 5 (ruimte onder) = 109 pixels vanaf boven
*/
//--- dit is voor rechts boven
$xas = $size[0] - $watermerk_width - 5;
$yas = 5;
//--- overschrijf het 'geuploade bestand' en voeg watermerk toe
imagecopymerge($image, $watermerk, $xas, $yas, 0, 0, $watermerk_width, $watermerk_height, 100);
//--- upload image
imagejpeg($image, $path . $_FILES['userfile']['name']); // max. kwaliteit
imagedestroy($image);
imagedestroy($watermerk);
echo "De foto is geupload.<br />";
echo "<META HTTP-EQUIV=Refresh CONTENT=\"2; URL=upload.php\">";
}
else
{
//--- errors
if ($_POST['submit'])
{
if (file_exists($path . $_FILES['userfile']['name']) && $_FILES['userfile']['name'])
echo "<b>Error! Bestand bestaat al, hernoem de foto en probeer het opnieuw.</b><p>";
elseif ($_FILES['userfile']['size'] > $maxkb)
echo "<b>Error! Bestand is groter dan " . $maxkb . "bytes. Verklein de foto en probeer het opnieuw</b><p>";
elseif (strtolower(substr($_FILES['userfile']['name'], -3)) != "jpg" && strtolower(substr($_FILES['userfile']['name'], -4)) != "jpeg")
echo "<b>Error! De foto heeft een verkeerde bestandsnaam. Er mogen alleen foto's geupload worden met als bestandsnaam .jpg.</b><p>";
else
echo "<b>Error! De foto is niet goed geupload of er is helemaal geen foto geupload. Probeer het opnieuw.</b><p>";
}
else
echo "Selecteer een foto om te uploaden. LET OP: hij mag NIET groter zijn dan 2MB en moet in je .jpg formaat zijn.<p>";
//--- formulier met enctype multipart/form-data ivm de file upload
echo "<form method=\"post\" action=\"upload.php\" enctype=\"multipart/form-data\">";
echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"" . $maxkb . "\" />";
echo "Bestand:<br />";
echo "<input type=\"file\" name=\"userfile\" value=\"" . $_POST['userfile'] . "\" /><br />";
echo "<input type=\"submit\" name=\"submit\" value=\"uploaden\" />";
echo "</form>";
}
?>
---------------------------- admin.php -------------------------------
[code]
<script language="javascript">
function confirmSubmit(question)
{
if (confirm(question))
return true ;
else
return false ;
}
</script>
<?php
include "config.php";
// Edit functie
if($_GET["id"]) {
if(!$upload = mysql_fetch_object(mysql_query("SELECT * FROM foto_log WHERE ID = {$_GET["id"]}"))){
echo("De foto is niet gevonden!");
echo "<META HTTP-EQUIV=Refresh CONTENT=\"2; URL=admin.php\">";
}
elseif($upload->zien == 'ja'){
mysql_query("UPDATE foto_log SET zien = 'nee' WHERE ID = {$_GET["id"]}");
echo "Bewerkt in niet zien.";
echo "<META HTTP-EQUIV=Refresh CONTENT=\"1; URL=admin.php\">";
}else{
mysql_query("UPDATE foto_log SET zien = 'ja' WHERE ID = {$_GET["id"]}");
echo "Bewerkt in zien";
echo "<META HTTP-EQUIV=Refresh CONTENT=\"1; URL=admin.php\">";
}
// Delete functie
}
elseif(isset($_GET['delete'])) {
if(file_exists("upload/".$_GET['delete'])){
unlink("upload/".$_GET['delete']);
mysql_query("DELETE FROM foto_log WHERE bestand = '{$_GET["delete"]}'");
echo "Het bestand <b>".$_GET['delete']."</b> is succesvol verwijderd.<br />\n";
echo "<META HTTP-EQUIV=Refresh CONTENT=\"1; URL=admin.php\">";
}else{
mysql_query("DELETE FROM foto_log WHERE bestand = '{$_GET["delete"]}'");
echo "Het bestand <b>".$_GET['delete']."</b> bestaat niet.<br />\n";
echo "<META HTTP-EQUIV=Refresh CONTENT=\"1; URL=admin.php\">";
}
}
$fotolog = mysql_query("SELECT * FROM foto_log ORDER BY datum") or die(mysql_error());
echo("<table cellpadding=\"3\" cellspacing=\"3\"><tr><td><b>Afbeelding:</b></td><td><b>Zien:</b></td><td> </td><td> </td></tr>\n");
while($upload = mysql_fetch_object($fotolog)) {
echo("<tr><td><a href=\"upload/" .$upload->bestand. "\" target=\"_new\"><img src=\"upload/" .$upload->bestand. "\" width=\"70\" height=\"60\" alt=\"" .$upload->bestand. "\" border=\"1\"></a></td>
<td>" .$upload->zien. "</td>
<td><a href=\"?id=" .$upload->id. "\">Edit</a></td>
<td><a onClick=\"return confirmSubmit('Delete file \'" .$upload->bestand. "\' ?')\" href=\"admin.php?delete=" .$upload->bestand. "\">Delete</a>
</td><td>\n");
}
echo "</table>\n";
?>[/code]
------------------------- zien.php -------------------------
<?php
include "config.php";
$fotolog = mysql_query("SELECT * FROM foto_log WHERE zien = 'ja' ORDER BY datum") or die(mysql_error());
while($upload = mysql_fetch_object($fotolog)) {
echo("<img src=\"upload/" .$upload->bestand. "\"><br />\n");
}
?>
Reacties
0