[PHP] komma teken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik probeer via een php script een bestand te openen op de server, dit gaat goed tot er een bestand staat met een ' teken in de naam:

echo "<a target='_blank' href='viewer.php?bestand=$bestand'>

Door het ' teken word de bestandsnaam halfverwege afgebroken. (bv blabla's.txt word dan aangeroepen als blabla)

Ik heb het volgende al geprobeerd:
$bestand = eregi_replace("'","\'",$bestand);

dit zet dus een \ voor de ' maar ook dit lost mijn probleem niet op..

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 19:50

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
PHP:
1
echo '<a target="_blank" href="viewer.php?bestand=$bestand">';

:) ?

Er zijn mooiere oplossingen, die mag iemand anders geven :P

[ Voor 110% gewijzigd door We Are Borg op 11-11-2005 10:46 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als je nou niks te zeggen hebt.. doe het dan ook niet.

Acties:
  • 0 Henk 'm!

  • ReZ1987
  • Registratie: September 2003
  • Laatst online: 19:22
PHP:
1
echo "<a target=\"_blank\" href=\"viewer.php?bestand=$bestand\">";


Werkt zoiets niet? :)

Death Knight Zaebor(80), Warlock Thortur (80) en Druid Galithor (80). Retired.


Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij slaap je nog mr. Borg :+

PHP:
1
echo'<a target="_blank" href="viewer.php?bestand=' . $bestand . '">';


of

PHP:
1
echo "<a target=\"_blank\" href=\"viewer.php?bestand={$bestand}\">";


(kan ook zonder die { en } als het een array is met een string als sleutel dan moet je { en } gebruiken)

[ Voor 40% gewijzigd door Verwijderd op 11-11-2005 10:52 ]


Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 19:50

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Verwijderd schreef op vrijdag 11 november 2005 @ 10:50:
Als je nou niks te zeggen hebt.. doe het dan ook niet.
Aangezien je zo vriendelijk bent :)

http://www.planet.nl/~terps407/voorbeeld.html

Omdat ik dubbele quotes gebruik (zoals het hoort) wordt je url niet afgebroken als er een ' in voorkomt. Of ik moet heel erg slapen, maar ik gok van niet :). Kijk eens goed naar de verschillen in mijn vorige post

[ Voor 8% gewijzigd door We Are Borg op 11-11-2005 10:54 ]


Acties:
  • 0 Henk 'm!

Verwijderd

$bestand wordt in een single-quoted string niet echt geparsed he...

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 19:50

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
oeps :P Dan is jouw eerste oplossing beter idd ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Het enige correcte hier is:

code:
1
2
3
<?
echo'<a target="_blank" href="viewer.php?bestand=' . urlencode($bestand) . '">';
?>


Een bestandsnaam kan namelijk potentieel nog andere karakters bevatten die van betekenis zijn in een url (zoals & of #)

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
$bestand = urlencode($bestand);

edit: net te laat :| :P

[ Voor 31% gewijzigd door Shadowman op 11-11-2005 11:05 ]


Acties:
  • 0 Henk 'm!

Verwijderd

idd das nog veel beter.

Ik snap alleen niet waarom je die rare tekens in een bestandsnaam moet zetten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
We Are Borg schreef op vrijdag 11 november 2005 @ 10:54:
[...]

Aangezien je zo vriendelijk bent :)

http://www.planet.nl/~terps407/voorbeeld.html

Omdat ik dubbele quotes gebruik (zoals het hoort) wordt je url niet afgebroken als er een ' in voorkomt. Of ik moet heel erg slapen, maar ik gok van niet :). Kijk eens goed naar de verschillen in mijn vorige post
Sorry, ik dacht eigenlijk dat je bedoelde dat ik variabeles gebruikte in mijn url :+
Maarre.. ik heb het nu zo staan:
PHP:
1
<a href=\"viewer.php?bestand=" . $bestand . "\">

maar dit geeft als resultaat:
Warning: fopen \'s Blaa
Er word nu dus een \ voorgezet, waardoor hij het bestand niet kan vinden
deze code :
$bestand = eregi_replace("'","/'",$bestand)
heb ik alverwijderd dus daar ligt het niet aan :)

[ Voor 7% gewijzigd door Verwijderd op 11-11-2005 11:12 ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Verwijderd schreef op vrijdag 11 november 2005 @ 11:11:
[...]
Sorry, ik dacht eigenlijk dat je bedoelde dat ik variabeles gebruikte in mijn url :+
Maarre.. ik heb het nu zo staan:
PHP:
1
<a href=\"viewer.php?bestand=" . $bestand . "\">

maar dit geeft als resultaat:
Warning: fopen \'s Blaa
Er word nu dus een \ voorgezet, waardoor hij het bestand niet kan vinden
deze code :
$bestand = eregi_replace("'","/'",$bestand)
heb ik alverwijderd dus daar ligt het niet aan :)
1. Gebruik gewoon urlencode(), daar is ie voor.
2. Je hebt magic quotes aanstaan. Met url encoded input heb je daar geen last van. Met urldecode() krijg je de speciale karakters weer terug :)

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Probeer dit maar eens:
PHP:
1
echo '<a target="_blank" href="viewer.php?bestand=' . urlencode($bestand) . '">';

edit:
Ik moet even refreshen voor ik post. :P

En zo'n vervelende post die je als reactie postte op We Are Borg's reply zien we hier liever niet. Jij bent degene die geholpen wil worden, We Are Borg doet zijn best. Iedereen maakt wel eens een foutje. :)

[ Voor 8% gewijzigd door NMe op 11-11-2005 11:25 ]

'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.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op vrijdag 11 november 2005 @ 11:08:
idd das nog veel beter.

Ik snap alleen niet waarom je die rare tekens in een bestandsnaam moet zetten.
urlencode werkt ook niet, rare tekens?
deze tekens komen vaak voor in plaatsnamen en achternamen, bijv:
's Gravenhage

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op vrijdag 11 november 2005 @ 11:24:
urlencode werkt ook niet, rare tekens?
Hoezo, werkt niet? Foutmelding?
deze tekens komen vaak voor in plaatsnamen en achternamen, bijv:
's Gravenhage
Dat wil niet zeggen dat die tekens ook in je bestandsnaam moeten staan. Kun je die bestandsnaam niet opschonen naar alleen (kleine?) letters en cijfers, en de volledige naam van die plaats ergens anders opslaan?

'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.


Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op vrijdag 11 november 2005 @ 11:24:
En zo'n vervelende post die je als reactie postte op We Are Borg's reply zien we hier liever niet. Jij bent degene die geholpen wil worden, We Are Borg doet zijn best. Iedereen maakt wel eens een foutje. :)
Tuurlijk iedereen maakt wel eens een foutje, het zou saai worden als dat niet zo was. Ik mag dat dan toch wel opmerken.

En natuurlijk bedoel ik het niet vervelend, alle respect voor "We Are Borg" :)

edit:

Die smiley met die rode neus is er toch niet voor niks.

OT:

Of je vervangt de alle rare tekens ( ', &, #, etc ) door een underscore ( _ )

[ Voor 25% gewijzigd door Verwijderd op 11-11-2005 11:40 ]


Acties:
  • 0 Henk 'm!

  • GambitRS
  • Registratie: Juni 2001
  • Laatst online: 13-06-2013

GambitRS

w00t

Verwijderd schreef op vrijdag 11 november 2005 @ 10:50:
Als je nou niks te zeggen hebt.. doe het dan ook niet.
-NMe- schreef op vrijdag 11 november 2005 @ 11:24:
En zo'n vervelende post die je als reactie postte op We Are Borg's reply zien we hier liever niet. Jij bent degene die geholpen wil worden, We Are Borg doet zijn best. Iedereen maakt wel eens een foutje. :)
Speciaal voor SandStormer :+

MechWarrior || Monsters Game


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Verwijderd schreef op vrijdag 11 november 2005 @ 11:24:
[...]
urlencode werkt ook niet, rare tekens?
deze tekens komen vaak voor in plaatsnamen en achternamen, bijv:
's Gravenhage
Met urldecode() worden dit weer de gewenste speciale tekens...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

OK, ff een middag dutje :)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op vrijdag 11 november 2005 @ 10:40:
Ik probeer via een php script een bestand te openen op de server, dit gaat goed tot er een bestand staat met een ' teken in de naam:

echo "<a target='_blank' href='viewer.php?bestand=$bestand'>

Door het ' teken word de bestandsnaam halfverwege afgebroken. (bv blabla's.txt word dan aangeroepen als blabla)

Ik heb het volgende al geprobeerd:
$bestand = eregi_replace("'","\'",$bestand);

dit zet dus een \ voor de ' maar ook dit lost mijn probleem niet op..
Ik ben benieuwd wat viewer.php?bestand=/etc/passwd doet.... ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op vrijdag 11 november 2005 @ 11:52:
[...]


Ik ben benieuwd wat viewer.php?bestand=/etc/passwd doet.... ;)
niks :)
$submap = str_replace('..',"",$submap);
$map = str_replace('..',"",$map);
$bestand = str_replace('..',"",$bestand);

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
T-MOB schreef op vrijdag 11 november 2005 @ 11:44:
[...]


Met urldecode() worden dit weer de gewenste speciale tekens...
$_GET['bestand'] wordt automatisch ge-urldecoded.

Denk dat het dan eerder aan de magic quotes ligt.

@zwa: zou ik niet zo zeker van zijn :), ik zie namelijk geen .. in het voorbeeld van 4np en ik kan zo ook niet zien of je de bestanden in een aparte directory hebt staan (zo ja, dan doet het idd niets.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
T-MOB schreef op vrijdag 11 november 2005 @ 11:44:
[...]


Met urldecode() worden dit weer de gewenste speciale tekens...
Ja dit probeerde ik al.. maar dan nog werkt het niet.. blijft een \ voor staan

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Shadowman schreef op vrijdag 11 november 2005 @ 12:03:
[...]

$_GET['bestand'] wordt automatisch ge-urldecoded.

Denk dat het dan eerder aan de magic quotes ligt.

@zwa: zou ik niet zo zeker van zijn :), ik zie namelijk geen .. in het voorbeeld van 4np en ik kan zo ook niet zien of je de bestanden in een aparte directory hebt staan (zo ja, dan doet het idd niets.
Jawel want er word voor $bestand nog een pad naam gezet.
$bestand = /blabla/$bestand

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
$bestand = stripslashes($bestand);

werkt :)

Misschien niet de beste oplossing maarja..

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op vrijdag 11 november 2005 @ 12:03:
Ja dit probeerde ik al.. maar dan nog werkt het niet.. blijft een \ voor staan
Dan zet je magic_quotes uit als dat kan (in je php.ini), of je probeert het uit te zetten via .htaccess, is genoeg over te vinden. Desnoods vervang je zelfs gewoon alle \'s in je filenaam (mits je op een niet-Windows-systeem werkt), want die zullen niet voorkomen in je filenames lijkt me.

'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.


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op vrijdag 11 november 2005 @ 12:10:
$bestand = stripslashes($bestand);

werkt :)

Misschien niet de beste oplossing maarja..
magic_quotes vind ik meer baggerwerk dan het gebruik van stripslashes om dat te omzeilen. (magic_quotes is imho een "oplossing" om beginners in php ook te kunnen laten scripten zonder al te veel gevaar op securitybugs).
Pagina: 1