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.
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_file, 1024);
$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

Und du hast gelernt "In der Funktion existieren nur die Variablen, die dort erstellt worden oder global sind."
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_file, 1024);
$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_file, 1024);
$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üssen ein Passwort angeben<br>";
if($email != $email_check) $fehler .= "Die eMail-Adressen stimmen nicht überein<br>";
if($password != $password_check) $fehler .= "Die Passwörter stimmen nicht ü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') . "\");");
?>
|
|