@ChrisvA
Erst einmal vorab: Es handelt sich noch um ein in Entstehung bestehendes Scriptwerk - alles noch halb und halb - leider nichts Ganzes...
Ich habe bereits ein "Installations-Script" erstellt, indem ein Dropdown-Feld mit JavaScript-update [POST-Formular] der Seite existiert, welches erst via PHP die vorhandenen Sprachflie-Ordner ausliest und dann in die <option> packt. DAHER käme dann der 'lang'-Wert ins Post
Hier das Dropdown:
PHP-Code:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="language">
<div>
<?php echo $spache; ?>
<select name="lang" onchange="document.getElementById('language').submit()">
<?php
$serverPath = $_SERVER['DOCUMENT_ROOT']; // wwwroot-Ordner
$folderPath = "/abcms/"; // Ordner unterhalb des wwwroot zur Installation von ABCms
$langPath = $serverPath.$folderPath."language/"; // der gesamte Pfad
$dir = new DirectoryIterator($langPath);
while($dir->valid()) {
if(!$dir->isDot()) {
$langName = $dir->current();
print "\t\t".'<option value="'.$langName.'" ';
if ($_POST['lang']=="$langName") print 'selected="selected"';
print ">$langName</option>\n";
}
$dir->next();
}
?>
</select>
</div>
</form>
Im Moment fehlt auf der "
content.php"-Seite noch ein entsprechender Code. Geplant ist, die Information a) ohne Anmeldung an der Seite wieder via o.a. Dropdown zu realisieren bzw. b) nach Anmeldung aus dem Userprofil der MySQL-Datenbank zu holen. Daher im Moment noch die letzte
else-Bedingung auf "
de-DE".
Nichts destotrotz hier mal die gesamte
functions.inc.php:
PHP-Code:
<?php
//Infos zur Weitergabe, solange System noch nicht einsatzbereit
$date = date(Ymd);
$logpath = "logs/";
$logname = "$date errorlog.txt";
$logfile = fopen($logpath.$logname,"a+");
/*=====================================================================================================================================
=====================================================================================================================================*/
/******************************************************
I N S T A L L A T I O N S P R Ü F U N G
******************************************************/
//Prüfung ob Installationsordner vorhanden => wenn ja, Warnung, wenn nein
if (file_exists('install/index.html')) {
//Error-Text festlegen
$error .= '<h1>WARNUNG!</h1>'.
'<p>Der Installationsordner ist noch vorhanden!</p>'.
'<p>Um anderen keinen Zugriff auf Ihr System zu gewähren, '.
'löschen Sie diesen bitte umgehend von Ihrem System oder '.
'nennen Sie ihn um!</p>'."\n\t\t".'<p>Oder » '.
'<a href="install/index.php" title="Install">Installation starten</a></p>';
//Log-Eintrag definieren
$log .= date("H:i:s")."\t".$_SESSION['user']."\t".
"folder"."install"."\t"."still existing"."\n";
}
//Infos und/oder Fehler anzeigen
function showInfo($sysmsg, $info, $error) {
//Prüfung ob Installation vorgenommen wurde => config.php vorhanden
if (file_exists('config.php')) {
//wenn config.php vorhanden $info definieren
$info .= '<h1>HINWEIS:</h1>'.
'<p>Datei <em>config.php</em> existiert und gibt vor:</p>';
//Info ob Logging in config.php aktiviert wurde
if ($logging == true) {
$info .= '<p>- Error-Log ist <strong>aktiviert</strong>.</p>';
}
else {
$info .= '<p>- <span style="color:red;">Error-Log ist abgeschaltet.</span></p>';
}
}
// config.php wurde nicht gefunden => keine Installation durchgeführt
else {
//Logging einschalten
$logging = true;
//Warnhinweis definieren
$error .= '<h1>ACHTUNG:</h1>'.
'<p>Datei <em>config.php</em> konnte nicht gefunden werden.</p>'.
'<p><strong>Mögliche Ursachen:</strong></p>'.
'<ul><li>Die Datei wurde gelöscht oder beschädigt.</li>'.
'<li>Installation wurde nicht oder nicht korrekt abgeschlossen.<br />'.
'( Ist das Verzeichnis beschreibbar [CHMOD 777]? )</li>'.
'</ul><p><br /><strong>Lösungsvorschlag:</strong><br />'.
'Bitte führen Sie die Installation (erneut) aus » '.
'<a href="install/index.php" title="Install">Installation starten</a><br />'.
'Oder kontrollieren Sie die Einstellungen im » '.
'<a href="administration/index.php" title="Installation">Adminbereich</a></p>';
//Log-Text-definieren
$log .= date("H:i:s")."\t".$_SESSION['user']."\t". //Datum und User sammeln
"file"."\t"."config.php"."\t"."not existing"."\n"; //Existenz config.php sammeln
$pagetitle = "ABCms 4 you"; //Seitentitel sammeln
$version = "v0.1"; //Version sammeln
$template = "standard"; //Template sammeln
//Info UND Error anzeigen, falls definiert
if ((isset($error)) && (isset($info))) {
$sysmsg = "\n\t\t".'<div id="info">'; //Info-Div öffnen
$sysmsg .= wordwrap ($info, 90, "\n\t\t\t"); //Infotext auf 90 Zeichen begrenzen
$sysmsg .= "\n\t\t".'</div>'."\n\t"; //Info-Div schließen
$sysmsg .= "\n\t\t".'<div id="error">'; //Error-Div öffnen
$sysmsg .= wordwrap ($error, 90, "\n\t\t\t"); //Errortext auf 90 Zeichen begrenzem
$sysmsg .= "\n\t\t".'</div>'."\n\t"; //Error-Div schließen
echo $sysmsg; //Info und Error ausgeben
//LOG schreiben wenn aktiviert
if ($logging == true) {
$date = date("Y.m.d"); //Datum definieren
$logfile = fopen($logpath.$logname, "a+"); //Logdatei öffnen
fputs ($logfile, $log); //Log-Text schreiben
fclose ($logfile); //Logfile schließen
}
}
//Nur Error anzeigen, falls definiert
elseif (isset($error)) {
$sysmsg = "\n\t\t".'<div class="error">'; //Error-Div öffnen
$sysmsg .= wordwrap($error, 90, "\n\t\t\t"); //Error-Text auf 90 Zeichen begrenzem
$sysmsg .= "\n\t\t".'</div>'."\n\t"; //Error-Div schließen
echo $sysmsg; //Error ausgeben
//LOG schreiben wenn aktiviert
if ($logging == true) {
$date = date("Y.m.d"); //Datum definieren
$logfile = fopen($logpath.$logname, "a+"); //Logdatei öffnen
fputs ($logfile, $log); //Log-Text schreiben
fclose ($logfile); //Logdatei schließen
}
}
//Nur Info anzeigen, falls deifiniert
elseif (isset($sysinfo)) {
$sysmsg = "\n\t\t".'<div class="info">'; //Info-Div öffnen
$sysmsg .= wordwrap($info, 90, "\n\t\t\t"); //Info-Text auf 90 Zeichen begrenzem
$sysmsg .= "\n\t\t".'</div>'."\n\t"; //Info-Div schließen
echo $sysmsg; //Info ausgeben
//LOG schreiben wenn aktiviert
if ($logging == true) {
$date = date("Y.m.d"); //Datum definieren
$logfile = fopen($logpath.$logname, "a+"); //Logdatei öffnen
fputs ($logfile, $log); //Log-Text schreiben
fclose ($logfile); //Logdatei schließen
}
}
//Wenn keine Info oder Fehler vorhanden
else {
unset($error); //Error-Variable löschen
unset($info); //Info-Variable löschen
}
}
}
//=====================================================================================================================================
/******************************************************
C O N T E N T A N Z E I G E
******************************************************/
//TEMPLATE LADEN
if(isset($template)) { include "template/$template/info.php"; } //Wenn $template definiert, Template includieren
else {
if(isset($templateStd)) { $template = $templateSTD; } //Wenn kein $template , Standard-Template $templateSTD laden
else { $template = "standard"; } //wenn auch kein $templateSTD, standard-Template laden
}
//COPYRIGHTVERMERK PRÜFEN
$chkmyrights = file_get_contents("template/$template/footer.tpl"); //footer laden
$pos = strpos($chkmyrights, '<a href="http://www.ameisenberg.com" title="ameisenberg.com" onclick="window.opem(this.href);">ameisenberg.com</a>'); //nachschauen ob die Links vorhanden sind
if ($pos === false) header('Location: template/standard/index.php'); //wenn nicht vorhanden, zur Warnseite headern
//Sprache auslesen
function getLang($lang) {
if (isset($_POST['lang'])) {
$lang = $_POST['lang'];
$_POST['lang'] = $_SESSION['lang'];
} elseif (isset($_SESSION['lang'])) {
$lang = $_SESSION['lang']; }
else {
$lang = "de-DE";
}
return $lang;
}
// Seitenkopf anzeigen
function showHtmlHead($pagetitle, $template) { //Standard-HTML-Head erzeigen
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
echo "\n".'<html xmlns="http://www.w3.org/1999/xhtml">';
echo "\n<head>";
echo "\n".'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
echo "\n<title>".$pagetitle."</title>\n"; //Seitentitel in title
if (!$template) $template = "standard"; //wenn kein template, template = standard
echo '<link href="template/'.$template.'/css/layout.css" rel="stylesheet" type="text/css" />'; //template-CSS laden
echo "\n</head>";
echo "\n<body>\n";
echo "\n<!-- SEITENBEGINN !-->\n";
}
//Seitenfuß anzeigen
function showHtmlEnd() {
echo "</body>\n</html>"; //Standard-HTML-Seitenende
}
?> Leider habe ich irgendwie nicht verstanden, was Du mit "Brauchst du vielleicht auch in
content.php auch ein
global $lang; ?" meinst - evt. dort auch nochmal definieren?
Desweiteren:
Ich dachte durch die Übergabe von
$lang im Funktionsaufruf
PHP-Code:
getLang($lang);
in Zusammenarbeit mit der Anweisung
würde mir schon den Variable-Wert zurückgeben...
@TAZweb:
Soweit ich mein "Handbuch" hier verstanden habe (es reißt das Thema "Variablen in PHP" innerhalb von 2 Seiten nur an...) muss, um einen return-Wert aus einer Funktion zu erhalten, diese Variable beim Funktionsaufruf übergeben werden... (siehe "Desweiteren" bei @CrisvA).
Was das
PHP-Code:
$_POST['lang'] = $_SESSION['lang'];
da bewirken soll, da zweifle ich gerade an mir selbst

Es war am Samstag Abend schon spät, glaube ich... Ich habe irgendwie vorgehabt, nachdem 'lang' via
$_POST ermittelt wurde, den Wert in der Session zu verankern... *koppkratz*
Via echo habe ich schon versucht eine Ausgabe hinzubekommen, aber die Ausgabe blieb (egal wo gesetzt) Leer.
Dafür habe ich mal die gesamte Error-Ausbeute aktiviert. Das Ergebnis:
PHP-Code:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at S:LOCALHOSTxampphtdocsabcmsindex.php:1) in S:LOCALHOSTxampphtdocsabcmsindex.php on line 2
Notice: Use of undefined constant Ymd - assumed 'Ymd' in S:LOCALHOSTxampphtdocsabcmsincludesfunctions.inc.php on line 4
Notice: Undefined variable: error in S:LOCALHOSTxampphtdocsabcmsincludesfunctions.inc.php on line 27
Notice: Undefined variable: log in S:LOCALHOSTxampphtdocsabcmsincludesfunctions.inc.php on line 30
Notice: Undefined variable: lang in S:LOCALHOSTxampphtdocsabcmsindex.php on line 7
Notice: Undefined variable: lang in S:LOCALHOSTxampphtdocsabcmsindex.php on line 8
Warning: include(S:/LOCALHOST/xampp/htdocs/abcms/language//install.php) [function.include]: failed to open stream: No such file or directory in S:\LOCALHOST\xampp\htdocs\abcms\index.php on line 8
Warning: include() [function.include]: Failed opening 'S:/LOCALHOST/xampp/htdocs/abcms/language//install.php' for inclusion (include_path='.;S:\LOCALHOST\xampp\php\PEAR') in S:LOCALHOSTxampphtdocsabcmsindex.php on line 8
Undefinierte Variable also - hmmm... (Und noch einige andere Fehler... oh wei...)
Ich hoffe Euch beiden nun etwas mehr "Angriffsfläche" für mein Problem geliefert zu haben...
DANKE SCHON EINMAL FÜR EURE MÜHEN!
