PHP welke characters escapen?

Pagina: 1
Acties:
  • 151 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mensen,

Ik wil een .php bestand schrijven dmv php maar nu heb ik als $content een php include.
PHP:
1
$content = "<?php include('$_SERVER['DOCUMENT_ROOT'] . '/nabestelservice/includes/index.php'); ?>";


Welke characters moet ik escapen om de inhoud van $content weg te kunnen schrijven? Heb al addslashes() gebruikt maar dit haalde nix uit.

bvd,

Acties:
  • 0 Henk 'm!

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 19-08 08:24

PowerSp00n

There is no spoon

Geen, bekijk eerst eens welke code er in $content zit want daar zit dus sowieso al een fout in.

Acties:
  • 0 Henk 'm!

Verwijderd

Hmm...probeer dit is:

PHP:
1
$content = "<?php include('{$_SERVER['DOCUMENT_ROOT']} /nabestelservice/includes/index.php'); ?>";

[ Voor 19% gewijzigd door Verwijderd op 26-01-2005 18:07 ]


Acties:
  • 0 Henk 'm!

  • PowerSp00n
  • Registratie: Februari 2002
  • Laatst online: 19-08 08:24

PowerSp00n

There is no spoon

:X hint: de eerste poging, de eerste enkele quote....

Acties:
  • 0 Henk 'm!

Verwijderd

De parser van GoT geeft de fout zelfs al aan.

Acties:
  • 0 Henk 'm!

Verwijderd

Die geeft mijn stukje code ook fout aan, maar die werkt toch echt...
...de parser van dreamweaver geeft dat overigens wel goed aan...

Acties:
  • 0 Henk 'm!

  • Kid Buu
  • Registratie: December 2000
  • Laatst online: 21-09 13:12

Kid Buu

Huh, Pietje?

passthru()?

"It was bad enough seeing the demon this close up. Far worse . . . it saw me. As weak and near death as the thing was, it recognized a living human a few inches away. Very slowly, it raised its missile hand."


Acties:
  • 0 Henk 'm!

  • Metten
  • Registratie: September 1999
  • Laatst online: 08:49

Metten

ik hou het graag simpel

gewoon die eerste quote voor $_SERVER weghalen, dan moet het goed zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij moet je er gewoon voor zorgen dat ie $_SERVER echt als een variabele ziet. Daarnaast eindigt $_SERVER['DOCUMENT_ROOT'] met een /, dus moet je die daarna niet meer zetten.

code:
1
$content = "<?php include($_SERVER['DOCUMENT_ROOT'] .'nabestelservice/includes/index.php'); ?>";

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
$content = '<?php include(dirname(__FILE__)."/nabestelservice/includes/index.php"); ?>';


Should work :). Ik vermijd $_SERVER zoveel mogelijk ;) en door ' als buitenste quoteste nemen vermijd je veel escapewerk .
Ik vraag me ook af waarom je die $_SERVER zo binnen de ' wou trekken :s.

[ Voor 31% gewijzigd door Verwijderd op 26-01-2005 20:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op woensdag 26 januari 2005 @ 20:06:
Volgens mij moet je er gewoon voor zorgen dat ie $_SERVER echt als een variabele ziet. Daarnaast eindigt $_SERVER['DOCUMENT_ROOT'] met een /, dus moet je die daarna niet meer zetten.

code:
1
$content = "<?php include($_SERVER['DOCUMENT_ROOT'] .'nabestelservice/includes/index.php'); ?>";
die gaat het niet doen hoor...en wel omdat ie fouten gaat geven op $_SERVER['...']...

de single quote moet overigens WEL voor $_SERVER komen, alleen niet erna...dit wordt namelijk een stukje php code, en dat moet(als ik de TS goed begrepen heb) zoiets worden:
PHP:
1
2
3
<?php
include('/pathtosite/nabestelservice/includes/index.php');
?>


dus...ik verwijs naar mn eerste post...die werkt gegarandeert!! :)
Verwijderd schreef op woensdag 26 januari 2005 @ 20:11:
PHP:
1
$content = '<?php include(dirname(__FILE__)."/nabestelservice/includes/index.php"); ?>';


Should work :). Ik vermijd $_SERVER zoveel mogelijk ;) en door ' als buitenste quoteste nemen vermijd je veel escapewerk .
Ik vraag me ook af waarom je die $_SERVER zo binnen de ' wou trekken :s.
die functie dirname() wordt niet uitgevoerd, en das logisch aangzien ie tussen quotes staat. Hij wordt gewoon als normale text gezien....

[ Voor 29% gewijzigd door Verwijderd op 26-01-2005 20:25 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op woensdag 26 januari 2005 @ 20:19:
die functie dirname() wordt niet uitgevoerd, en das logisch aangzien ie tussen quotes staat. Hij wordt gewoon als normale text gezien....
Die moet niet in dit script worden uitgevoerd he, die moet uitgevoerd worden in het script waar hij terecht komt en daar staan er geen quotes rond (althans, dat is denk ik de bedoeling van de topicstarter ;)).

[ Voor 5% gewijzigd door Verwijderd op 26-01-2005 20:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Je moet jezelf goed afvragen wát je in je variabele wilt stoppen... Wil je de waarde van $_SERVER daarin zetten of wil je dat de $_SERVER variabele pas aangeroepen wordt als je uiteindelijk gegenereerde script (met behulp van de waarde van $content dus..) aangeroepen wordt?

Het is goed mogelijk wat je wilt, maar vraag jezelf eerst af wat je wilt en ga dan stap voor stap bekijken hoe je dat kunt oplossen. Je hebt er een hoop aan als je eerst op beeld echo't wat je in je variabele wilt stoppen.. :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
$somecontent = "<?php include('{$_SERVER['DOCUMENT_ROOT']}/nabestelservice/includes/index.php'); ?>"; 

WERKT!!!! _/-\o_

Maar waarom accolades?

Ik gebruikte $_SERVER ['DOCUMENT_ROOT'] omdat ik problemen had met echte paden vanaf de root met een aantal van mij scripts. Waarschijnlijk komt dat door mijn manier van programmeren maar ok....

Het feit dat ik dit wil schrijven in een bestand is omdat ik bezig ben met een script dat een bepaalde directory moet uitlezen met foto's waarbij de website bezoeker van het volledige path gebruik moet maken.

bijv: www.fotos.nl/klaasje-martine/

Multiviews heb ik naar zitten kijken maar dat word niet altijd ondersteund door alle webproviders.
en omdat de "admin" alle foto's wil uploaden(soms 500) via ftp-browser was ik verplicht om het dus zo tedoen met een activatie gedeelte

Ik ben nu alleen nog bezig om deze directories automatisch te kunnen chmodden alleen is 1 probleem dat sommige hostingbedrijven geen php-ftp support bieden. En exec(chmod) is ook geen optie omdat de webuser gewoon niet genoeg rechten heeft.

[ Voor 23% gewijzigd door Verwijderd op 26-01-2005 22:16 . Reden: Vraag erbij ]


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 26 januari 2005 @ 22:13:
PHP:
1
$somecontent = "<?php include('{$_SERVER['DOCUMENT_ROOT']}/nabestelservice/includes/index.php'); ?>"; 

WERKT!!!! _/-\o_

Maar waarom accolades?
Accolades worden gebruikt om tegen PHP te zeggen: gebruik dit niet letterlijk, het is een variabele. Iets wat je veel beter op de nette manier kan bereiken:
PHP:
1
2
3
<?php
$somecontent = "<?php include($_SERVER['DOCUMENT_ROOT'] . '/nabestelservice/includes/index.php'); ?>";
?>

Variabelen gebruiken in strings is gewoon smerig, alleen al om het feit dat ze niet alszodanig gehighlight worden in je editor. Om die reden werk ik persoonlijk altijd volgens de methode die ik hierboven postte. Concatten is veel netter. :)

'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
Ik heb ook gemerkt dat dreamweaver in de "layout" view ook accolades geeft op variabelen als je bijvoorbeeld sessies uitleest

Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op woensdag 26 januari 2005 @ 22:25:
[...]

Accolades worden gebruikt om tegen PHP te zeggen: gebruik dit niet letterlijk, het is een variabele. Iets wat je veel beter op de nette manier kan bereiken:
PHP:
1
2
3
<?php
$somecontent = "<?php include($_SERVER['DOCUMENT_ROOT'] . '/nabestelservice/includes/index.php'); ?>";
?>

Variabelen gebruiken in strings is gewoon smerig, alleen al om het feit dat ze niet alszodanig gehighlight worden in je editor. Om die reden werk ik persoonlijk altijd volgens de methode die ik hierboven postte. Concatten is veel netter. :)
dan wel zo natuurlijjk:
PHP:
1
2
3
<?php
$somecontent = "<?php include('". $_SERVER['DOCUMENT_ROOT'] ."/nabestelservice/includes/index.php'); ?>";
?>


en Ja...of t netter is...ik vind het juist altijd wel netjes om accollades te gebruiken...dan word t in mn editor gehighlight als text, en das wat ik ermee wil...

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Verwijderd schreef op donderdag 27 januari 2005 @ 11:08:
dan wel zo natuurlijjk:
PHP:
1
2
3
<?php
$somecontent = "<?php include('". $_SERVER['DOCUMENT_ROOT'] ."/nabestelservice/includes/index.php'); ?>";
?>
Mjah, in het geval van TS heb je gelijk. :)
en Ja...of t netter is...ik vind het juist altijd wel netjes om accollades te gebruiken...dan word t in mn editor gehighlight als text, en das wat ik ermee wil...
Variabelen laten highlighten als tekst? Waarom? :?

'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