Problem mit Pfaden & EndungForum » Webzone » PHP & MySQL » Problem mit Pfaden & Endung
-
27.06.2012 um 12:04 Uhr
Halli Hallo
Mal wieder befinde ich mich in einem Gewirr aus php und Umgebung.
Da ich mir nich socher bin ob es in meinen alten Thread passt und es ja doch wieder irgendwie um etwas Anderes geht, poste ich es mal neu.
Dieses Mal stehe ich vor der Frage wie die ph enden muss und wohin damit.
Ich bin dabei alles so zu strukturieren, dass ich mit index.php?site=x meine ganzen Seiten included habe.
Alles schn fein im include-ordner.
Problem Pfade:
So, nun wird das Ganze aber so langsam unbersichtlich wenn man ber 100 Seiten im Ordner drin hat.
Ich stelle allerdings fest, dass sich meine php.inc Dateien aber auch nur aus diesem Ordner ffnen lassen. Unterordner und so gehen nicht.
Ich kenne die Alternative anstatt zu includen zu switchen.Wrde ich nur ungern tun, nur wenn es keine andere Lsung gibt.
So, nun aber das totale CHAOS (nun, zumindest fr mich:
Ich bin verwirrt bezglich der Endungen .php und .php.inc
Warum? Nun, wenn ich jetzt - nehme ich mal wieder als Beispiel ein Askme oder Gstebuch haben mchte, was innerhalb der Website aufgerufen werden soll, muss ich das doch theoretisch in den inlude-Ordner rein machen, weil sonst wirds ja nicht erkannt??!
Also muss ich aus dem gstebuch.php und allen Dateien die so mit ihm dran hngen ja theoretisch in php.inc umbenennen.
Klappt aber irgendwie nicht - ich habe auch schon daran gedacht innerhalb der Scripte natrlich dann auch die Bezeichnungen in php.inc umzubenennen. Will aber alles nicht so recht.
Was kann man denn hier machen? Ich hoffe mir kann Jemand helfen.
Alles Liebe ~ Die Serenade
Der Beitrag wurde insgesamt 1 mal editiert, zuletzt 27.06.2012 um 12:06 Uhr ... -
27.06.2012 um 13:43 Uhr
Es gibt nur eine php.ini ^^ und die hat ja mal gar nichts mit dem eigentlichen Script zu tun.
Was du meinst ist evtl. file.inc.php _ Sowas schreib ich z. B. rein, wenn ich weiss, die Datei wird (oft?) includiert. So schreibe ich einfach hinter dem eigentlichen Namen der Datei (jedoch noch vor der Endung) ein .inc. So weiss ich .. ah, file.includet.php
Auch wenn du das (jetzt noch nicht ^^) magst, mit Switch zu arbeiten kann ich es dir nur ans Herz legen ^^
Damit Du die Dateien aus allen mglichen Ordnern (auch Unterordner) fehlerfrei includieren kannst, solltest Du dir evtl. eine Variable wie dieses BASEDIR zulegen. Sobald du was includierst (in einer "bereits includierten" Datei) .. einfach dieses BASEDIR davor setzen und vollgas .. ^^
<?php // BASEDIR definieren define('BASEDIR', dirname(dirname(__file__)).'/'); switch($site) { case "startseite": include(BASEDIR.'inc_sites/startseite.php'); break; case "impressum": include(BASEDIR.'inc_sites/impressum.php'); break; default: include(BASEDIR.'inc_sites/index.php'); break; } ?>
.. so etz bin ich selber durcheinander gekommen. -,-'
Hoffe ich konnt dir iwie noch helfen, auch wenns bereits etwas her is xD
-
27.06.2012 um 14:03 Uhr
Vielen Dank erstmal
Aber ber eine ini Datei schrieb ich doch garnix *verwirrtbin*
Mit der Hilfe hier und ein Bisschen gebastel hab ich es glaube ich so wie ich es wollte.
Hmm kein Weg doch noch irgendwie Unterordner in den include mit einzubeziehen?
Hmm ich hab noch eine Frage betrefflich des Login Scripts, aber ich mag nicht unbedingt jetzt schon wieder nen Thema erffnen, kennst du dich damit aus?
Uhm falls ja, poste ich es hier einfach mal:
Ich habe ein Login womit man zu meiner memberarea kommen soll. Jetzt hab ich aber die Option, entweder die memberarea wird in einem neuen Fenster geffnet, was ich nicht mchte. Der Andere Fall ist, dass sich dass Login Form nochmal ffnet, wo der content hinkommen soll.
Ich mcht aber bei fallscher eingabe im content sowas wie falsch stehen haben und beim richtigen Passwort soll im Content dass auch die memberarea erscheinen.
Ich wei ist grad ganz vom Thema ab aber will hier echt nicht alles zuposten
Alles Liebe
-
27.06.2012 um 22:25 Uhr
Zitat von Serenade:
Hmm kein Weg doch noch irgendwie Unterordner in den include mit einzubeziehen?
Doch, allerdings nicht ganz so einfach. ^^
Wie sieht denn deine Ordnerstruktur und das bisherige Script aus?
Zu deiner Frage mit dem Login, arbeitest du mit MySQL oder mit einem Template-System?
Eigtl. ja nicht schwer .. Jedoch msste mal ein wenig von deinem Code sehen .. ?! =\
-
29.06.2012 um 08:26 Uhr
Erstmal rieden Dank dass du mir helfen magst
Hmm also ich glaube das mit den Ordnern habe ich raus.
Wenn ich keine inc.php Datei aufrufen will, dann verweise ich auf den hauptpfad wo auch zb mein Bilderordner sitzt.
Stelle fest sie werden prima angezeigt
Also zum nchsten Problem.Mit dem einbinden von den Scripten.
Ich arbeite mit den Sachen von dieser Seite hier...AskMe, Gstebuch, etc.
Also MySQL
Wenn ich mich nicht tusche hab ich das Login Script auch von hier. Ist halt eines mit Memberarea wo man PN und so schreiben und Profil verndern kann etc^^
Klar kein Thema was vom Code msstest du denn sehen? den Part wo ich das Ding einbinden will oder den Login selber?
Der wre nmlich wie folgt:
<?php ob_start(); // Startet die Session include("fb-header.inc.php"); include("fb-db.inc.php"); include("fb-functions.inc.php"); if(isset($_REQUEST["submit"])) { // Wenn Formular abgeschickt if(exist("mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' AND passwort = '".md5($_REQUEST["passwort"])."'") && anzahl("login WHERE ip = '".getenv("REMOTE_ADDR")."' AND erfolgreich = 'nein' AND timestamp > '".(time()-60*30)."'") < 4) { // Wenn Mitglied mit dem Namen und Passwort existiert! und wenn keine falschen logins in den letzten 30 Min. Wieso? um die Seite sicherer zu machen sonst k�nnen bruteforcer leicht hacken! $eintragen = mysql_query("INSERT INTO login (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'ja')"); // Eintrag in Login! $abfrage = "SELECT id FROM mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' LIMIT 0,1"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $_SESSION["login"] = $row->id; // Loggt einen ein! } echo "<meta http-equiv=\"refresh\" content=\"0; URL=http://margerydaw.bplaced.net/Spade/index.php?site=fb-memberarea\">"; // Weiterleitung zur Memberarea } else { // Wenn falsch eingeloggt $eintragen = mysql_query("INSERT INTO login (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'nein')"); // Eintrag in Login! ?> Login schlug fehl. <?php } } else { // Formular -> ?> <form action="index.php?action=fb-memberarea" method="post"> <input type="hidden" name="PHPSESSID" value="r29bmkjg6pvcp4bfl9obus6qp0" /> <input type="text" maxlength="32" name="Name" value="" title="name" /><br /> <input type="password" maxlength="16" name="Passwort" value="" title="passwort" /><br /> <input type="submit" name="submit" value="go" /> </form> <?php } include("fb-footer.inc.php"); ob_end_flush(); ?>
Der Pfad bei action im Formular ist noch falsch, ich wei.
So, das Login habe ich halt jetzt in meine index eingebaut und bei Login soll man halt im Content bei richtiger Eingabe die Memberarea sehen ( memberarea.inc.php - habe sie ja alle im include ordner sitzen o.o) nju und bei falscher Eingabe halt eine Fehlermeldung.
Ich wei soviel, dass bei Falscher eingabe NEBEN dem Login Dings die Meldung Login schlug fehl kommt.
Bei richtiger Angabe tut sich aber nix ist echt zum verzweifeln.
Hoffentlich habe ich alles so gut wie mglich erklrt
ps sorry wegen des etwas unbersichtlichen codes - Ich nutze MS Expression Web xD
Der Beitrag wurde insgesamt 2 mal editiert, zuletzt 16.07.2012 um 14:20 Uhr ... -
01.07.2012 um 11:59 Uhr
Hallu ^^
Also~ Da du ja deine Unterseiten in einen Ordner gepackt hast wrde ich es mal mit diesem Code hier irgendwie versuchen ^^
index.php?x=LINK&action.... :3 Vielleicht klappt ja das ^^
X = Steht fr den Ordner
Link = Steht fr die eigentliche PHP-Datei
& = Ist das Verbindungsstck! Weil das ? Ja schon bei der Index.php angewendet wurde. ^^ -
01.07.2012 um 13:27 Uhr
Dieses $_SESSION["login"] gilt ja bei dir doch nur in der while-schleife?
probiers mal so ..
$abfrage = "SELECT id FROM mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' LIMIT 1"; $ergebnis = mysql_query($abfrage); if( !count($ergebnis) return; $row = mysql_fetch_object($ergebnis); $_SESSION["login"] = $row->id; // Loggt einen ein! echo "<meta http-equiv=\"refresh\" content=\"0; URL=http://margerydaw.bplaced.net/Spade/index.php?site=fb-memberarea\">";
oder krzer ..
$ae = mysql_query("SELECT id FROM mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' LIMIT 1"); if( !count($ae) return; $row = mysql_fetch_object($ae); $_SESSION["login"] = $row->id; // Loggt einen ein! echo "<meta http-equiv=\"refresh\" content=\"0; URL=http://margerydaw.bplaced.net/Spade/index.php?site=fb-memberarea\">";
-
01.07.2012 um 16:10 Uhr
@flavius:
Danke, habs gleich mal ausprobiert.
Leider kam das dabei raus:
Parse error: syntax error, unexpected T_RETURN
@Mautzi:
ebenfalls erstmal Danke. Hmm der Gedankengang ist gut, werd ich mal ausprobieren
Edit:
Noch ne kleine Frage wegen der Idee frs Login.
Wenn das Passwort richtig eingegeben wurde sagt er mir trotzdem Login schlug fehl o.O
Das originale Login Script (also ohne dass ich was dran gemacht habe) sieht brigens so aus:
(Vielleicht hilft das ja irgendwie???)
<?php session_start(); // Startet die Session include("header.php"); include("db.php"); include("functions.inc.php"); if(isset($_REQUEST["submit"])) { // Wenn Formular abgeschickt if(exist("mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' AND passwort = '".md5($_REQUEST["passwort"])."'") && anzahl("login WHERE ip = '".getenv("REMOTE_ADDR")."' AND erfolgreich = 'nein' AND timestamp > '".(time()-60*30)."'") < 4) { // Wenn Mitglied mit dem Namen und Passwort existiert! und wenn keine falschen logins in den letzten 30 Min. Wieso? um die Seite sicherer zu machen sonst knnen bruteforcer leicht hacken! $eintragen = mysql_query("INSERT INTO login (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'ja')"); // Eintrag in Login! $abfrage = "SELECT id FROM mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' LIMIT 0,1"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { $_SESSION["login"] = $row->id; // Loggt einen ein! } echo "<meta http-equiv=\"refresh\" content=\"0; URL=memberarea.php\">"; // Weiterleitung zur Memberarea } else { // Wenn falsch eingeloggt $eintragen = mysql_query("INSERT INTO login (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'nein')"); // Eintrag in Login! ?> Login schlug fehl. <?php } } else { // Formular -> ?> <form action=login.php method=post> <table width=90%> <tr> <td width=50%> <b>Name:</b> </td> <td width=50%> <input type="text" name="name"> </td> </tr> <tr> <td width=50%> <b>Passwort:</b> </td> <td width=50%> <input type="password" name="passwort"> </td> </tr> <tr> <td width=100% colspan=2> <input type="submit" value="Login" name="submit"> </td> </tr> </table> </form> <?php } include("footer.php"); ?>
Der Beitrag wurde insgesamt 3 mal editiert, zuletzt 01.07.2012 um 16:36 Uhr ... -
16.07.2012 um 14:22 Uhr
hab mich inzwischen mit ner Kombination aus include und Frames durchgemogelt. Es bestehen keine Fragen mehr, Thread kann also gerne closed