if-Abfrage wird ignoriert

Hurricane123

Grünschnabel
Hallo,

ich hab ein großes Problem. Ich sitze zur Zeit an einer Web-Anwendung die mit Sessions arbeitet. Nun will ich an einer Stelle prüfen ob der Browser des Bnutzers Cookies zulässt.

Problem ist ich habe eine If-Abfrage die komplett ignoriert wird,obwohl eine der Bedingungen zutreffem muss !

Hier die entsprechenden Code Zeilen:

PHP:
if( !$_COOKIE['PHPSESSID'] )
          header("Location: berlin");
else
	  header("Location: unna");

Das das ganze Inhaltlich völlig unsinnig ist soll erstmal egal sein, ich wollt ja einen Fehler provozieren, damit ich weiß ob die Variable gesetzt ist oder nicht.

Zum Test (ich wollte wissen ob meine Kombi von der Cookie Variable und dem "!" funktioniert) hab ich folgende Datei erstellt:

PHP:
if(!$_COOKIE['PHPSESSID'])
{
	$_SESSION['SID'] = session_id();
	echo $_SESSION['SID'];
}
else
	header("Location: Stuttgart");

Die widerum arbeitet wie erwartet und gibt mir die Session ID aus.

Kann mir jemand sagen wo mein denkfehler ist ?

Vielen Dank im voraus.

Das ganze habe ich übrigens bei deaktivierten Cookies getestet.
 
Zuletzt bearbeitet:
hallo..
oder setz mal { } nach dem if also
PHP:
if( !$_COOKIE['PHPSESSID'] ){
          header("Location: berlin");
}
else
      header("Location: unna");
 
Wenn ich nach dem else das skript abbreche, arbeitet er die if-Abfrage ab (requested url ... berllin not found). Allerdings bringt mich das leider nicht ganz weiter, denn nach dem else (also hinter dem exit) kommt noch eine elementare header-modifikation.
Hier am besten mal das komplette skript

PHP:
<?php
include("../css/messages.php");
//Benutzereingaben auf vollständigkeit prüfen
if(empty ($_POST[givenname]) or empty ($_POST[password]))
{
	header("Location: ../application/index.php?action_url=login&status_url=incomplete");
}	
else
{
	//Neue Verbindung zum LDAP-Server herstellen
	include("ldap_connection_class.php");
	$ldap_conn = ldap_connect($ldap_server, $ldap_port) or die("$ldap_conn_err");

	//Binden an LDAP-Server
	if(!@$bind = ldap_bind($ldap_conn,$dn,$user_pw)) 
	{
		if($ldap_record_count != 1)
		{
			//Benutzername gegen LDAP prüfen
			header("Location: ../application/index.php?action_url=login&status_url=invalid_ldap");
		}	
		else
		{
			//Passwort gegen LDAP prüfen 
			header("Location: ../application/index.php?action_url=login&status_url=invalid_pwd");
		}	
	}	
 	else
 	{
 		//User gegen Oracle-Datenbank prüfen
 		include("../application/odbc_connection_class.php");
 		$get_app_uid = odbc_exec	(	$odbc_connect,"
										select benutzer_id
 										from benutzer
 										where upper(given_name) = upper('$_SESSION[user_id]')"
									 );
 		while(odbc_fetch_row($get_app_uid))
 		{
			//$app_uid -> eindeutige ID des Benutzers in der DB
			$app_uid = odbc_result($get_app_uid, "benutzer_id");
		}	
 		if(empty($app_uid))
		{
			header("Location: ../application/index.php?action_url=login&status_url=invalid_user");
		}	
 		else
		{
			if(!$_COOKIE['PHPSESSID'])
			{
				header("Location: berlin");
			}
			else
			{
				header("Location: unna");
			}
			exit;
			header("Location: ../application/index.php?action_url=start");
		} 		
 	}
 	if($ldap_conn)
	 	$unbind = $ldap_unbind($ldap_conn);
}
?>

Es handelt sich hierbei um die login_action. nachdem also die Session-ID gesetzt ist, leite ich zur index.php weiter ... und jede weitere datei prüft dann, ob die session-id gesetzt ist. Sollte sie nicht gesetzt sein ist pustekuchen ...
 
Zurück