login  Naam:   Wachtwoord: 
Registreer je!
 Forum

upload - addslashes

Offline roy - 29/01/2005 20:32 (laatste wijziging 04/02/2005 23:51)
Avatar van royPHP gevorderde Hallo,

ik heb een upload-formulier.
ik heb het volgende bestand waarvan de naam in een database moet komen:
Capricorn-'CapricornVillage'-Ted Maijer(Tacx) 15-10-2001.im

Hij geeft het als volgt weer in de database:
-Ted Maijer(Tacx) 15-10-2001.im

  1. <?PHP
  2. echo addslashes($_FILES['bestand']['name']);
  3. ?>


als ik het zo wil laten zien dan geeft hij het ook verkeert weer.

Hoe kan ik ervoor zorgen dat hij de hele bestandsnaam in de tabel plaatst?


Groeten, Roy

PS. is er meer script nodig?

38 antwoorden

Gesponsorde links
Offline Fenrir - 29/01/2005 20:34
Avatar van Fenrir PHP expert probeer eens error_reporting(E_ALL) bovenaan.
en var_dump($_FILES);
Offline roy - 29/01/2005 20:41 (laatste wijziging 29/01/2005 21:24)
Avatar van roy PHP gevorderde ik denk dat het niet zozeer een error is...
hij heeft gewoon moeite met de aanhalingstekens in de naam.

EDIT: wat je zei haalt niks uit.

Ik zou het erg leuk vinden als iemand weet hoe ik de hele bestandsnaam in de tabel kan zetten.
Offline numlockrond - 29/01/2005 21:28 (laatste wijziging 29/01/2005 21:28)
Avatar van numlockrond Onbekend als magic_quotes_gpc aanstaat zou het gewoon moeten werken. En anders zou addslashes() de oplossing moeten zijn.

Of je moet iets anders met quotes doen waardoor het fout gaat....
Offline roy - 29/01/2005 21:33 (laatste wijziging 29/01/2005 21:35)
Avatar van roy PHP gevorderde dit is mijn query:

  1. <?
  2. $queryzin = "INSERT INTO ".$tabelnaam." (".$uniekveld.", ".$origineelveld.", ".$mimeveld.") VALUES ('".addslashes($uniekenaam)."', '".addslashes($_FILES['bestand']['name'])."','".addslashes($_FILES['bestand']['type'])."')";
  3. mysql_query($queryzin) or die($queryzin."<br>".mysql_error());
  4. ?>


Met addslashes dus, maar dat werkt zo niet.
Doe ik het verkeerd?

Het is me ooit gelukt om het zo in de tabel op te slaan:
Capricorn-\'CapricornVillage\'-Ted Maijer(Tacx) 15-10-2001.im

Helaas ben ik vergeten hoe:s want op deze manier doe je stripslashes...

ps. Zal ik je de hele code mailen?
Offline Addow - 29/01/2005 21:54 (laatste wijziging 29/01/2005 21:54)
Avatar van Addow Gouden medaille

PHP beginner
Het blijft wel een mysterie... volgens mij is addslashes() de enige goeie oplossing...

Of moet je anders met onderstaande 't oplossen:

  1. <?
  2.  
  3. $bestandsnaam = str_replace("\'","\\'",$_FILES['bestand']['name']);
  4.  
  5. ?>
Offline numlockrond - 29/01/2005 21:57
Avatar van numlockrond Onbekend wat zie je precies als je $_FILES['bestand']['name'] echoot met en zonder addslashes???
Offline roy - 29/01/2005 21:59 (laatste wijziging 29/01/2005 22:02)
Avatar van roy PHP gevorderde edit: dan zie ik het gedeelte na de tweede ', dus: -Ted Maijer(Tacx) 15-10-2001.im

het werkt nog steeds niet:( heel raar dat dit niet even met addslashes kan. Zal ik het hele script er even bij zetten?
Offline Addow - 29/01/2005 22:03
Avatar van Addow Gouden medaille

PHP beginner
Mss wel, dan kunnen we met z'n allen het mysterie oplossen...
Offline roy - 29/01/2005 22:05
Avatar van roy PHP gevorderde
  1. <?
  2.  
  3. if ($_FILES['bestand']) {
  4.  
  5. //************* te editeren *******************
  6.  
  7.  
  8. //tabeldinges
  9. $tabelnaam = "tacx"; //naam van de tabel
  10. $origineelveld = "origineel"; //naam van de velden in je tabel
  11. $uniekveld = "uniek"; //naam van de velden in je tabel
  12. $mimeveld = "mime"; //naam van de velden in je tabel
  13.  
  14. //volgende var is het pad waar alles wordt opgeslagen.
  15. $eindlocatie = $_SERVER['DOC_ROOT']."/var/www/html/tacx/files/tacx/"; //echo deze variabele als je niet zeker bent!
  16.  
  17. //*********************************************
  18.  
  19. if (!is_dir($eindlocatie)) {
  20. die("er is een probleem met de eindlocatie, het is geen dir!<br>".$eindlocatie."<br> controleer eens of dir bestaat!");
  21. } else {
  22. echo "ok, de directory bestaat!<br>";
  23. }
  24. if (!is_writable($eindlocatie)) {
  25. die("uw dir is niet schrijfbaar!");
  26. } else {
  27. echo "en ik kan naar de directory schrijven<br>";
  28. }
  29. echo $uniekenaam = date("YmdHis"), "<br>";
  30. echo $_FILES['bestand']['name'];
  31.  
  32. if ( move_uploaded_file($_FILES['bestand']['tmp_name'], $eindlocatie.$uniekenaam) ) {
  33. echo $queryzin = "INSERT INTO ".$tabelnaam." (".$uniekveld.", ".$origineelveld.", ".$mimeveld.") VALUES ('".addslashes($uniekenaam)."', '".addslashes($_FILES['bestand']['name'])."','".addslashes($_FILES['bestand']['type'])."')";
  34. mysql_query($queryzin) or die($queryzin."<br>".mysql_error());
  35. echo "<br>goodie, het bestand werd goed getransporteerd en de info kwam in de database!<br>";
  36. } else {
  37. //gn transport
  38. echo "<font color=red>geen transport</font><br>";
  39. }
  40. }
  41. ?>
  42. <form action="upload2.php" method="post" enctype="multipart/form-data">
  43. <input type="file" name="bestand"><br>
  44. <input type="submit" name="versturen" value="versturen">
  45. </form>


NB. de connectie is eruit gehaald.
Offline Addow - 29/01/2005 22:08 (laatste wijziging 29/01/2005 22:09)
Avatar van Addow Gouden medaille

PHP beginner
Ehm, roy, ik heb eens kort een scriptje geschreven:

  1. <?php
  2.  
  3. if(isset($_FILES['bestand'])) {
  4. echo $_FILES['bestand']['name']."<br>";
  5. echo addslashes($_FILES['bestand']['name']);
  6. } else {
  7.  
  8. ?>
  9. <form action="" enctype="multipart/form-data" method="post">
  10. <input type="file" name="bestand" class="button"><br>
  11. <input type="submit" name="submit" value="Verzend" class="submit">
  12. </form>
  13. <?
  14. }
  15.  
  16. ?>


En dit was m'n uitvoer na 't invoegen van EXACT hetzelfde bestand als 't jouwe:

  1. Capricorn-\'CapricornVillage\'-Ted Maijer(Tacx) 15-10-2001.im
  2. Capricorn-\\\'CapricornVillage\\\'-Ted Maijer(Tacx) 15-10-2001.im
Offline roy - 29/01/2005 22:10 (laatste wijziging 30/01/2005 17:35)
Avatar van roy PHP gevorderde hoe kan dat?

Dat is mijn hele script, en zo geeft hij het echt niet weer bij mij...
Offline b4nkr0bz0r - 29/01/2005 22:13
Avatar van b4nkr0bz0r PHP gevorderde if ($_FILES['bestand']) {

wat wordt hiermee bedoeld ?

Offline roy - 29/01/2005 22:14
Avatar van roy PHP gevorderde hij POST het naar zichzelf dus alleen als er een bestand is moet hij tot verdere actie overgaan?
Offline Addow - 29/01/2005 22:14 (laatste wijziging 29/01/2005 22:16)
Avatar van Addow Gouden medaille

PHP beginner
of er een "submit" is geweest...

Als er gegevens gepost zijn -> dan dit
anders -> dat


Edit Addow
Zet eens isset() daarrond, das properder... 


Second edit Addow
Hebt gij ergens in uw instellingen staan dat ne betandsnaam maar maximum 31 tekens mag hebben fzow? 
Offline roy - 29/01/2005 22:17 (laatste wijziging 29/01/2005 22:30)
Avatar van roy PHP gevorderde EDIT: tabelinstelling staan op 255

EDIT 2: Jou stukje script werkt bij mij ook niet 

ik heb dat gedaan, maar nog steeds geen addslashes:'(
Offline b4nkr0bz0r - 29/01/2005 22:22
Avatar van b4nkr0bz0r PHP gevorderde als je zo chaotisch gaat scripte weet ik natuurlijk niet waneer jij je gesubmite form sluit 

doe gewoon zo:
  1. <?php
  2. if (IsSet($_FILES['files']))
  3. {
  4. $blaat = 9;
  5. $blaat++;
  6. if ($blaat == 10)
  7. {
  8. // zo houd je het netjes
  9. }
  10. else
  11. {
  12. }
  13. // einde else : nog niet gesubmit
  14. ?>
Offline roy - 29/01/2005 23:02 (laatste wijziging 30/01/2005 00:07)
Avatar van roy PHP gevorderde @Addow of iemand anders...: hoe kan het dat jou scriptje bij mij ook tot het verkeerde resultaat leidt?

waarom werkt dit simpele script zelfs niet?

  1. <?php
  2.  
  3. if(isset($_FILES['bestand'])) {
  4. $image = $_FILES['bestand']['name'];
  5. echo "".addslashes($image)."";
  6. } else {
  7.  
  8. ?>
  9. <form action="" enctype="multipart/form-data" method="post">
  10. <input type="file" name="bestand" class="button"><br>
  11. <input type="submit" name="submit" value="Verzend" class="submit">
  12. </form>
  13. <?
  14. }
  15.  
  16. ?>


waar kan het aan liggen?
Offline numlockrond - 30/01/2005 11:37
Avatar van numlockrond Onbekend je blijft steeds zeggen "het werkt niet". Het is voor ons iets duidelijker als je zegt wat er niet werkt, maar ik neem aan dat je gewoon precies hetzelfde krijgt als in je openingspost.

eerst ff een vraagje: welke php versie heb je??

of heb je andere rare dingen op je server, zoals een onbekende webserver ipv Apache??
Offline roy - 30/01/2005 13:06 (laatste wijziging 30/01/2005 17:16)
Avatar van roy PHP gevorderde ik heb versie 4.3.10 zonde rare dingen.

ik heb dit script:

  1. <?php
  2.  
  3. if(isset($_FILES['bestand'])) {
  4. $image = $_FILES['bestand']['name'];
  5. echo addslashes($image);
  6. } else {
  7.  
  8. ?>
  9. <form action="" enctype="multipart/form-data" method="post">
  10. <input type="file" name="bestand" class="button"><br>
  11. <input type="submit" name="submit" value="Verzend" class="submit">
  12. </form>
  13. <?
  14. }
  15.  
  16. ?>


en ik selecteer dit bestand:
Capricorn-'CapricornVillage'-Ted Maijer(Tacx) 15-10-2001.im

in me uitvoer krijg ik:
-Ted Maijer(Tacx) 15-10-2001.im

terwijl ik dit zou moeten krijgen:
Capricorn-\'CapricornVillage\'-Ted Maijer(Tacx) 15-10-2001.im

http://www.klikgo.nl/test.php

Weet iemand hoe ik dat voor elkaar moet krijgen?
Offline Fenrir - 30/01/2005 17:40
Avatar van Fenrir PHP expert probeer dit toch maar eens, en vertel wat de output is:

  1. <?php
  2.  
  3. if(isset($_FILES['bestand'])) {
  4. var_dump($_FILES);
  5. } else {
  6.  
  7. ?>
  8. <form action="" enctype="multipart/form-data" method="post">
  9. <input type="file" name="bestand" class="button"><br>
  10. <input type="submit" name="submit" value="Verzend" class="submit">
  11. </form>
  12. <?
  13. }
  14.  
  15. ?>
Offline roy - 30/01/2005 17:58 (laatste wijziging 30/01/2005 18:53)
Avatar van roy PHP gevorderde dit:

array(1) { ["bestand"]=> array(5) { ["name"]=> string(40) "-Bert v Zantvoort(Tacx) 09-05-2004-#1.im" ["type"]=> string(24) "application/octet-stream" ["tmp_name"]=> string(14) "/tmp/phprj66Ve" ["error"]=> int(0) ["size"]=> int(134381) } }

met dit bestand:
Capricorn-'Challenge 2'-Bert v Zantvoort(Tacx) 09-05-2004-#1.im
Offline Addow - 30/01/2005 19:02
Avatar van Addow Gouden medaille

PHP beginner
Na een nachtje slapen blijkt het nog steeds een waanzinnig mysterie... volgens mij moeten we der FangoRn gaan bijhalen... ik weet er echt geen raad meer mee 

roy, wil je nog eens iets doen?? Wil je eens een bestand aanmaken met volgende naam:

Capricorn_Challenge_2_Bert_van_Zantvoort(Tacx)_09_05_2004_1.im en dat dan eens verzenden??
Offline roy - 30/01/2005 19:09
Avatar van roy PHP gevorderde dat werkt wel:)

maar die aanhalingstekens zijn nodig voor het programma..
Offline Addow - 30/01/2005 19:23
Avatar van Addow Gouden medaille

PHP beginner
Goed, roy, na wat naslagwerk heb ik je probleem gevonden...

Je host laat namelijk geen automatische toevoeging van slashes bij quotes toe. Normaliter wordt er automatisch een \ voor een ' of " geplaatst bij het verzenden van formulieren, maar je kan dit ook afzetten in je php.ini bestand.

Je host heeft dit hoogstwaarschijnlijk uitgeschakeld. Controleer eens met:



Als je dat bij je offline server wilt aanpassen. Zoek eens in je php.ini file naar "magic_quotes", en daarbij krijg je het volgende:

  1. ; Magic quotes for incoming GET/POST/Cookie data.
  2. magic_quotes_gpc = On


Bedoeling is dus dat die op "ON" staat!


Weet je dit alles eens te verifiëren?!


-> ik edit dadelijk nog met een eventuele andere oplossing...want je kan moeilijk de php.ini file aanpassen bij je host ;)
Offline numlockrond - 30/01/2005 19:30
Avatar van numlockrond Onbekend
Citaat:
Goed, roy, na wat naslagwerk heb ik je probleem gevonden...

Je host laat namelijk geen automatische toevoeging van slashes bij quotes toe.
Hoe weet je zo zeker dat dat zijn probleem is?? Het lijkt er idd op dat magic_quotes_gpc bij hem uitstaat en ik had ook al zo'n soort berichtje getypt, maar toch maar niet gepost omdat ik dacht dat het probleem daar niet zou zitten en ik was ook te lui om het op mijn server uit te zetten om zo te testen.

Maar goed. Als dat het is kun je dit in een .htaccess bestand zetten:

  1. php_flag magic_quotes_gpc on
Offline Fenrir - 30/01/2005 19:31 (laatste wijziging 30/01/2005 19:31)
Avatar van Fenrir PHP expert Je kunt ook met htaccess je php.ini voor een bepaalde dir veranderen.
Of met ini_set().
http://www.php.net/ini_set

EDIT:
Je was eerder 
Offline Addow - 30/01/2005 19:33 (laatste wijziging 30/01/2005 19:34)
Avatar van Addow Gouden medaille

PHP beginner
Idd, en om de samenwerking gans compleet te maken:

Wat Fenrir aanhaalt ivm ini_set(), gewoon volgende doen:

  1. <? ini_set("magic_quotes_gpc", "1"); ?>


en moet 't niet

  1. php_value magic_quotes_gpc 1

zijn? of kan dat beiden?
Offline numlockrond - 30/01/2005 19:35 (laatste wijziging 30/01/2005 19:40)
Avatar van numlockrond Onbekend
Citaat:
Of met ini_set().
In dit geval (lees: bij deze optie) kan het alleen in php.ini of in .htaccess (op php.net kun je ook zien hoe je welke instellingen kunt aanpassen).

Edit:
Citaat:
en moet 't niet

php_value magic_quotes_gpc 1

zijn? of kan dat beiden?
Kan allebei dacht ik.
Offline roy - 30/01/2005 20:53
Avatar van roy PHP gevorderde
Citaat:
<?

echo get_magic_quotes_gpc();

?>


er komt een 1 te staan
Offline numlockrond - 30/01/2005 21:11
Avatar van numlockrond Onbekend dan staat het dus aan. Dacht al dat het probleem daar niet kon zitten...

maar waar dan wel... Het heeft toch iets met die quotes te maken. Ik zou zo'n geen instelling weten die dat kan veroorzaken. Misschien helpt een nachtje slapen... 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.358s