ik heb de volgende functie voor het uitvoeren van html en php uit een database, deze werkt uitstekend voor html en kleine, simpele stukjes php.
Maar ik krijg ruzie met een simpel invoegscriptje, hier mijn functie:
<?php
function run_and_display($bron){
$new=addslashes($bron);
$new=stripslashes($new);
$arr=explode("<?php",$new);
$begintag="<?php";
$i=0;
if (substr($arr[0], 0, strlen($begintag)) != $begintag){
echo($arr[0]);
}
while($i< count($arr)){
$i++;
$new2=explode("?>",$arr[$i]);

$new3=str_replace("<?php"," ",$new2);
$new4=str_replace("?>"," ",$new3);
eval(html_entity_decode($new4['0']));
echo ($new4['1']);


}
}
?>

en mijn inlogscriptje(klopt volgens mij wel, maar voor de zekerheid)

<?php
if(!empty($_POST)){
include("mysql_connect.php");
$query="SELECT * FROM users WHERE username='".$_POST['username']."'
AND password='".$_POST['password']."'";
$result=mysql_query($query) or die(mysql_error());
if(mysql_num_rows($result)>0){
$_SESSION['username']=$_POST['username'];
header("Location: indexi.php");
}else{
echo("Deze combinatie van inlognaam en wachtwoord is onjuist.<br>");
echo('<a href='.$_SERVER['PHP_SELF'].' class="link">Nogmaal proberen</a>');
}
}else{
?>
<center><h2>Inloggen</h2>

<table border="0" align="center" width="30%">
<form name="form1" method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
<tr><td>Gebruikersnaam:</td><td> <input name="username" type="text" size="30" maxlength="40"><br></td></tr>
<tr><td>Wachtwoord:</td><td> <input name="password" type="password" size="10" maxlength="10"><br></td></tr>
<hr>
<tr><td><input type="submit" name="Submit" value="Inloggen"></td>
<td><input name="reset" type="reset" id="reset" value="Leegmaken"></td></tr></table>
</form>
</td></tr></table>
<?php
}
?>

ik krijg deze errors
Parse error: syntax error, unexpected $end in c:\inetpub\wwwroot\gijs\zonta\index.php(30) : eval()'d code on line 15

en
Parse error: syntax error, unexpected '}' in c:\inetpub\wwwroot\gijs\zonta\index.php(30) : eval()'d code on line 2


de functie is btw een debugged versie van een zelfde soort functie die hier tussen de scripts stond, maar die bij mij van geen kant werkte
Doe eens ipv eval(html_entity_decode($new4['0'])); -> print(html_entity_decode($new4['0']));

Ergens in een van die stukjes die je evalt zit namelijk de fout. Maar dan moeten we wel even de broncode hebben :)
het stukje wat ik eval is dat inlogscriptje, ik zal ff doen wat jij zegt met
ipv eval(html_entity_decode($new4['0'])); -> print(html_entity_decode($new4['0']));

edit: als ik doe wat jelmer zegt krijg ik in volle glorie mijn hierboven geposte script te zien(niet als PHP maar gewoon het script geoutput)
Er zal wel een reden voor zijn, maar waarom gebruik je niet gewoon highlight_string ()?
En werkt dat script wel waneer je dat in een bestand zet en uitvoert? (dus even niet door eval trekken?)
@jelmer
ja, dan werkt het wel dat is zo gek. Daarom had ik de functie ook gepost omdat ik dacht dat het probleem daaraan lag,

@jan
met die functie krijg ik higlighting, ik wil dat de PHP code gewoon geparst word, niet dat ik mijn code te zien krijg, daar kan ik zelf ook wel bij
Misschien zo doen:

1) uit database trekken
2) opslaan in een php bestand
3) die includen
maar dan kan ik het net zo goed in bestanden schrijven, tenzij je na gebruik die files weer verwijderd maar daar word de boel volgens mij ontzettend traag van en bovendien is het bedoeld voor een cms systeem, waar anderen dus de teksten moeten aanpassen en dus niet in files maar het liefst gewoon uit de database zoals ik het had
Net even getest, en dit werkt gewoon hier:

<?php
$phpstring = 'echo "hallo wereld!";';
eval ($phpstring);
?>
ja dat weet ik, als ik zo'n soort string in de database zet dan werkt het perfect maar als ik het bovenstaande inlogscript probeer dan krijg ik errors
Ga ik nog eens ff naar je inlogscript kijken.

Reageren