login  Naam:   Wachtwoord: 
Registreer je!
 Forum

avatar uploaden (Opgelost)

Offline sir_green - 10/04/2007 21:52 (laatste wijziging 14/04/2007 19:25)
Avatar van sir_greenPHP interesse Ik probeer voor het eerst een systeempje te maken waarmee ik avantars kan uploaden. Maar op de een of andere manier slaat hij hem niet op. Weet iemand wat ik fout gedaan heb.

Mijn HTML


  1. <form class='form' action='profielwijzigen.php?mid=$id' method='post' enctype='multipart/form-data'>
  2.  
  3. <table class='profieltabel' >
  4. <tr>
  5. <td class='donkerveld'><label class='titel' for='profielavantar'>Avantar</label></td>
  6. <td><input class='invoerveld' id='bestand' name='bestand' type='file' value='$avantar' /></td>
  7. </tr>
  8.  
  9. </table>
  10.  
  11. <table cellpadding='0' cellspacing='0'><tr><td>
  12.  
  13. <div>
  14. <input class='knop' type='submit' value='Avantar opslaan' name='avantaropslaan' /><br /><br />
  15. </div>
  16.  
  17. </td></tr></table>
  18.  
  19. </form>


en dit het stukje php
  1. if(isset($_POST['avantaropslaan'])) {
  2.  
  3. //kijken of er een bestand is geselecteerd
  4. if(isset($_FILES['bestand'])) {
  5. //het bestand verplaatsten naar de juiste map op de server
  6. move_uploaded_file($_FILES['bestand']['tmp_name'], "/httpdocs/login/avantar/");
  7. //berichtje om te laten zien dat het bestand is opgeslagen
  8. echo "Het bestand is opgeslagen";
  9. }
  10. }

24 antwoorden

Gesponsorde links
Offline Ultimatum - 10/04/2007 22:09
Avatar van Ultimatum PHP expert Als FILES['bestand'] bestaat zul je altijd de echo Het bestand is opgeslagen zien. Je moet nog een if/else om je move_uploaded_file doen
Offline sir_green - 10/04/2007 22:17 (laatste wijziging 10/04/2007 22:18)
Avatar van sir_green PHP interesse m´n php is nu (even vereenvoudigd)

  1. if(isset($_POST['avantaropslaan'])) {
  2.  
  3. if(isset($_FILES['bestand'])) {
  4. move_uploaded_file($_FILES['bestand']['tmp_name'], "avantar/");
  5. }
  6. }

Zou jij kunnen aangven hoe je die if/else dacht want volgens mij begrijp ik je niet helemaal
Offline xSc - 10/04/2007 22:29
Avatar van xSc Onbekend if (!@move_uploaded_file(bla))
{

// er is iets fout gegaan

}
else
{

// ga verder

}
Offline Ultimatum - 10/04/2007 23:15
Avatar van Ultimatum PHP expert @xSc, haal die @ weg want als je fouten gaat onderdrukken kan je ook niet (goed) debuggen
Offline Warbringer - 11/04/2007 08:52
Avatar van Warbringer Onbekend move_uploaded_file($_FILES['bestand']['tmp_name'], "/httpdocs/login/avantar/");


moet dat niet zijn incl. hoe het bestand heet na het uploaden? dus om de orginele naam te behouden incl. extensie:

move_uploaded_file($_FILES['bestand']['tmp_name'], "/httpdocs/login/avantar/".$_FILES['bestand']['name']."");


weet niet hoor is maar een suggestie ^_^
Offline Thomas - 11/04/2007 08:53
Avatar van Thomas Moderator Er moet ook een doel-bestandsnaam worden opgegeven in move_uploaded_file. Nu is er enkel een directory ingevuld ("avantar/") waarin het overigens moet zijn toegestaan om hier naar te schrijven.

Het is trouwens avatar, niet avantar .
Offline Warbringer - 11/04/2007 08:58
Avatar van Warbringer Onbekend oops type foutje whahaha ja dat bedoelde ik hier boven.
ja inderdaad de map even CMOD naar 755 doen meen ik en het zou moeten werken. CMOD kan je via ftp ook via het cmod commando (php)
Offline kickasgamer - 11/04/2007 10:17
Avatar van kickasgamer PHP ver gevorderde maar ik heb ook een vraagje hoe verander je de naam van het bestand dat opgeslagen wordt in een map op de server ?

(liefst tijdens het uploaden)
Offline Rens - 11/04/2007 10:18
Avatar van Rens Gouden medaille

Crew algemeen
PHP.net: rename
PHP.net: move_uploaded_file
De 2e functie moet je altijd gebruiken, om het van een tmp map naar een gewone map te verplaatsen.
En dan kun je ook meteen de naam veranderen.
Offline kickasgamer - 11/04/2007 10:29
Avatar van kickasgamer PHP ver gevorderde
  1. <?
  2. rename(move_uploaded_file($_FILES['afbeelding']['tmp_name'],$locatie.$_FILES['afbeelding']['name']), "nieuwe_file_naam.gif");
  3. ?>


ja ik wil nu el de nieuwe bestands naam zo weergeven:
ava_{user_id} . ext maar hoe krijg ik die extensie bij de nieuwe naam dan ?
Offline Warbringer - 11/04/2007 10:38
Avatar van Warbringer Onbekend maar je veranderd nu de extensie. als je een JPEG upload verander je hem in .gif en dat KAN problemen opleveren.

zelf zoek ik hiervoor nog een oplossing, iemand een tip?

er is een commando om een extensie uit te lezen en in een variable te zetten correct?
Offline kickasgamer - 11/04/2007 10:52
Avatar van kickasgamer PHP ver gevorderde misschien exploden op de . dan heb je de naam en extensie apart

maar zou die naam change werken zols ik hem zei ?

  1. <?
  2. rename(move_uploaded_file($_FILES['afbeelding']['tmp_name'],$locatie.$_FILES['afbeelding']['name']), "nieuwe_file_naam.gif");
  3. ?>
Offline Warbringer - 11/04/2007 10:56 (laatste wijziging 11/04/2007 11:07)
Avatar van Warbringer Onbekend ja,

move_uploaded_files($_FILES['afbeelding']['tmp_name'], "./map/nieuwe_file_naam.gif")

dat werkt maar als je dan een JPG upload wordt het een gif en heb je kans op foutten later.

Hoe werkt explode en implode precies? snapte de uitleg van php.net niet 100%

<?php
$sep = explode(".", $_FILES['afbeelding']['name'];
$desep = implode( [string glue], array pieces);
?>
Offline kickasgamer - 11/04/2007 11:19
Avatar van kickasgamer PHP ver gevorderde gisteren had iemand mij een code gegeven zo:

  1. <?php
  2. $ext = array_pop(explode(".",$bestand));
  3. ?>


array_pop haalt het laatste element dus de extensie uit de explode: dat is handig als je bv hebt leden_V.1.2.3.zip ;)
Offline Gerard - 11/04/2007 11:19
Avatar van Gerard Ouwe rakker
  1. <?php
  2. $ext = substr(strrchr('.', $bestand), 1);
Offline kickasgamer - 11/04/2007 11:31
Avatar van kickasgamer PHP ver gevorderde ja nu heb ik een nieuw probleem

dit is men code: http://www.plaatscode.be/4985/

en dit is de error: Warning: rename(1,ava_'1'.'/tmp/phpcMTxKs') [function.rename]: No such file or directory in /home/media/domains/fi-media.net/public_html/jeroen/leden/avatar.php on line 19
Offline Warbringer - 11/04/2007 12:02
Avatar van Warbringer Onbekend waarom rename je hem?
je kan toch zelf een naam opgeven... bijvoorbeeld gebaseerd op de gebruiker?


"./map/".$username."id".$id.".gif"

dan zou het plaatje zijn:

/map/Warbringerid1.gif

bijvoorbeeld. Heb je altijd een uniek plaatje want de ID haal je uit je SQL met "SELECT COUNT()" en de naam is lijkt me ook uniek ten alle tijden toch?
Offline kickasgamer - 11/04/2007 13:22
Avatar van kickasgamer PHP ver gevorderde maar ik geef hem een bepaalde naam om hem handiger te maken dan bv een lange naam, en ik plaats dezelfde naam in de DB is best handig maar hoe doe ik dat dan in dit script: de naam moet als volgt zijn:

ava_{user_id} . ext (user id zit in de sessie $_SESSION['user_info']['id']

en dit is mijn script: http://www.plaatscode.be/4985/
Offline Muzaru - 11/04/2007 13:42
Avatar van Muzaru Nieuw lid
  1. $ext = array_pop(explode(".", $_FILES['afbeelding']['tmp_name']));
  2. $_FILES['afbeelding']['name'] = "ava_".$_SESSION['user_info']['id'].$ext
  3.  
  4. $query = "UPDATE leden..." etc etc

dan krijg je als naam bijv: ava_21.jpg
maar ik raad aan dit toch op basis van username te doen, aangezien cookies ook "dood" gaan en je dan een tweede ava_21.jpg zou kunnen krijgen
Offline Rens - 11/04/2007 13:50
Avatar van Rens Gouden medaille

Crew algemeen
Check met PHP.net: file_exists of de gebruiker al een avatar heeft.
Zo ja, gebruik PHP.net: unlink en vervolgens PHP.net: move_uploaded_file.

1. Check of het bestand bestaat.
2. Zo ja, verwijder het bestand.
3. Verplaats de nieuwe avatar naar de avatars map
4. Renamen.
Offline kickasgamer - 11/04/2007 14:57 (laatste wijziging 11/04/2007 19:00)
Avatar van kickasgamer PHP ver gevorderde @muzaru

ik heb die code nu toegevoegt : http://www.plaatscode.be/4988/

maar de naam van het bestand blijft het zelfde, bv file_naam.gif en veranderd niet naar de juiste naam en als de file is geuploud krijg ik dit als resultaat :

Uw bestand ava_1/tmp/php4UUGe0 is geupload en dit staat in de DB : ava_1/tmp/php4UUGe0

dus klopt ook niet helemaal kan iemand mij helpen ?

iemand ?
Offline sir_green - 14/04/2007 21:06
Avatar van sir_green PHP interesse Ik heb de code van kickasgamer gebruikt maar ik loop bij het onderstaande stukje vast

elseif(!move_uploaded_file($_FILES['afbeelding']['tmp_name'],$locatie.$_FILES['afbeelding']['name'])){
echo" het bestand kan niet worden verplaatst";
exit;

en krijg dus de foutmelding: bestand kan niet verplaatst worden

Weet iemand hoe ik dit kan verhelpen?
Offline Roelandg - 15/04/2007 00:51
Avatar van Roelandg Nieuw lid Ik ben naar zo'n script ook opzoek  ik vind er ook niet echt een werkende..
Als iemand er een had zou het mij ook veel helpen..:p
Offline sir_green - 16/04/2007 18:02 (laatste wijziging 16/04/2007 18:03)
Avatar van sir_green PHP interesse Het probleem is opgelost, alles werkt hierbij de (kloppende) code

http://www.plaatscode.be/5091
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.286s