Upload + Watermerk + Admin

Door Arwin vdv, 21 jaar geleden, 7.624x bekeken

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: Afbeelding

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.

Voorbeeld: http://Niet meer online omdat mensen er niet normaal mee om kunnen

Gesponsorde koppelingen

PHP script bestanden

  1. upload-watermerk-admin

 

Er zijn 48 reacties op 'Php algemeen'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Luke Banning
Luke Banning
21 jaar geleden
 
0 +1 -0 -1
Voorbeeldje zou fijn zijn? :)
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
komt eraan.

edit: het is er.
Robert Deiman
Robert Deiman
21 jaar geleden
 
0 +1 -0 -1
Een paar opmerkingen:

"SELECT * FROM foto_log WHERE ID = '{$_GET["id"]}'" -> Ik pak alleen deze als voorbeeld, maar bij de meeste query's doe je dit zo. Is je id niet numeriek? Omdat je in je SQL er enkele quotes omheen plaatst ziet MySQL dit vaak als een string, terwijl die naar een integer moet zoeken. (zonder ' '
Misschien werkt het prima zo hoor, maar het is niet helemaal zoals het hoort.

Verder zie ik dat je html met dubbele quotes buitenom en enkele erbinnen wordt gegenereerd. (soms doe je het wel goed, met dubbele quotes en soms zie ik helemaal geen quotes) Dit is niet W3C valid (geen groot probleem, maar hoort niet)

Het idee is goed, de uitwerking redelijk, maar het kan beter. (zie oa mijn aanbevelingen)
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
@Robert:
bedankt!, heb de eerste opmerking aangepast.

alleen de 2de snap ik niet.
Robert Deiman
Robert Deiman
21 jaar geleden
 
0 +1 -0 -1
Deze regel komt uit zien.php
Quote:
echo("<img src='upload/" .$upload->bestand. "'><br />\n");

Dit komt er zo uit en is geen valide html code (dwz dat het niet zo is als het hoort)

<img src='upload/afbeelding.ext'><br />

En deze regel komt uit admin.php:
Quote:
echo("<table cellpadding=3 cellspacing=3><tr><td><b>Afbeelding:</b></td><td><b>Zien:
</b></td><td>&nbsp;</td><td>&nbsp;</td></tr>\n");


<table cellpadding=3 cellspacing=3><tr><td><b>Afbeelding:</b></td><td><b>Zien:
</b></td><td>&nbsp;</td><td>&nbsp;</td></tr>

Ook dit is niet als het hoort. Je hoort bijv: <img src="upload/afbeelding.ext"> te doen. Je ziet dat ik in de HTML " gebruik in plaats van ' of helemaal niets. Dat is zoals het hoort, met ".

(overigens is het ook een aanrader om css te gaan gebruiken voor wat opmaak, dus ook voor vergedrukte tekst en dergelijke)
Leroy Boerefijn
Leroy Boerefijn
21 jaar geleden
 
0 +1 -0 -1
leuk scriptje :)
alleen als je bij de admin een plaatje verwijderd.. is het plaatje wel weg, hij probeert hem alleen nog wel te laten zien ;)
Marcel K
Marcel K
21 jaar geleden
 
0 +1 -0 -1
leuk scriptje
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
@Robert: ga ik aanpassen
@Leroy: oeps. ga ik aanpassen.

edit: allebij aangepast.
Irene
Irene
21 jaar geleden
 
0 +1 -0 -1
Misschien een domme vraag, maar waarvoor is de functie 'zien' nou precies? :$
Ferdi R
Ferdi R
21 jaar geleden
 
0 +1 -0 -1
Leuk scriptje kan ik miss wel gebruiken met een paar aanpassingen.


Kan het ook zo gemaakt worden Dat er nog een stukje tekst boven het plaatje kan komen.
En dat het uplouden in de admin zit?
En het komt te staan op zien.php maar met een paginanummering zodat als je 20 plaatjes hebt geuploud dat hij een 2de pagina aanmaakt.
Bart
Bart
21 jaar geleden
 
0 +1 -0 -1
leuk scriptje,
wel wat aan sleutelen als je het op je eigen site wilt gaan gebruiken
Michael de Wal
Michael de Wal
21 jaar geleden
 
0 +1 -0 -1
gebruik ook ipv
mysql_fetch_object (dit hoort gewoon niet en het is langzaam)
mysql_fetch_assoc (veel sneller)

je roep het aan als een array dus: $row['id'];
Robert -
Robert -
21 jaar geleden
 
0 +1 -0 -1
Mooi scriptje,

Zal zo iets had ik binnenkort ook nodig.
Sander salemander
sander salemander
21 jaar geleden
 
0 +1 -0 -1
ik kan het plaatje niet zien wat ge-upload is?
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
@sander lees even de toelichting bij het script..
beetje domme vraag..

Vind het een leuk script.. komt zeker nog weleens van pas..
sla ik even op tussen de phphulp favorieten..

voor het mooie zou je alleen de edit 'knop' kunnen veranderen
naar een checkbox.. aangevinkt is zichtbaar niet aangevinkt
is onzichtbaar..

maarja thnxx
ArendJan
ArendJan
21 jaar geleden
 
0 +1 -0 -1
Hey, ik wil dat bij zien.php de afbeeldingen ong. 150 bij 100 wordt en dat de afbeelding dan klikbaar is voor uitvergroting via a href.... hoe doe ik dat?
Ferdi R
Ferdi R
21 jaar geleden
 
0 +1 -0 -1
Is het ook mogelijk om bij zien.php dat je alles ziet wat je upload?

Ik wil proberen om dit werkent te maken met een pagenummering.
Dat alle foto's op 1 pagina komen (zien.php) en als je dan 20 foto's hebt geupload dat er dan een 2de pagina komt.
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
@Irene: tja, ik dacht gewoon: wel zien of niet zien, maar weergeven zou beter zijn
@Michael: tja, kan, maar ik doe het niet :)
@Marvin: goed idee! ga ik aanpassen!
@ArendJan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="upload/plaatje.ext"><img src="upload/plaatje.ext" width="100" height="150"></a>

@Ferdi R: Dan is het hele adminsysteempje niet nodig :|

veel suc6.
Irene
Irene
21 jaar geleden
 
0 +1 -0 -1
@Ferdi R: Misschien kan je http://phphulp.nl/php/scripts/9/632/ dit script gebruiken?
Gewoon de map veranderen waar de plaatjes naar ge-upload worden en klaar.
Bart van Asselt
Bart van Asselt
21 jaar geleden
 
0 +1 -0 -1
Hoe kan je de watermerk rechtsonder laten verschijnen?=)

Edit:


Tis me gelukt=)

Ferdi R
Ferdi R
21 jaar geleden
 
0 +1 -0 -1
@Arwin: admin is wel nodig want daar moet upload.php inkomen.
Dus bewerken en upload in de admin en het scriptje op zien.php in een pagina includen.

@Irene: Dat is zonder watermerk.
Bart van Asselt
Bart van Asselt
21 jaar geleden
 
0 +1 -0 -1
Krijg de transparantheid niet voor elkaar, zie plaatje:

Afbeelding
Ferdi R
Ferdi R
21 jaar geleden
 
0 +1 -0 -1
Hoe splits je upload.php?
Ik wil het form ervan in de admin hebben.
Robert Deiman
Robert Deiman
21 jaar geleden
 
0 +1 -0 -1
bartjuh, een JPG heeft geen transparantie :)
Arwin  vdv
Arwin vdv
21 jaar geleden
 
0 +1 -0 -1
@Ferdi R: alles wat boven regel 77 staat in de admin zetten die jij wilt. en dan onder regel 77 even de action="" aanpassen.
Ferdi R
Ferdi R
21 jaar geleden
 
0 +1 -0 -1
@Arwin: dus ik kan alles in upload.php laten staan alleen action="" veranderen en alles boven regel 77 in de admin zetten.

Ik zal het proberen.

Edit: volgens mij moet het juist anders om.
Jah ik ben niet goed met php maar ik probeer het:)
Ferdi R
Ferdi R
21 jaar geleden
 
0 +1 -0 -1
Nu heb ik het zelfde probleem als bartjuh.
Terwijl ik een transparante png gebruik.
Irene
Irene
21 jaar geleden
 
0 +1 -0 -1
@ Ferdi R: Tuurlijk niet, als je gewoon met dit script de foto's upload naar /fotoalbum, en dan met fotoalbum.php de foto's etc uit /fotoalbum leest, heb je gewoon watermerk.;)
Dannozzz
Dannozzz
21 jaar geleden
 
0 +1 -0 -1
grrr .. Error! De foto is niet goed geupload of er is helemaal geen foto geupload. Probeer het opnieuw. ..


Jah fijn , na alles gevolgt te hebben blijf ik nu dik een uur steken met deze error .
nog meer bugs bekend ? of kan ik me ergens voor een breinvergroting laten opnemen >?

Zucht...
Bart van Asselt
Bart van Asselt
21 jaar geleden
 
0 +1 -0 -1
Robert schreef op 06.04.2007 17:52
bartjuh, een JPG heeft geen transparantie :)

Het plaatje waar ik de watermerk op wil zetten is een jpg, watermerk is een png en dan krijg ik zo'n raar plaatje

Afbeelding
Arjan Schuurman
Arjan Schuurman
21 jaar geleden
 
0 +1 -0 -1
png, fill heb je wel uitgezet en bg in transparatie gezet als je het in PS doet?
Niels Akkerman
Niels Akkerman
20 jaar geleden
 
0 +1 -0 -1
Erg mooi scriptje, net waar ik opzoek naar was.

Maar hoe krijg ik het voorelkaar om in de upload.php meerde foto's te kunnen uploaden in 1 keer? En hoe kan ik aangeven wat de nieuwe breedte en hoogte moet worden?
Pieter de Vries
Pieter de Vries
20 jaar geleden
 
0 +1 -0 -1
Ziet er leuk uit..

Krijg er wel een trojaans paard van binnen!
J V
J V
20 jaar geleden
 
0 +1 -0 -1
Kijk uit mensen, zit een trojaans paard in een foto verstopt!!!!!!!

Leuke grap trouwens....
Haras
Haras
19 jaar geleden
 
0 +1 -0 -1
Leuke script.
Ik ga hem is toevoegen op mijn site.
Hugo L
Hugo L
19 jaar geleden
 
0 +1 -0 -1
(Y) super scipt (voor mij dan)

Ben er een groot stuk van me cms mee aan het bouwen gaat allemaal super :)

1 vraagje kan ik het watermerk.png ook alpha maken zodat die niet zo sterk aanwezig is?

gr hugo

Edit:

Loop tegen een probleemje aan.. Als ik een foto wil uploaden met .JPG (hoofdletters) krijg ik de volgende foutmelding:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 8448 bytes) in C:\xampp\htdocs\Gliterzz\upload.php on line 32

terwijl mijn foto maar 1493 kb is dus daar zou die niet over mogen vallen..
iemand een idee?
[/EDIT]
Jesper Diovo
Jesper Diovo
19 jaar geleden
 
0 +1 -0 -1
Probeer uit, zou ik zeggen ;-).
Guido
guido
18 jaar geleden
 
0 +1 -0 -1
Hoe krijg je de afbeeldingen kleiner ?\
In zien.php worden ze nu bij mij nog op ware grootte afgebeeld, maar ik zou het graag in bijv 300x300 willen.
Vincent Huisman
Vincent Huisman
18 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

echo '<img src=\"upload/" .$upload->bestand. "\ width\"300"\ height\"300"\"><br />\n';

?>


toch? :p of wil je het plaatje niet zo verkleinen?
Guido
guido
18 jaar geleden
 
0 +1 -0 -1
Ik wil dat je het zeg maar ziet als bijv; Alle geuploade plaatjes op 1 pagina met hoogstens 300x300 op die pagina. Dus bijv niet als een plaatje 1024x750 is dat hij dan niet als 1024x750 op de pagina komt maar als 300x300 :p
Guido
guido
18 jaar geleden
 
0 +1 -0 -1
Ik heb die code van jou in zien.php gezet, met alleen die code.
Krijg ik dit; bestand. "\ width\"300"\ height\"300"\">
\n
Ferdi R
Ferdi R
18 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

echo '<img src="upload/' .$upload->bestand. '" width"300" height"300"><br />';

?>
Guido
guido
18 jaar geleden
 
0 +1 -1 -1
Als ik deze code er opzet, krijg ik een klein papiertje ofzo op mijn pagina te zien. Voor de rest niks ?
Sven video
sven video
16 jaar geleden
 
0 +1 -1 -1
hoi
ik heb hem iets aangepast maar hij is fout!
hoe kan dat?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?
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 link_ads (naam, email, showurl, beschrijving, beschrijving2, url, bestand, datum, ip) VALUES (''.$naam.''.$email.''.$showurl.''.$beschrijving.''.$beschrijving2.''.$url.''.$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 'naam: <input type='text' name='naam'><br>';
    echo 'e-mail: <input type='text' name='email'><br>';
    echo 'title: <input type='text' name='showurl'><br>';
    echo 'beschrijving: <textarea name='beschrijving' rows='3' cols='20'></textarea><br>';
    echo 'cijfer: <select name='beschrijving2'>
                  <option value='
1'>1</option>
                  <option value='
2'>2</option>
                  <option value='
3'>3</option>
                  <option value='
4'>4</option>
                  <option value='
5'>5</option>
                  <option value='
6'>6</option>
                  <option value='
7'>7</option>
                  <option value='
8'>8</option>
                  <option value='
9'>9</option>
                  <option value='
10'>10</option>
                  </select><br>'
;
    echo 'datum: <input type='text' name='url'><br>';
    echo 'foto: ';
    echo '<input type=\'hidden\' name=\'MAX_FILE_SIZE\' value=\'' . $maxkb . '\' />';
    echo '<input type=\'file\' name=\'userfile\' value=\'' . $_POST['userfile'] . '\' /><br />';
    echo '<input type=\'submit\' name=\'submit\' value=\'uploaden\' />';
    echo '</form>';
}


?>
Wouter J
Wouter J
16 jaar geleden
 
1 +1 -0 -1
Zomaar wat ideeën:
- Het script is 4 jaar oud
- Je hebt geen PHP geleerd

Daarnaast:
- Wat heb je voor fout?
- Waar denk je dat het aanligt?
- Wat heb je al gegoogled?
- Open misschien een forum topic?
Niels K
Niels K
16 jaar geleden
 
1 +1 -0 -1
Beste Sven, graag hiervoor een nieuw topic openen.

Niels
Maarten PHP
Maarten PHP
16 jaar geleden
 
1 +1 -0 -1
Sven ik zie de fout me me ogen dicht, heb je zelf al gekeken? Je mist de accolades van de if/else
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Sven video
sven video
16 jaar geleden
 
0 +1 -1 -1
het is al gelukt

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. upload-watermerk-admin

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.