Try... Catch + unexpected

Binat

Grünschnabel
Hi,
ich hab die schlimme Befürchtung, dass man mich gleich Knebeln und für immer in eine dunkle Kammer stecken wollen wird, damit einer dieser vielen Programmieranfänger weniger in diesem Forum herumwuseln, aber ...

... ich hab ein unerwartetes Problem.

Ich bin gerade dabei seit letzte Woche Dienstag mir PHP beizubringen. Bin auch recht weit gekommen. Nun wollt ich anfangen einen eigenen Adminbereich für meine Homepage zu bauen. Aus gewissen technischen Gründen musste ich nun etwas improvisieren, also sich nicht an der Logik des Scripts stören. Es geht mir wie gesagt nur darum, dass ich mich verbessere...

Folgende Situation...

... es wird eine Seite geladen. Dort wird User und Passwort eingegeben. Wenn korrekt.. einloggen. Eigentlich simpel. Nun musste ich mir, da ich gerade nicht auf meine Datenbank zugreifen kann einfach mal ne Funktion basteln, die mir entweder 1 oder NULL zurückwirft. 1 bei alles korrekt ... NULL bei hier fehlt was oder ist falsch. Damit ich nicht eine Fatal Error bekomme, wenn ich mit einer Datenbank arbeite, wo ich eigentlich nicht eigeloggt bin möchte ich mit try und catch arbeiten ... nu hab ich das so gemacht, wie meine Java Kenntnisse mir das sagen, auch Onkel Google behauptet nichts gegenteiliges ja und sogar mein Verstand behauptet das sollte richtig sein ... nach 45 Minuten geb ich es tortzdem auf ...

Parse error: parse error, unexpected '{' in d:\www\uebung\adminzugang.php on line 19

PHP:
	<?php 
			$ok = $_POST["ok"];
			
			if(isset($ok))
			{
			
				$name = $_POST["nm"];
				$passwort = $_POST["pw"];
				
				require("test-zugriff.php");
				$temp = test($name, $passwort);
				
				try 
	/* Zeile 19 */		{
					if($temp)
					{	
						echo "Login erfolgreich!";
					}
					else
					{
						throw new Exception;
					}
				}
				catch(Exception $e)
				{
					echo "Login fehlgeschlagen!";
				}
			
			
 			}
			 
	?>

zugriff-test.php funktioniert Fehlerfrei, wie ich es beschrieben habe ... hab es ausgiebigst getestet.

Aber warum der Fehler? Was mach ich in meiner naiven Leichtsinnigkeit falsch?

Grüße Thomas

Edit:

PHP:
//test-zugriff.php
<?php

	function test($inName, $inPasswort)
	{
		$v_name = "root";
		$v_passwort = "root";
		
		if(isset($inName) && isset($inPasswort) && $inName == $v_name && $inPasswort == $v_passwort)
		{
			return 1;
		}
		else
		return NULL;	
	
	}
?>
 
Zuletzt bearbeitet:
Hi,

ich weiß nicht ob es daran liegt, aber du hast ein Semikolon vergessen:
PHP:
if($temp)
                    {    
                        echo "Login erfolgreich!"
                    }

Es fehlt nach dem echo.

MfG Frank
 
Danke ^^ während ich ganz verbissen nach meinem Parse Error gesucht habe, hab ich das ganz übersehn ... ist allerdings Zeile 21 hat nichts damit zu tun, ich glaube ich hätte mich auch ordentlich geärgert.

PS: ich hab es oben angehängt, weil irrelevant ...
 
Zuletzt bearbeitet:
Also, ich weiß nicht. Die If-Abfrage is meiner Meinung nach bissi sinnfrei.
Hier mal meine Version...
PHP:
if(isset($inName) && isset($inPasswort))
 if(($inName == $v_name) && ($inPasswort == $v_passwort)) 
  return true;
 else 
  return false;
Zuerst wird abgefragt, ob es die Variablen überhaupt gibt, was eigentlich auch sinnfrei ist, weil es sind parameter die übergeben werden müssen. dann werden die variablen verglichen und je nach dem richtig (true) oder falsch (false) zurückgegeben...
 
Manchmal denk ich einfach zu kompleziert ... da muss ich dir recht geben ...

ich hab es mal so umgeändert:

PHP:
	function test($inName, $inPasswort)
	{
		$v_name = "root";
		$v_passwort = "root";
		
		if($inName == $v_name && $inPasswort == $v_passwort)
			return 1;
		else
			return NULL;	
	
	}

allerdings bleibe ich bei NULL, weil ich nicht möchte, dass $temp existiert, wenn die Bedingungen nicht erfüllt sind...

Grund:
wenn ich mysql_connect($host, $falscheruser, $falschespasswort); ja keine wirklich Refferenz zurückbekomme. Ich will ja genau diesen Fatal Error übergehen.
Derzeit ist mein Primärziel, den Fehler aus diesem Thread zu verstehen ...
 
Wenn du nicht willst, dass $temp nicht exisitiert, wirst du später auf nen Problem treffen in der ersten If-Abfrage im Try-Block. Das ist nicht sauber programmiert, deswegen hab ich das auch auf true/false gestellt. Die Variable löschen kannst du später ja immer noch...
Aber was noch möglich ist wegen deinem Klammerproblem, dass du vorher mal eine Klammer vergessen hast oder so.
 
das Löschen denke ich, werde ich übernehmen ...

... auch hier muss ich dir wieder recht geben. Leider fehlt mir nach 2 Wochen noch jegliche Methodenkompetenz.

Doch es fehlt leider keine Klammer und es ist auch widererwartet keine zu viel, zumindest nicht nach meiner Rechnung...

Grüße Thomas
 
Zurück