function in variable
W0etah - 04/12/2006 20:45 (laatste wijziging 04/12/2006 20:45)
PHP beginner
Hallo, ik zit met een probleem, ik heb deze functie
<?php
function input($tekst) {
$tekst = htmlspecialchars($tekst);
$tekst = addslashes($tekst);
$output = $tekst;
return $output;
}
?>
<?php
function input( $tekst ) {
$output = $tekst ;
return $output ;
}
?>
maar nu moet ik die $output in een andere variable krijgen
dit doe ik met dit stukje script
<?php
$output = 'echo ".input($fileBericht).";';
?>
<?php
$output = 'echo ".input($fileBericht).";' ;
?>
maar dat werkt niet, heeft iemand een idee hoe het wel moet?
9 antwoorden
Gesponsorde links
marten - 04/12/2006 20:46 (laatste wijziging 04/12/2006 20:49)
Beheerder
<?php
function input($tekst) {
$tekst = htmlspecialchars($tekst);
$tekst = addslashes($tekst);
$output = $tekst;
return $output;
}
?>
<?php
function input( $tekst ) {
$output = $tekst ;
return $output ;
}
?>
veranderen in
<?php
function input($tekst) {
$tekst = htmlspecialchars($tekst);
$tekst = addslashes($tekst);
return $tekst;
}
?>
<?php
function input( $tekst ) {
return $tekst ;
}
?>
en dan
<?php
$nieuwevar = input($tekst);
?>
<?php
$nieuwevar = input( $tekst ) ;
?>
W0etah - 04/12/2006 20:49 (laatste wijziging 04/12/2006 20:52)
PHP beginner
het is gelukt
EDIT: nog een klein vraagje, ik doe dan wel addslashes, maar hoe haal ik het dan uit het bestand zodat de " worden weergegeven?
W0etah - 04/12/2006 21:03
PHP beginner
dit geeft hij dan weer, ik zit altijd met het probleem van die \ op het einde
dit is de code die het bericht uit het bestand haalt
<?php
$bericht = stripslashes($bericht);
$bericht = preg_replace("/\[php\](.*)\[\/php\]/seU", "str_replace('\"', '', @highlight_string('\\1', 1))", $bericht);
?>
<?php
$bericht = preg_replace ( "/\[php\](.*)\[\/php\]/seU" , "str_replace('\" ', '', @highlight_string('\\1 ', 1))" , $bericht ) ; ?>
Thomas - 05/12/2006 11:21
Moderator
Daarom stelde ik al voor om daarvoor een aparte functie te introduceren...
Ik denk trouwens niet dat je stripslashes moet gebruiken, je gooit dan teveel slashes weg...
W0etah - 05/12/2006 20:45
PHP beginner
FangorN, maar hoe moet ik het dan doen om dit script veilig te maken?
Zonder addslashes werken?
Maar kan je dat van die functie voor str_replace nog is uitleggen?
Thomas - 06/12/2006 11:10 (laatste wijziging 06/12/2006 11:11)
Moderator
<?php
$bericht = stripslashes($bericht);
$bericht = preg_replace("/\[php\](.*)\[\/php\]/seU", "str_replace('\"', '', @highlight_string('\\1', 1))", $bericht);
?>
<?php
$bericht = preg_replace ( "/\[php\](.*)\[\/php\]/seU" , "str_replace('\" ', '', @highlight_string('\\1 ', 1))" , $bericht ) ; ?>
-->
<?php
$bericht = preg_replace("/\[php\](.*)\[\/php\]/seU", "codeblok(\\1)", $bericht);
function codeblok($in)
{
$in = str_replace('\"', '"', $in);
return @highlight_string($in, 1);
}
?>
<?php
$bericht = preg_replace ( "/\[php\](.*)\[\/php\]/seU" , "codeblok(\\1 )" , $bericht ) ;
function codeblok( $in )
{
}
?>
Als je [php]-blok rechtstreeks uit $_POST komt, moet je misschien wel gebruik maken van stripslashes(). Als het uit de database komt hoeft dit niet denk ik. Probeer het eens uit, je merkt vanzelf wat werkt en wat niet.
Een goede test:
[php]<?php
echo " ' \" \\"; // test
echo ' \' " \ \\ \\\ \\\\ '; // ofzo
/*
test ' " \
*/
?>[/php]
[php]<?php
echo ' \' " \ \\ \\\ \\\\ '; // ofzo
/*
test ' " \
*/
?> [/php]
W0etah - 06/12/2006 14:09 (laatste wijziging 06/12/2006 21:05)
PHP beginner
Citaat:
Parse error: parse error, expecting `')'' in c:program fileseasyphp1-8wwwscriptbakconfig.php(106) : regexp code on line 1
Fatal error: Failed evaluating code: codeblok() in c:program fileseasyphp1-8wwwscriptbakconfig.php on line 106
ik krijg wel deze error, ik heb jouw code gewoon geplakt, op de juiste plaats
EDIT: als ik de addslashes bij het schrijven naar het bestand wegdoe dan werkt het wel, maar is het dan nog veilig?
als ik je testje invoer, dan zie ik juisthetzelfde
Thomas - 07/12/2006 10:26
Moderator
Veilig hoe? Er wordt geen PHP-code uitgevoerd of wat dan ook, dus wat is er niet veilig aan?
Gesponsorde links
Dit onderwerp is gesloten .