PHP kapt filenaam af na '
Dus: "Johan's pc.jpg" wordt "s pc.jpg" na uploaden...
Ik heb al wat rondgezocht en het is me allemaal onduidelijk. Op veel site (waaronder php.net) lees ik dat het is opgelost na PHP 4, maar bij mij niet. Ook wil ik voorkomen dat ik grote PHP versie wijzigingen door moet voeren aangezien dat gepaard gaat met veel testen en herschrijven...
Iemand bekend met dit probleem en een (simpele) oplossing daarvoor?
Heb je een stukje relevante code?
Toon es code hoe je test wat de filename is?
In een filename hoort zowieso geen ' te staan..
$_FILES['file']['name'] geeft al de verkeerde output...
In mijn geval heb ik inderdaad niet in de hand wat voor soort documentnamen er worden gehanteerd. Aangezien Windows het gewoon toelaat om ' te gebruiken in documentnamen, zijn er een hoop mensen die dat doen...
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Dat klopt. Maar dat heb je niet altijd zelf in de hand en aangezien Windows het wel toelaat...
Geef dan een foutmelding?
Kan ik misschien op een andere manier de naam uitlezen en dat ik dan het document 'hernoem'...?
Wouter schreef op 16.05.2009 14:42:
Dat klopt. Maar dat heb je niet altijd zelf in de hand en aangezien Windows het wel toelaat...
Hoezo niet? Tuurlijk heb je dat zelf in de hand.
En dat Windows dat toelaat is één van de redenen dat Windows zo'n buggy software is.
Zodat de pagina dan kan melden dat bestanden met een ' niet toegelaten worden in het systeem van wouter.
Dan is Johan de naam en wat daar achter staat zijn slechts parameters voor Johan. Dat Windows daar weer een eigen variant op heeft gemaakt doet eigenlijk niet terzake.
Niemand heeft al eerder dit probleem meegemaakt?
SanThe schreef op 16.05.2009 14:55:
Hoezo niet? Tuurlijk heb je dat zelf in de hand.
En dat Windows dat toelaat is één van de redenen dat Windows zo'n buggy software is.
En dat Windows dat toelaat is één van de redenen dat Windows zo'n buggy software is.
Haha, ik kan hier op OS X zelfs slashes en backslashes gebruiken in de bestandsnaam >:)
Anyway, kan je het ook testen of het op andere configuraties (andere webserver, apache, andere versie van PHP) wel werkt? Hier onder OS X, Apache2, PHP 5.3rc1 werkt het namelijk wel gewoon zoals je zou verwachten.
Ik draai IIS 7.0 op een Windows Server 2008 machine. Normaal met PHP versie 5.2.6 Ik kan ook versie 4.4.7 draaien, maar dan blijft hetzelfde probleem bestaan...
Code (php)
1
2
3
2
3
<?php
str_replace(array("\\","/","*","\"","<",">","|","#","'"),array("","","","","","","","",""),$string);
?>
str_replace(array("\\","/","*","\"","<",">","|","#","'"),array("","","","","","","","",""),$string);
?>
Dat klopt, maar in de $string ($_FILES['file']['name']) is het al afgekapt. Het eerste moment waarop de bestandsnaam in een array (var) terecht komt, is de naam al afgekapt... Latere controles of vervangingen zijn dan al te laat...
http://be.php.net/urlencode )
$filenaam = urlencode ($filenaam) ;
Karakters die een actieve rol spelen in html, php, ... worden dan omgezet in karakters met % notatie.
anders een simpele oplossing: urlencode ( $filenaam = urlencode ($filenaam) ;
Karakters die een actieve rol spelen in html, php, ... worden dan omgezet in karakters met % notatie.
http://bugs.php.net, of op weblogs. Want zoals jij het omschrijft klinkt het meer als een fout van PHP zelf, of van PHP in combinatie met IIS 7 dan iets wat je zelf even kan oplossen.
Maar het klinkt alsof het probleem al eerder optreedt, bij het "opstarten" van PHP wanneer je een bestand er naartoe stuurt. Misschien dat je er iets over terug kan vinden op Erg raar... Ik kan toch niet de enige zijn?
http://bugs.php.net/bug.php?id=39604
http://snewscms.com/forum/index.php?topic=7917.0
Geen flauw id of het op jouw van toepassing is, maar je kunt er altijd naar kijken.
http://www.sharemobile.ro/upload.php
Edit:
hihi typ eens < php upload "apostrof" > in bij google, dan komt er een waarschuwing, alsof php spyware is:P