Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 09-04-2005, 19:01
Engadin
Avatar van Engadin
Engadin is offline
Is er in php een mogelijkheid om de waarde uit een variabele uit te voeren?

Dus zoiets:
PHP-code:
$a = "<? echo date('U');?>";
?>
waarbij er dan "2837894732456414" ofzo uit moet komen.
__________________
Jongeren - Natuur: http://www.njn.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Advertentie
Oud 09-04-2005, 19:18
Martin
Avatar van Martin
Martin is offline
Citaat:
Engadin schreef op 09-04-2005 @ 20:01 :
Is er in php een mogelijkheid om de waarde uit een variabele uit te voeren?

Dus zoiets:
PHP-code:
$a = "<? echo date('U');?>";
?>
waarbij er dan "2837894732456414" ofzo uit moet komen.
Je moet dit doen:

PHP-code:
$a date('U');

echo 
$a;
?> 
Korter is echter:

PHP-code:
echo date('U');
?> 
Je kan hem ook integreren in tekst, en wel op deze manier:

PHP-code:
echo "De UNIX-timestamp is ".date('U')." Dit zijn de aantal seconden sinds 1 januari 1970";
?> 

Laatst gewijzigd op 09-04-2005 om 19:21.
Met citaat reageren
Oud 09-04-2005, 19:49
dafelix
Avatar van dafelix
dafelix is offline
wat ik denk dat de TS bedoelt is een functie die uitgevoerd word in een var opslaan, oftewel

PHP-code:
mysql_connect("server","username","password","112"); 
in een var opslaan

PHP-code:
$a mysql_connect("server","username","password","112"); 
wat inderdaad gewoon kan, maar je hebt er weinig aan in deze situatie, maar wel in deze:

PHP-code:

if (mysql_connect("server","username","password","112") == FALSE) {
die(
"Failed to connect");

of als het om functies gaat die bedoelt zijn dingen terug te geven (zoals date, calc etc)
__________________
$karma++;
Met citaat reageren
Oud 09-04-2005, 19:58
Verwijderd
Waarom geven jullie allemaal dingen waar hij niet om vraagt?

Wat een mogelijkheid is, is de string wegschrijven naar een bestand en die includen
Met citaat reageren
Oud 09-04-2005, 20:23
Martin
Avatar van Martin
Martin is offline
Citaat:
********** schreef op 09-04-2005 @ 20:58 :
Waarom geven jullie allemaal dingen waar hij niet om vraagt?

Wat een mogelijkheid is, is de string wegschrijven naar een bestand en die includen
Nu snap ik jou niet? Ben ik nou gek of stelt hij zijn vraag gewoon té lastig?
Met citaat reageren
Oud 09-04-2005, 20:33
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Sneller dan wegschrijven, dan includen, is het gebruik van eval(). Bedenk echter goed dat het gebruik van deze functie (en workarounds zoals via include) waarschijnlijk niet de beste oplossing voor je probleem is!! Het is eenvoudig om op deze manier veiligheidsgaten te veroorzaken in je code.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 09-04-2005, 20:40
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
Citaat:
Manuzhai schreef op 09-04-2005 @ 21:33 :
Sneller dan wegschrijven, dan includen, is het gebruik van eval(). Bedenk echter goed dat het gebruik van deze functie (en workarounds zoals via include) waarschijnlijk niet de beste oplossing voor je probleem is!! Het is eenvoudig om op deze manier veiligheidsgaten te veroorzaken in je code.
Aha, dus wat heeft hij eraan?
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 09-04-2005, 20:41
Gimme more beer
Avatar van Gimme more beer
Gimme more beer is offline
Citaat:
********** schreef op 09-04-2005 @ 20:58 :
Waarom geven jullie allemaal dingen waar hij niet om vraagt?

Wat een mogelijkheid is, is de string wegschrijven naar een bestand en die includen
Martin had volgens mij gewoon het antwoord dat de TS wilde. Ja en dafelix ook, maar die zei in feite hetzelfde.
__________________
Onderuitgezakt in de koffiehoek van het zorgcentrum zit Sieb met volle teugen na te genieten van de Tweede Wereldoorlog. Arnela is de liefste! <3
Met citaat reageren
Oud 10-04-2005, 10:06
Engadin
Avatar van Engadin
Engadin is offline
die functie wilde ik idd. Het kan wel wat veiligheidsrisicos meebregen, maar aangezien hiuj allleen door mij geschreven string hoeft te gebruiken (er wordt geen userinput gebruikt) zal dat wel meevallen.
__________________
Jongeren - Natuur: http://www.njn.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Oud 10-04-2005, 13:02
Engadin
Avatar van Engadin
Engadin is offline
waarom krijg ik bij:

1.php:
PHP-code:
$w "1113000332";
$content = <<<EOT
echo "blaat";
echo 
$w;
$q=1;
echo 
$q;
EOT;
?> 
2.php:
PHP-code:
<?
include('1.php');
eval($content);
?>
Parse error: parse error, unexpected '=' in 1.php(4) : eval()'d code on line 3

?
__________________
Jongeren - Natuur: http://www.njn.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Oud 10-04-2005, 13:10
Martin
Avatar van Martin
Martin is offline
Citaat:
Engadin schreef op 10-04-2005 @ 14:02 :
waarom krijg ik bij:

1.php:
PHP-code:
$w "1113000332";
$content = <<<EOT
echo "blaat";
echo 
$w;
$q=1;
echo 
$q;
EOT;
?> 
2.php:
PHP-code:
<?
include('1.php');
eval($content);
?>
Parse error: parse error, unexpected '=' in 1.php(4) : eval()'d code on line 3

?
$content = <<<EOT

moet dat niet zijn'

$content = "<<<EOT";
Met citaat reageren
Oud 10-04-2005, 14:21
Verwijderd
Nee, dat is de Here-Doc notatie.

Volgens mij zit daar wel de fout: in de manual staat dat op de regel waar de string eindigt, alleen het "codewoord" (hier EOT) mag staan, voor dat codewoord mag niets staan, ook geen inspringingen ofzo, en na het codewoord mag ook niets staan, met een ; als uitzondering. Als ik jou was zou ik dus even proberen de ?> op de volgende regel te zetten en dan nog een keer proberen.

Bron: PHP Manual

Edit:
En nog iets: volgens mij moet je voor die $q in je string ook een \ zetten, anders probeert PHP die te vervangen door een variabele $q die er niet is in dit voorbeeld. Met \$q word het in de string dus gewoon $q en dus een geldige statement.

Laatst gewijzigd op 10-04-2005 om 14:28.
Met citaat reageren
Oud 10-04-2005, 14:28
dafelix
Avatar van dafelix
dafelix is offline
Citaat:
Engadin schreef op 10-04-2005 @ 14:02 :

1.php:
PHP-code:
$w "1113000332";
$content = <<<EOT
echo "blaat";
echo 
$w;
$q=1;
echo 
$q;
EOT; 
moet volgens mij dit zijn

PHP-code:
$w "1113000332";
$content = <<<EOT;
blaat
"$w"
"
$q=1"
"
$q"
EOT

alhoewel ik niet begrijp waarom je Heredoc uberhaupt gebruikt
__________________
$karma++;
Met citaat reageren
Oud 10-04-2005, 14:34
Verwijderd
Citaat:
dafelix schreef op 10-04-2005 @ 15:28 :
...
alhoewel ik niet begrijp waarom je Heredoc uberhaupt gebruikt
Heredoc gebruik ik af en toe ook wel eens, als ik bijvoorbeeld een klein javascriptje in het uiteindelijke document wil hebben. Dit kan je dat overzichtelijk invoeren met heredoc. Verder gebruik ik het zelf eigenlijk nergens voor en is het vooral irritant door de strenge regels die er aan vast zitten.

Verder is de code die jij aangeeft ook fout.
Met citaat reageren
Oud 10-04-2005, 16:39
Engadin
Avatar van Engadin
Engadin is offline
Citaat:
SneakyViper schreef op 10-04-2005 @ 15:21 :
Nee, dat is de Here-Doc notatie.

Volgens mij zit daar wel de fout: in de manual staat dat op de regel waar de string eindigt, alleen het "codewoord" (hier EOT) mag staan, voor dat codewoord mag niets staan, ook geen inspringingen ofzo, en na het codewoord mag ook niets staan, met een ; als uitzondering. Als ik jou was zou ik dus even proberen de ?> op de volgende regel te zetten en dan nog een keer proberen.

Bron: PHP Manual

Edit:
En nog iets: volgens mij moet je voor die $q in je string ook een \ zetten, anders probeert PHP die te vervangen door een variabele $q die er niet is in dit voorbeeld. Met \$q word het in de string dus gewoon $q en dus een geldige statement.
Die ?> moet idd een regel lager, stond in de code die ik uitvoerde wel.

Als ik \$q = doe echot hij $q niet.

Citaat:
dafelix schreef op 10-04-2005 @ 15:28 :
moet volgens mij dit zijn

PHP-code:
$w "1113000332";
$content = <<<EOT;
blaat
"$w"
"
$q=1"
"
$q"
EOT

alhoewel ik niet begrijp waarom je Heredoc uberhaupt gebruikt
dan vind hij dat er een unexpected T_CONSTANT_ENCAPSED_STRING op de 2e regel staat.

Als ik wel ; achter iedere regel zet dan echot hij helemaal niets meer.

Ik gebruik heredoc omdat ik in die string zowel html als php wil hebben staan, waarbij ik bij php meestal enkele qoutes gebruik, omdat je dan geen \" in je html die je echot hoeft te zetten. Aangezien ik geen zin had om alle paginas die ik al heb helemaal door tre gaan lezen en die qoutjews te veranderen
__________________
Jongeren - Natuur: http://www.njn.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Kom mee op zomerkamp: http://www.zomerkampen.njn.nl
Met citaat reageren
Oud 10-04-2005, 17:38
Verwijderd
PHP-code:
<?php
$w 
"1113000332";
$content = <<<EOT
echo "blaat";
echo 
$w;
\$q = 'nog een blaat';
echo \$q;
EOT;

eval(
$content);
?>
Ik heb dit net getest en het werkte. Je moet alleen even oppassen bij het kopieren hiervan: de parser heeft een spatie achter de ; achter EOT gezet en als je die mee kopiert geeft PHP weer wel een fout. Die spatie komt er omdat ik bij het invoeren een lege regel tussen de "EOT;" en "eval($content)" had gezet, maar uiteindelijk komt die er meteen onder en met een spatie achter de "EOT;"
Met citaat reageren
Oud 11-04-2005, 09:41
Verwijderd
dit kan ook wel trouwens;

PHP-code:
function functie($str) {
$str $str " :)";
return 
$str;
}

$bla "functie";

echo 
$bla("test"); 
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Levensbeschouwing & Filosofie De haat tegen de islam
Verwijderd
481 09-10-2004 17:22


Alle tijden zijn GMT +1. Het is nu 11:32.