[PHP] Uploadbar > post submit

Pagina: 1
Acties:
  • 491 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ben met een portfolio bezig waar natuurlijk de admin niet mag ontbreken, ik wil alleen nog een ding inbouwen maar dat lukt me gewoon echt niet. Het is de loadingbar die verschijnt wanneer er op Toevoegen(uploaden) is geklikt. Ik geloof dat het met een div refresh kan ofzo maar heb alles al geprobeerd, kan een van jullie me helpen?

Met vriendelijke groet,
Thinkreal_

Hieronder staat admin/index.php
code:
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
<?php
include("config.php");
?>
<html>
<head>
<title>..~</title>
<style>
body{
    font-family: georgia;
    font-size: 12px;
    font-color: #000000;
}
a:link, a:hover, a:visited, a:link img, a:visited img, a:hover img{
    color: #000000;
    text-decoration: none;
    border: 0px solid #000000
}
</style>
</head>
<body>
<?php 
if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
$allowed = array("image/jpeg", "image/gif", "image/png"); 

if(in_array($_FILES['uploadedfile']['type'], $allowed) &&  in_array($_FILES['uploadedfile1']['type'], $allowed)){ 
$target_path = "../files/thumbs/"; 
    $target_path1 = "../files/";  
    $name = $_POST['name'];  
     
    if (empty($_POST['name'])) { echo "Je hebt <b>geen naam</b> ingevuld!<br /> <a href='index.php'>Klik hier om terug te gaan!</a>"; exit; } 
    if (empty($_FILES['uploadedfile']['name'])) { exit; }  
    if (empty($_FILES['uploadedfile1']['name'])) { exit; }  
        $utime = date('ymdHis');  
        $pic0 = $utime."_".$_FILES['uploadedfile']['name'];  
        $pic1 = $utime."_".$_FILES['uploadedfile1']['name'];  

        move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path . $pic0);  
        move_uploaded_file($_FILES['uploadedfile1']['tmp_name'], $target_path1 . $pic1);  

        mysql_query("INSERT INTO img(thumb, img, name) VALUES('". $target_path . $pic0 ."', '". $target_path1 . $pic1 ."', '". $name ."')");  

        echo "Afbeelding <b>toegevoegd</b> aan portfolio.<br />"; 
        echo "<a href='index.php'>Klik hier om terug te gaan!</a><br />";
        echo "<a href='..'>Of ga meteen naar het portfolio!</a>"; 

exit; 
} 
else { 
  echo "Je hebt een bestand met de <b>verkeerde extensie</b> geselecteerd of je bent <b>vergeten</b> een afbeelding te selecteren.<br />"; 
  echo "<a href='index.php'>Klik hier om terug te gaan!</a>";
  exit;
}}
else{ 
    echo "<h2>Afbeeldingen toevoegen</h2>\n"; 
    echo "Geadviseerd formaat voor de Afbeelding: <b>1000x700</b> en voor de Thumbnail: <b>200x200</b>(mag afwijken).<br />";\
    echo "<a href='..'>Terug naar portfolio.</a><br /><br />";
    echo "<form enctype='multipart/form-data' action='$_SERVER[PHP_SELF]' method='post' >\n"; 
    echo "Naam:      <br /><input type='text' name='name' /><br />"; 
    echo "Thumbnail: <br /><input type='file' name='uploadedfile'  /><br />"; 
    echo "Foto:      <br /><input type='file' name='uploadedfile1' /><br />"; 
    echo "<input type='submit' value='Toevoegen' />"; 
    echo "</form>";
}
?> 
<br />
<b>Verwijderen</b> (klik op het icoontje om te verwijderen):<br />
<?php
$select = mysql_query("SELECT * FROM img");
while($r = mysql_fetch_array($select)){
    echo '<a href="?del=' . $r['id'] . '&tb=' . $r['thumb'] . '&img=' . $r['img'] . '"><img src="img/delete.bmp"></a> '. $r['name'] .'<br />';
}

if(isset($_GET['del'])){
    $id = $_GET['del'];
    $thumb = $_GET['tb'];
    $img = $_GET['img'];
    mysql_query("DELETE FROM img WHERE id='". $id ."'");
    unlink($thumb);
    unlink($img);
    ?>
    <script>window.location='./index.php';</script>
    <?
}
?>
</body>
</html>

Acties:
  • 0 Henk 'm!

  • webinn
  • Registratie: Oktober 2002
  • Laatst online: 06-06 12:44
waarom heb je een upload bar nodig? Zo simpel is dat nl niet...

Acties:
  • 0 Henk 'm!

Verwijderd


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Als je een progressbar wilt maken met PHP als server-side taal, dan heb je een extensie als APC of uploadprogress nodig. Anders gaat het niet correct werken.

De truc is dat je een upload start en vervolgens met JavaScript je server gaat pollen om te vragen hoe ver de upload is. Het server-side bijhouden van de progress kan niet met PHP zelf, maar daar heb je zo'n extensie voor nodig.

[ Voor 42% gewijzigd door HuHu op 22-05-2010 10:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het hoeft geen echte te zijn, hij is gewoon fake, voor de 'style' snap je? maar dat er dus gewoon een afbeelding verschijnt wanneer de upload start! na het drukken op de upload button dus.

Acties:
  • 0 Henk 'm!

Verwijderd

Als je zeker weet dat de gebruiker van de admin een moderne browser gebruikt, kan je html5 upload gebruiken. Zie bijvoorbeeld jquery+html5 en het voorbeeld.

Kijk ook eens naar je code. Als het goed is moet het je opvallen dat je het verwijderen ook voor het ophalen van de afbeeldingen kan doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(isset($_GET['del'])){
    $id = $_GET['del'];
    $thumb = $_GET['tb'];
    $img = $_GET['img'];
    mysql_query("DELETE FROM img WHERE id='". $id ."'");
    unlink($thumb);
    unlink($img);
    ?>
    <script>window.location='./index.php';</script>
    <?
}

$select = mysql_query("SELECT * FROM img");
while($r = mysql_fetch_array($select)){
    echo '<a href="?del=' . $r['id'] . '&tb=' . $r['thumb'] . '&img=' . $r['img'] . '"><img src="img/delete.bmp"></a> '. $r['name'] .'<br />';
}


Overigens raad ik je ook aan om eens te kijken hoe je het uploaden van afbeeldingen echt veilig maakt, want mimetypes zeggen niks (hoeft misschien niet als je alleen zelf in de admin kan komen).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kan alleen zelf in de admin komen d.m.v. simpele htaccess, ik heb een script gemaakt die aangeeft of je in een 'moderne' browser zit, iniedergeval wanneer je niet op de nieuwste versie van firefox, opera, safari of chrome surft kan je niet op de website komen, een simpele include op elke pagina, ie is uitgeschakelt!

Ik heb nu 1 jaar geen woord php meer gezien, ik heb nu voor mijn fotografie een portfolio nodig dus begon ik zelf maar met scripten, dus ik ben veel dingen kwijt geraakt, wat bedoel je met het verwijderen voor het ophalen van de afbeelding?
Verwijderd schreef op zaterdag 22 mei 2010 @ 10:51:
Als je zeker weet dat de gebruiker van de admin een moderne browser gebruikt, kan je html5 upload gebruiken. Zie bijvoorbeeld jquery+html5 en het voorbeeld.

Kijk ook eens naar je code. Als het goed is moet het je opvallen dat je het verwijderen ook voor het ophalen van de afbeeldingen kan doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(isset($_GET['del'])){
    $id = $_GET['del'];
    $thumb = $_GET['tb'];
    $img = $_GET['img'];
    mysql_query("DELETE FROM img WHERE id='". $id ."'");
    unlink($thumb);
    unlink($img);
    ?>
    <script>window.location='./index.php';</script>
    <?
}

$select = mysql_query("SELECT * FROM img");
while($r = mysql_fetch_array($select)){
    echo '<a href="?del=' . $r['id'] . '&tb=' . $r['thumb'] . '&img=' . $r['img'] . '"><img src="img/delete.bmp"></a> '. $r['name'] .'<br />';
}


Overigens raad ik je ook aan om eens te kijken hoe je het uploaden van afbeeldingen echt veilig maakt, want mimetypes zeggen niks (hoeft misschien niet als je alleen zelf in de admin kan komen).

Acties:
  • 0 Henk 'm!

  • Taenadar
  • Registratie: Januari 2004
  • Laatst online: 20:27
Als je gewoon wat visueels wilt dan gebruik je toch een stukje java op de upload knop die een gifje of iets dergelijks laad waarin je laat zien dat er wat gebeurd.

Dan heb je wel niet een echte progressbar maar wel iets wat erop lijkt.

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Verwijderd schreef op zaterdag 22 mei 2010 @ 10:51:
Als je zeker weet dat de gebruiker van de admin een moderne browser gebruikt, kan je html5 upload gebruiken. Zie bijvoorbeeld jquery+html5 en het voorbeeld.

Kijk ook eens naar je code. Als het goed is moet het je opvallen dat je het verwijderen ook voor het ophalen van de afbeeldingen kan doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if(isset($_GET['del'])){
    $id = $_GET['del'];
    $thumb = $_GET['tb'];
    $img = $_GET['img'];
    mysql_query("DELETE FROM img WHERE id='". $id ."'");
    unlink($thumb);
    unlink($img);
    ?>
    <script>window.location='./index.php';</script>
    <?
}

$select = mysql_query("SELECT * FROM img");
while($r = mysql_fetch_array($select)){
    echo '<a href="?del=' . $r['id'] . '&tb=' . $r['thumb'] . '&img=' . $r['img'] . '"><img src="img/delete.bmp"></a> '. $r['name'] .'<br />';
}


Overigens raad ik je ook aan om eens te kijken hoe je het uploaden van afbeeldingen echt veilig maakt, want mimetypes zeggen niks (hoeft misschien niet als je alleen zelf in de admin kan komen).
Mag ik je er op wijzen dat je delete SQL-query nu wel vatbaar is voor SQL injection?

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Verwijderd schreef op zaterdag 22 mei 2010 @ 10:48:
Het hoeft geen echte te zijn, hij is gewoon fake, voor de 'style' snap je? maar dat er dus gewoon een afbeelding verschijnt wanneer de upload start! na het drukken op de upload button dus.
http://ajaxload.info/

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja ik dacht er ook aan wat met java te gaan maken, maar hoe? ik kan geen java scripten hoor :+

@HuHu ja zo een heb ik al, die moet alleen verschijnen wanneer ik op uploaden klik :)

Heeft iemand een scriptje waarmee het kan?

code:
1
2
3
4
5
<img src="loading.gif" id="loading_img" style="display: none" /> 

<form onsubmit="documents.getElementById('loading_img').style.display='block'"> 
... 
</form>

Met zoiets kan het geloof ik, maar waar moet het staan? en hoe zorg ik ervoor dat het verschijnt als je op de upload button klikt?

Mvg

Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20:56
Heb je al geprobeerd wat jouw script doet?

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Verwijderd schreef op zaterdag 22 mei 2010 @ 12:02:
Ja ik dacht er ook aan wat met java te gaan maken, maar hoe? ik kan geen java scripten hoor :+
Ten eerste: Java != Javascript!! En zo moeilijk is Javascript nu ook weer niet. Er zijn jou al genoeg voorbeelden gegeven, waarmee je makkelijk vooruit kunt. Overigens zou ik dan wel een échte implementeren en geen neppe, voor 'de style', dan ben je niet web 2.0 bezig imo.
Heeft iemand een scriptje waarmee het kan?
Lees je topic maar door, zijn al enkele voorbeelden gegeven.
code:
1
2
3
4
5
<img src="loading.gif" id="loading_img" style="display: none" /> 

<form onsubmit="documents.getElementById('loading_img').style.display='block'"> 
... 
</form>

Met zoiets kan het geloof ik, maar waar moet het staan? en hoe zorg ik ervoor dat het verschijnt als je op de upload button klikt?
Lijkt me duidelijk waar het moet komen te staan, als je deze code wilt gebruiken...

Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20:56
CptChaos schreef op zaterdag 22 mei 2010 @ 12:13:
Overigens zou ik dan wel een échte implementeren en geen neppe, voor 'de style', dan ben je niet web 2.0 bezig imo.
Moet je dan web 2.0 bezig zijn? Als ik zie dat de TS met iets tamelijk basaals als het dynamisch tonen en verbergen van afbeeldingen moeite heeft, dan lijkt me dat een iets te grote uitdaging. Bovendien weet je niet of het überhaupt geïmplementeerd kan worden, als php niet de benodigde extensie heeft, dan ben je afhankelijk van html5 en we weten allemaal dat html5 nog niet op de meerderheid van webbrowsers wordt ondersteund.

Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
CptChaos schreef op zaterdag 22 mei 2010 @ 12:13:
[...]
Ten eerste: Java != Javascript!! En zo moeilijk is Javascript nu ook weer niet. Er zijn jou al genoeg voorbeelden gegeven, waarmee je makkelijk vooruit kunt. Overigens zou ik dan wel een échte implementeren en geen neppe, voor 'de style', dan ben je niet web 2.0 bezig imo.
Web 2.0 :'). Wat is er in hemelsnaam Web 2.0 aan een progressbar, danwel loader-gif?

Maargoed, soms kun je ook geen echte implementeren, simpelweg omdat je niet weet hoe groot je taak is of omdat je niet kunt controleren hoe ver je taak is. En dan is een loader-gif een prima oplossing om aan de gebruiker te tonen dat er wat wordt gedaan.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op zaterdag 22 mei 2010 @ 12:02:

Heeft iemand een scriptje waarmee het kan?
Tja, dat is hier in PRG niet de bedoeling. Ik had het vanochtend even aangekeken, maar dit topic gaat nergens heen. PRG is niet een afhaal balie waar je je probleem kunt dumpen zodat iemand anders hem voor je oplost.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

HuHu schreef op zaterdag 22 mei 2010 @ 13:03:
[...]

Web 2.0 :'). Wat is er in hemelsnaam Web 2.0 aan een progressbar, danwel loader-gif?
Het feit dat je hem dynamisch weergeeft en weer weghaalt. Dynamische feedback is allemaal "web 2.0" (damn, wat haat ik die term :P ). En ja, die dingen zijn best handig, juist bij uploads en dergelijken. ;)

edit:
:w Janoz.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.