Include("xxx.php") -Problem

Gulli

Mitglied
Hi,
Ich habe heut ein Loginscript geschrieben und hab da Problem mit den Include() Anweisungen.

Das Script prüft, nachdem es die Daten von einem Formular erhalten hat, ob es den User gibt und welchen Rang er hat. Bei Admin wird die admin.php includiert, und so weiter. Ich möchte die "rang".php Seiten aber schützen, indem sie nur etwas ausgeben, wenn entsprechende Variablen über POST mitgeteilt werden.

Ich bin noch ein ziemlicher Anfänger in PHP und denke mal das man da irgentwas mit headern machen muss, aber ich hab keine Ahnung. Hier das Loginformular:

PHP:
<?php
if (!empty($_POST['login']))
{
	if ($_POST['login'] == "true")
	{
		$pass = $_POST['pass'];
		$user = $_POST['user'];
		$Fid = fopen("check.txt","r");
		$id = fgets($Fid);
		fclose($Fid);
		$check_id = NULL;
		$check = NULL;
		$connect = mysql_connect("wird","net","verraten");
		mysql_select_db("bring");
		$Test = mysql_query("SELECT id FROM user");
		while ($test = mysql_fetch_row($Test))
		{
			$id--;
			$check_id = mysql_query("SELECT * FROM user WHERE id = ($id)");
			$check = mysql_fetch_array($check_id);
			switch ($user)
			{
			case $check['user'];
				switch ($pass)
				{
				case  $check['pass'];
					switch ($check['rang'])
					{
					case "admin";
						include("admin.php");
						break;
					case "normal";
						include("normal.php");
						break;
					default;
						include("normal.php");
						break;
					}
					break;
				default;
					echo "<html><head><title>Login</title></head><body>Passwort falsch!<br><br>";
					echo '
						<form action="index.php" method="post">
  						<p>Username : 
   						<input name="user" type="text" id="user">
						</p>
  						<p>Passwort : &nbsp; 
    					<input name="pass" type="password" id="pass"> 
  						</p>
						<p><input type="submit" name="Submit" value="Login">
						<input name="login" type="hidden" id="login" value="true"></p>
						</form></body></html>
						';
					break;
				}
			}
		}
	}
}else{
		echo "<html><head><title>Login</title></head><body>Bitte log dich ein!<br><br>";
		echo '
			<form action="index.php" method="post">
  			<p>Username : 
   			<input name="user" type="text" id="user">
			</p>
  			<p>Passwort : &nbsp; 
    		<input name="pass" type="password" id="pass"> 
  			</p>
			<p><input type="submit" name="Submit" value="Login">
			<input name="login" type="hidden" id="login" value="true"></p>
			</form></body></html>
			';
	}
?>

Alles funktioniert soweit nur das includen halt nicht so.

GrettZ Gulli
 
Ich glaube du verstehst nichjt so ganz was ich meine, das Script geht ja, aber ich möchte den includeten Dateien 2-3 variablen per POST über geben und genau das bekomm ich net hin.

Das mit dem : weiss ich aber ich nehm immer ; und es geht trotzdem.
 
PHP hat leider immer so kleine Lücken durch die man durchkommt.

man kann if und else auch ohne die geschweiften klammern schreiben und es klappt trotzdem, aber solltest du dann mal ein Parse Error bekommst und was weiß ich noch für Fehler sucht man sich ohne eine gewisse Konstruktion doof und dämlich.

Und wie kann dein Login funktionieren wenn dein Statement keine Bedingungen hat? Ich mein du musst doch aus der Tabelle holen welcher Benutzer sich gerade versucht einzuloggen. Du lässt dir die ID*s ausgeben aber nach welchen Kriterien?

Fragen über Fragen!

Und nimm besser die konformen PHP zeichen und Operatoren und und und, dann wirst du als PHP Coder evtl. mehr erfolg haben. Zudem glaub ich das, dass Thema include() schon zimelich oft beandelt wurde, und Du bei der Benutzung der Suchfunktion auch einiges finden wirst.

Gruß Mirko
 
Die while()-Schleife liest immer einen User asu der MySQL Datenbank aus und vergleicht ihn mit den eingegeben Daten. Wird eine übereinstimmung des Usernamens gefunden ist das Passwort dran, ist das auch richtig, wird die entsprechende Datei für den Rang includet. Der Datei soll einmal mitgeteilt werden, dass jemand eingeloggt ist und welche id der User hat. Und das Mitteilen will ich per POST machen, weil bei GET ein Fehler kommt: Datei nicht gefunden (No such file or directory: admin.php?login=true&id=1).

Danke für den Tipp, ich werde mal suchen.

Bis denne!
 
Dein Problem dabei ist aber nur das er alle Benutzer durchläuft und wenn er einen gefunden hat nicht stehen bleibt.

Also ein Login Formular sieht meines erachtens ja nicht so aus! Allein aus Sicherheitsgründen würde ich es so nicht machen.

Also einmal zum Verständniss. Du übergibts die Daten per Post! Dann schreibst du dein Statement so das er nur den Benutzer ausliest, welcher sich gerade versucht einzuloggen. Wenn der Benutzer erfolgreich eingeloggt ist, dann hast du die Möglichkeit den Benutzerstatus anzeigen zu lassen. Ist der Status!=Admin dann lädst du die normale Navi oder sonstwas in dein Script. Und andersrum.

Wir haben hier auch ein super Tutorial über Logins.

-> Hier Klicken

Gruß Mirko
 
Ich kenn das Tut. Ich weiss auch das er nicht stehen bleibt, wenn er fertig is, das wird aber noch behoben. Nur mir geht es erstmal darum, das mit dem includen hinzubekommen, damit ich weitermachen kann. Denn so bring mir das nicht viel.

Bis denn.
 
Wie soll er denn ein Ergebniss finden wenn das Script nicht stehen bleibt und wenn keine Daten vom benutzer in das Statement übergeben werden?

Das ist doch ganz normal das er das mit dem Include nicht hinbekommt! Wie kann man eine Schleife durch die ganze Datenbank laufen obwohl sich nur ein Mensch anmeldet also nur eine Abfrage. Das ist nicht nur Resourcen killend sondern auch noch meiner Meinung nach völlig unsicher und völlig Falsch.

Gruß Mirko
 
1. Das Script bleibt stehen, wenn alle verfügbaren Id's durchgelaufen sind.
2. Das include geht
3. Ich will doch nur zwei simple variablen an die includierte Datei per POST schicken!
 
An die Datei schicken geht nicht. Wie wärs wenn du in der Datei die Variablen aus deinem Script einfach neu aufrufst. Also das ist ja jetzt wohl das ganz kleine Problem.

Gruß Mirko
 
Zurück