PHP: action-Anweisung
Donnerstag, 14. September 2006, 15:26
Hiho, dieser Thread is ne kleine Hilfe für Ark
Es geht darum, eine PHP-Datei aufzurufen und mittels mitgelieferter Variablen, also action-anweisungen, verschiedene Aktionen durchzuführen. So kann man einer PHP-Datei mehrere Aufgaben zuteilen und spart Platz auf dem Server :D
Wie das Ganze dann im phpBB aussieht kann ich dir leider nicht sagen, da wirst du wohl oder übel ein wenig experimentieren müssen.
Zu Beginn jeder php sollte stehen, darunter dürften im phpBB Verbindungen zu anderen Dateien und der Aufruf von Variablen folgen. Füge nun, nachdem dieser "Kopf" zu Ende ist, folgendes ein:
Mit diesem Teil erklärst du deiner PHP, was sie machen soll, wenn an den Dateinamen noch eine Variable 'action' kommt. Was sie nun bei den verschiedenen Befehlen umsetzt, kannst du ihr so sagen:
Diesen oberen Code kannst du mehrmals innerhalb deiner php verwenden, die action-Befehle sollten natürlich jedesmal einen anderen Namen haben.
Wie spricht man diese action nun an? Ganz einfach über die Adresszeile. Sagen wir, deine PHP-Datei heißt music.php In ihr befindet sich ein Code, der z.B. dein Popup mit Inhalt füllt (!!Folgendes ist kein Code zum Erzeugen von Popups, sondern nur ein Code zur Seitenausgabe. Popup kommt später);
Mit diesem Link wird die music.php aufgerufen. Die Datei wird nach action=popup untersucht, der darin stehende Code wird ausgeführt und ausgegeben.
Innerhalb des phpBB gibt es, soweit ich weiß, eine Funktion zum Erstellen von Popups, egal wie, du musst es mit einem Inhalt füllen, evtl über den src-tag. Füge einfach "music.php?action=popup" ein, du verstehst hoffentlich, was ich meine °
#################################
Als Beispiel haste hier mal eine geraffte PHP-Fassung:
Anweisungen, die vor action=="" kommen, sind für alle action-Teile verfügbar, alle Anweisungen die innerhalb eines action-Teils stehen, sind nur für diese action verfügbar
Ich hoffe, es hat ein wenig geholfen, hab nebenher telefoniert °
Achja: du musst das alles nicht "action" nennen, jeder andere begriff geht auch, action ist nur leichter nachvollziehbar
MfG MoG
Es geht darum, eine PHP-Datei aufzurufen und mittels mitgelieferter Variablen, also action-anweisungen, verschiedene Aktionen durchzuführen. So kann man einer PHP-Datei mehrere Aufgaben zuteilen und spart Platz auf dem Server :D
Wie das Ganze dann im phpBB aussieht kann ich dir leider nicht sagen, da wirst du wohl oder übel ein wenig experimentieren müssen.
Zu Beginn jeder php sollte stehen, darunter dürften im phpBB Verbindungen zu anderen Dateien und der Aufruf von Variablen folgen. Füge nun, nachdem dieser "Kopf" zu Ende ist, folgendes ein:
<?php if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
else $action = ''; ?>
Mit diesem Teil erklärst du deiner PHP, was sie machen soll, wenn an den Dateinamen noch eine Variable 'action' kommt. Was sie nun bei den verschiedenen Befehlen umsetzt, kannst du ihr so sagen:
PHP-Quelltext
<?php if($action=="popup") {
//Hier kämen deine Funktionen rein
//Falls es in phpBB eine Template-Ausgabe gibt, muss die auch hier rein!!!
//Bei wbb sieht das z.B. so aus:
//eval("\$tpl->output("".$tpl->get("cg_form")."");");
} ?>
Diesen oberen Code kannst du mehrmals innerhalb deiner php verwenden, die action-Befehle sollten natürlich jedesmal einen anderen Namen haben.
Wie spricht man diese action nun an? Ganz einfach über die Adresszeile. Sagen wir, deine PHP-Datei heißt music.php In ihr befindet sich ein Code, der z.B. dein Popup mit Inhalt füllt (!!Folgendes ist kein Code zum Erzeugen von Popups, sondern nur ein Code zur Seitenausgabe. Popup kommt später);
<a href="music.php?action=popup">Musikbox-Popup</a>
Mit diesem Link wird die music.php aufgerufen. Die Datei wird nach action=popup untersucht, der darin stehende Code wird ausgeführt und ausgegeben.
Innerhalb des phpBB gibt es, soweit ich weiß, eine Funktion zum Erstellen von Popups, egal wie, du musst es mit einem Inhalt füllen, evtl über den src-tag. Füge einfach "music.php?action=popup" ein, du verstehst hoffentlich, was ich meine °
#################################
Als Beispiel haste hier mal eine geraffte PHP-Fassung:
PHP-Quelltext
- <?php
- $filename = 'cg_bank.php'; //WBB
- require "global.php"; //WBB
- require "cg_header.php"; //WBB
- if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
- else $action = '';
- // Gast
- if($wbbuserdata[userid] == "") {
- header("Location: cg_start.php");
- exit();
- }
- //#### Bank Index #### <--- Dieser Teil wird ausgeführt, wenn keine action angegeben wird
- if($action=="") {
- $cg_bereich = 'Bankhalle';
- eval("\$cg_content = "".$tpl->get("cg_bank")."";");
- eval("\$tpl->output("".$tpl->get("cg_form")."");");
- }
- //#### Ausleihen #### <----- <a href="cg_bank.php?action=ausleihen"> So siehts aus
- if($action=="ausleihen") {
- $cg_bereich = 'Bank | Gold ausleihen';
- //db-update
- if (isset($_POST['send'])) {
- $db->query("INSERT INTO cg_bank (charname,auftrag,gold_ausgeliehen,gold_schulden,leihzinssatz) VALUES
- ('$cguserdata[charname]','".addslashes($_POST['$auftrag'])."','".addslashes($_POST['gold_ausgeliehen'])."','".$schulden."','".addslashes($_POST['leihzinssatz'])."')");
- header("Location: cg_bank.php?action=fertig");
- exit();
- }
- eval("\$cg_aktion = "".$tpl->get("cg_bank_ausleihen")."";");
- eval("\$cg_content = "".$tpl->get("cg_bank")."";");
- eval("\$tpl->output("".$tpl->get("cg_form")."");");
- }
- //##### Fertig ####
- if($action=="fertig") {
- $cg_bereich = 'Bank | Auftrag ausgeführt';
- //db-update
- $db->query("INSERT INTO cg_ablage (charname,gebäude,datum,text) VALUES
- ('$cguserdata[charname]','".addslashes($_POST['$gebaeude'])."','".$datum."','".addslashes($_POST['text'])."')");
- header("Location: cg_bank.php");
- exit();
- }
- eval("\$cg_aktion = "".$tpl->get("cg_bank_fertig")."";");
- eval("\$cg_content = "".$tpl->get("cg_bank")."";");
- eval("\$tpl->output("".$tpl->get("cg_form")."");");
- }
- //#######
- ?>
<?php
$filename = 'cg_bank.php'; //WBB
require "global.php"; //WBB
require "cg_header.php"; //WBB
if (isset($_REQUEST['action'])) $action = $_REQUEST['action'];
else $action = '';
// Gast
if($wbbuserdata[userid] == "") {
header("Location: cg_start.php");
exit();
}
//#### Bank Index #### <--- Dieser Teil wird ausgeführt, wenn keine action angegeben wird
if($action=="") {
$cg_bereich = 'Bankhalle';
eval("\$cg_content = "".$tpl->get("cg_bank")."";");
eval("\$tpl->output("".$tpl->get("cg_form")."");");
}
//#### Ausleihen #### <----- <a href="cg_bank.php?action=ausleihen"> So siehts aus
if($action=="ausleihen") {
$cg_bereich = 'Bank | Gold ausleihen';
//db-update
if (isset($_POST['send'])) {
$db->query("INSERT INTO cg_bank (charname,auftrag,gold_ausgeliehen,gold_schulden,leihzinssatz) VALUES
('$cguserdata[charname]','".addslashes($_POST['$auftrag'])."','".addslashes($_POST['gold_ausgeliehen'])."','".$schulden."','".addslashes($_POST['leihzinssatz'])."')");
header("Location: cg_bank.php?action=fertig");
exit();
}
eval("\$cg_aktion = "".$tpl->get("cg_bank_ausleihen")."";");
eval("\$cg_content = "".$tpl->get("cg_bank")."";");
eval("\$tpl->output("".$tpl->get("cg_form")."");");
}
//##### Fertig ####
if($action=="fertig") {
$cg_bereich = 'Bank | Auftrag ausgeführt';
//db-update
$db->query("INSERT INTO cg_ablage (charname,gebäude,datum,text) VALUES
('$cguserdata[charname]','".addslashes($_POST['$gebaeude'])."','".$datum."','".addslashes($_POST['text'])."')");
header("Location: cg_bank.php");
exit();
}
eval("\$cg_aktion = "".$tpl->get("cg_bank_fertig")."";");
eval("\$cg_content = "".$tpl->get("cg_bank")."";");
eval("\$tpl->output("".$tpl->get("cg_form")."");");
}
//#######
?>
Anweisungen, die vor action=="" kommen, sind für alle action-Teile verfügbar, alle Anweisungen die innerhalb eines action-Teils stehen, sind nur für diese action verfügbar
Ich hoffe, es hat ein wenig geholfen, hab nebenher telefoniert °
Achja: du musst das alles nicht "action" nennen, jeder andere begriff geht auch, action ist nur leichter nachvollziehbar
MfG MoG
Just Testing