PROBLEM GELÖST: Templates + Variablen

Benny800
Hallo,
da ich zurzeit eine Homepage erstell und gerne mit Templates arbeiten möchte hab ich eine Frage.
Wie werden die Variablen in den Templates in deren Wert umgewandelt?
Also wie wird "Hallo $username" zu z. B. "Hallo Admin"

Ich hab immer das Problem, dass Variablen die sich außerhalb der Funktion liegen, die die Templates ausgibt, nicht umgewandelt werden

z.B.
php:
1:
2:
$username "Admin";
template_ausgeben('index');


Datei index = "Hallo $username"

//Ausgabe: Hallo $username
Ghostmaster
Wie ist die Funktion "template_ausgeben" überhaupt definiert. Augenzwinkern
Wenn du es mit

code:
1:
echo("Hallo $username");


machst, müsste es eigentlich funktionieren.
Benny800
Ja mit echo würde es auch funktionieren aber ich möchte verhindern dass der ganze HTML-Code in der PHP Datei steht
Die Funktion sieht so aus
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function templ_write($filename){
$replace_file fopen('db/replace.txt','r');
$file file_get_contents('templ/' $filename '.txt');
 while(!feof($replace_file)){
 $get fgets($replace_file1024);
 $search "<" trim($get) . ">";
 $file str_replace($search,file_get_contents('templ/' trim($get) . '.txt'), $file);
 }
echo $file;
}


In den Dateien, in denen der HTML-Code steht sind dann auch Angaben wie z.B. "<footer", "<header>" oder "$username"
[kamui]
Ganz klar, dass deine Variable nicht erkannt wird. Schließlich befindest du dich in einer Funktion Augenzwinkern Und du hast gelernt "In der Funktion existieren nur die Variablen, die dort erstellt worden oder global sind." smile

WoltLab löst das übrigens mit eval
Benny800
Ich versteh noch nicht genau wie ich eval einsetzen soll
Wenn meine Funktion jetzt so aussieht
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function templ_write($filename){
$replace_file fopen('db/replace.txt','r');
$file file_get_contents('templ/' $filename '.txt');
 while(!feof($replace_file)){
 $get fgets($replace_file1024);
 $search "<" trim($get) . ">";
 $file str_replace($search,file_get_contents('templ/' trim($get) . '.txt'), $file);
 }
return $file;
}


und meine Datei so
php:
1:
2:
$fehler "Falsches Passwort";
eval("print(templ_write('login');");


und das Template
php:
1:
$fehler<br>Bitte loggen sie sich erneut ein


Was muss ich ändern damit die Variable auch umgewandelt wird.
[kamui]
Mach in deiner Funktion anstatt dem " return $file; " ein " print $file; ", bei der Ausgabe machst du dann
php:
1:
eval("templ_write('login');");
Benny800
PROBLEM GELÖST

Änderungen zur Lösung des Problem groß geschrieben

global.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:

<?
function templ_write($filename){
$replace_file fopen('db/replace.txt','r');
$file file_get_contents('templ/' $filename '.txt');
 while(!feof($replace_file)){
 $get fgets($replace_file1024);
 $search "<" trim($get) . ">";
 $file str_replace($search,file_get_contents('templ/' trim($get) . '.txt'), $file);
 }
RETURN $file;
}


?>


anmelden.php
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
<?
include('global.php');

$email htmlspecialchars(trim($_POST['email']));
$email_check htmlspecialchars(trim($_POST['email_check']));
$password md5(trim($_POST['password']));
$password_check  md5(trim($_POST['password_check']));
$typ htmlspecialchars(trim($_POST['typ']));
$name htmlspecialchars(trim($_POST['name']));
$prename htmlspecialchars(trim($_POST['prename']));
$birthday htmlspecialchars(trim($_POST['birthday']));
$gender htmlspecialchars(trim$_POST['gender']));
$relationship htmlspecialchars(trim($_POST['relationship']));
$domicile htmlspecialchars(trim($_POST['domicile']));
$hobbies htmlspecialchars(trim($_POST['hobbies']));
$school_location htmlspecialchars(trim($_POST['school_location']));
$school_name  htmlspecialchars(trim($_POST['school_name']));
$website htmlspecialchars(trim($_POST['website']));
$icq htmlspecialchars(trim($_POST['icq']));
$msn htmlspecialchars(trim($_POST['msn']));
$skype htmlspecialchars(trim($_POST['skype']));
$account_active 0;


if(isset($_POST['email'])){
 if(!isset($_POST['password'])) $fehler "Sie m&uuml;ssen ein Passwort angeben<br>";
 if($email != $email_check$fehler .= "Die eMail-Adressen stimmen nicht &uuml;berein<br>";
 if($password != $password_check$fehler .= "Die Passw&ouml;rter stimmen nicht &uuml;berein<br>";
 if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$",$email)) $fehler .= "Fehlerhafte eMail-Adresse";
 if($fehler){
  eval("templ_write('anmelden');");
  die();
 }

 $write "\n" $email " || " .  $password " || " $account_active " || " $name " || " $prename " || " $birthday " || " $gender " || " $relationship " || " $domicile " || " $hobbies " || " $school_location " || " $school_name " || " $website " || " $icq " || " $msn " || " $skype;
 $file fopen('db/users.txt','a+');
 fwrite($file$write);
 fclose($file);

 $timestamp md5(microtime());
 $write $email " | " $timestamp;
 $file fopen('db/activate.txt','a+');
 fwrite($file$write);
 fclose($file);
}
else
eval("PRINT(\"" templ_write('anmelden') . "\");");

?>