[PHP] Script probleme - IF funktion auf Server nicht ausführbar?
Hey.
Ich hab derzeit in Problem mit einem meiner Scripte an dem ich schon ne weile arbeite.
Das Script für die Verwaltung von Daten von mehrer Personen gedacht, bspw. Vorname, Nachname, Adresse, Telefon, etc., wobei dieses Daten in einer Textdatei gespeichert werden und auf wunsch in einem JS Popup aufgerufen werden können sollen. Das Popup wird durch den Klick auf den Namen der Person aktiviert und soll dann die Informationen der angeforderten Person in einem Textfeld anzeigen.
Ein Beispiel:
Max Mustermann
Musterstraße 1
1234 Musterland
Tel. 0123/456790
email: max@mustermann.com
Die Daten von Max werden in dieser Form in Zeile 2 einer leeren Textdatei gespeichert und diese wird dann Mitglieder.txt getauft. Aussehen tut das so:
Zeile 1 beinhaltet nur zu Orientierungszwecken was in den der jeweilige Reihen stehen soll. Reihe 0 ist Nachname, Reihe 1 ist Vorname, Reihe 3 ist Adresse usw.
Gut. Die Daten werden von mir manuell eingegeben, das einzige was mich in dem Script interessiert, ist dass sie angezeigt werden.
Das eigentliche PHP Script zum abrufen der Daten wird in der index.php Datei eingegeben und sieht so aus:
Ok, kurze Erklärung was hier passiert.
Im oberen Teil des Scripts seht ihr wie anhand der Laufnummer, eine Zahl die ich in Reihe 7 eingegeben hab um die Mitglieder zu sortieren, der auszugebende Link generiert wird. Wird der Link geklickt, öffnet sich via JS Befehl onClick=window.open ein Popupfenster mit mehreren Textfelder wo dann via echo die Daten angezeigt werden.
Jetzt zum eigentlich Problem:
Mein Host (http://uttx.net wen's interessiert) zeigt mir wenn mit einem Script etwas nicht ganz in Ordnung eine Fehlermeldung auf der Site an. Weiters, wenn ich auf einen generierten Link klicke, erscheint ein PopUp welches ca. 2 Sekunden lädt und mir dann wieder die Auswahlseite mit den Links anzeigt.
Mein Host unterstützt PHP 5.x.x. womit ich bisher noch nie Probleme mit einem Script hatte. Ein Kollege meinte jedoch, dass der Server eventuell ein Problem mit der IF Schleife, if ($seite == "") bzw. if ($seite == "mitgliederdetails"), haben könnte und daher nicht funktioniert. Es werden mir interessanterweise auch genau diese beiden Zeilen auf meiner Site als Fehler angegeben, wo es heisst dass diese Variable nicht definiert sei.
Der Idee mit der IF Funktion stehe ich aber ein bisschen skeptisch gegenüber, da andere Scripte mit einer IF Funktion bzw. IF Schleife einwandfrei auf meiner Site laufen.
Wer sich gerne vor Ort Bild ein machen möchte, kann sich das Problem live und in Farbe gern anschauen. Klickst du Hier
Ich hoffe das Board bleibt seinen Ruf treu und überflutet mich bald mit guten Ideen
THX,
A2k
--
The problem with America is stupidity.
I'm not saying there should be a capital punishment for stupidity, but why don't we just take the safety labels off of everything and let the problem solve itself?
----
Arguing with the moderators is like shaking your fist at God. There's nobody there; and if there is, he's not listening. And if he's listening, all you're doing is pissing him off.
Ich habe jetzt nur schnell ueber den Text gelesen und mir alles nur oberflaechlich angeschaut.
Also, erstmal zu einem Fachbegriff den du irgendwie gemixt hast:
if (blah);
Das ist keine Schleife. "If-Schleife" ist da eher eine eigene Wortschoepfung von dir. Ein If ist eine Verzweigung - hier wird nur unterschieden. Eine Schleife hingegen wiederhohlt etwas. Somit schliesst das eine auf dieser Abstraktionsebene schon das Andere aus.
Wenn du dir diese Liste anschaust, wirst du hoechstwahrscheinlich bei den Settings (vllt. auch erstmal mit Unterstuetzung des Manuals) einen Eintrag finden, der es dir verbietet globale Variablen ueber diese Art abzugreifen, wie du es machst.
if ($seite == "dasunddas");
Ich nehme stark an, dass $seite aus der Adresszeile abgegriffen wird? Um im Secure-Mode globale Variablen abzugreifen gibt es jeweils spezielle Arrays. Beispiele dazu waere einmal $_FILE[""], $_POST[""], $_GET[""]. All diese Arrays haben die Eigenschaft irgendwie superglobal bekant zu sein., $_POST und $_GET sind z.B. Informationen die der Benutzer indirekt, oder direkt per Eingabe an dein Script schickt. Darunter gehoeren in erster Linie einmal Informationen in der Adressleiste, sowie Infos aus HTML-Boxen.
Versuch also einfach auf die Variablen in der Adresszeile folgendermassen zuzugreifen:
Wichtig ist es natuerlich immer dem User gegenueber ein hohes Misstrauen zu zeigen. Du musst also immer stark aufpassen, ob die Informationen gueltig sind, die du erhaelst. Wenn du dich mit Datenbanken beschaeftigst, oder anfaengst deinen Code zu modularisieren wirst du das dann schnell lernen.
<a onClick=window.open(...); return false; > - wie soll das denn ein Browser verstehen? Mich würde es wundern, wenn die Browser wüssten, was gemeint ist. Außerdem kannst du mal probieren, ob das $i richtig gesetzt wird im Link.
ach ja, und wie Mog schon meinte: ein $seite == "" funktioniert nicht, da $seite keine definierte Variable ist. Die meisten Server haben diese PHP-Einstellung nicht, mit der man per GET angehängte Variablen einfach frei benutzen kann, da hilft nur if (isset($_GET['seite']) and $_GET['seite'] == "blabla") bzw. ein if (!isset($_GET['seite']))