YourWBB


yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » PROBLEM GELÖST: Templates + Variablen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 3.190 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen PROBLEM GELÖST: Templates + Variablen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Benny800
Mitglied


Dabei seit: 04.04.08
Beiträge: 4

 PROBLEM GELÖST: Templates + Variablen Antworten Zitieren Editieren Melden       UP

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

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Benny800: 08.04.08 19:37.

04.04.08 22:08 Benny800 ist offline E-Mail Finden Als Freund hinzufügen
Ghostmaster
Das Böse

images/avatars/avatar-4371.gif

Dabei seit: 17.01.04
Beiträge: 6.440
Fähigkeiten: WBB2 Profi
Forenversion: 2.3

Antworten Zitieren Editieren Melden       UP

Wie ist die Funktion "template_ausgeben" überhaupt definiert. Augenzwinkern
Wenn du es mit

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


machst, müsste es eigentlich funktionieren.
04.04.08 22:15 Ghostmaster ist offline Finden Als Freund hinzufügen
Benny800
Mitglied


Dabei seit: 04.04.08
Beiträge: 4

Themenstarter Thema begonnen von Benny800
Antworten Zitieren Editieren Melden       UP

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"

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Benny800: 04.04.08 22:26.

04.04.08 22:24 Benny800 ist offline E-Mail Finden Als Freund hinzufügen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

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
05.04.08 00:07 [kamui] ist offline Finden Als Freund hinzufügen
Benny800
Mitglied


Dabei seit: 04.04.08
Beiträge: 4

Themenstarter Thema begonnen von Benny800
Antworten Zitieren Editieren Melden       UP

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.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Benny800: 05.04.08 18:25.

05.04.08 18:24 Benny800 ist offline E-Mail Finden Als Freund hinzufügen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

Mach in deiner Funktion anstatt dem " return $file; " ein " print $file; ", bei der Ausgabe machst du dann
php:
1:
eval("templ_write('login');");
05.04.08 22:05 [kamui] ist offline Finden Als Freund hinzufügen
Benny800
Mitglied


Dabei seit: 04.04.08
Beiträge: 4

Themenstarter Thema begonnen von Benny800
Antworten Zitieren Editieren Melden       UP

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') . "\");");

?>

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Benny800: 08.04.08 19:31.

06.04.08 15:19 Benny800 ist offline E-Mail Finden Als Freund hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » PROBLEM GELÖST: Templates + Variablen