[PHP] Session Problem

Megaman2044

Lt. Junior Grade
Registriert
Feb. 2005
Beiträge
365
Servus Jungs,

ich bin grade an einem Login dran und da will ich mit sessions arbeiten, mein Problem ist aber die session wird nicht zerstört. Meine Function:

PHP:
$save=$_POST['save'];

@session_start();

$user="sasdasdasdasdsaaddmin";
$password="tasdest";
  
if(isset($save))
  {
  $check=empty($_POST['user']) || empty($_POST['pass']);
  
  if($check)
    {
    if(empty($_POST['user'])) $error[0]="<br><font size=\"1\" color=\"red\">"._login_error_field."</font></td>";
    elseif(empty($_POST['pass']))  $error[1]="<br><font size=\"1\" color=\"red\">"._login_error_field."</font></td>";	    														
    }
    else
    {             
    if($_POST['user'] != $user AND $_POST['pass'] != $password)
      {
      $error[1]="<br><font size=\"1\" color=\"red\">"._login_error_failed."</font></td>";
      }
      else
      {          
      $_SESSION['user']=$user;
      $_SESSION['pass']=$password;
      
      if(isset($site)) include($site.'.php'); else include('overview.php');      
      }
     }     
  	}
  else
  {   
  if($_SESSION['user'] = $user AND $_SESSION['pass'] = $password)
    {
    if(isset($site)) include($site.'.php'); else include('overview.php');
    }
    else
    {  
  	echo show("login", array("head" => _login_head,
 												  	 "info" => _login_info,
 													   "user" => _login_user,
 													   "password" => _login_password,
 													   "button" => _login_button,
 													   "error-0" => $error[0],
 													   "error-1" => $error[1],
 													   "post_user" => $_POST['user'],
 													   "post_pass" => $_POST['pass']));
    }
 	 }

Es wird jedes mal overview.php aufrefen, wenn ich den user und das pw änder das gleiche. In einer anderen Datei habe ich session destroy stehe rufe NUr sie auf und dann wieder index.php auch nicht, wo ist der fehler ?
 
Vor diesem Problem stand ich auch mal und habe mir dann eine eigene Session-kaputt-hau-Funktion zusammengebaut:

Vielleicht hilft sie dir ja weiter:
PHP:
# really kills a session
function kill_session()
{	
	# clear cookie
	unset($_COOKIE[session_name()]);
	# clear superglobal $_SESSION and its content
	unset($_SESSION);
	# destroy session data and prevent warnings
	@session_destroy();
}
 
das hilft auh nicht irgendwo muss da ein andere Fehler sein. Dann wenn ich logout mit deinem inhalt aufrufe geht es auch nicht.

So sieht meine index.php aus:

PHP:
<?       
    
  include('functions.php');
  include('config.php');  
      
  lang($language); 
  $site=$_REQUEST['site'];
 
  echo show("head", array("title" => $title,
      												"version" => $version));	         
  echo show("menu", array("system" => _menu_head_system, 
                              "overview" => _menu_link_overview, 
                              "settings" => _menu_link_settings, 
                              "users" => _menu_link_users, 
                              "content" => _menu_head_content, 
                              "matches" => _menu_link_matches,
                              "downloads" => _menu_link_downloads));
                              
  
  include('login.php');
    
  echo @show("footer");             
  
?>

Wo ist da der Fehler ?
 
Bin mir jetzt nicht sicher, aber müsste hier nicht ein OR hin
also
if($_POST['user'] != $user OR $_POST['pass'] != $password)
 
bringt auch nix.

Aber ich habe wieder ein problem und zwar, vorher hatte ich diese abfrage in der index.php
PHP:
if(isset($site)) include($site.'.php'); else include('overview.php');

Jetzt ist diese abfrage in der login.php aber da habe ich folgendes problem:

so wenn ich das aufrufe:

index.php?site=matches&add aufrufe geht das aber wenn ich da dann den button klicke wird nichts dargestellt.

Wieso ?
 
Also hab erstmal die obere Funktion umgebaut, da waren wohl paar Fehler drin.


PHP:
<?
$save=$_POST['save']; 

@session_start();

$user="sasdasdasdasdsaaddmin";
$password="tasdest";
  
if(isset($save))
{ 
    $check=empty($_POST['user']) || empty($_POST['pass']);
  
      if($check)
    {
        if(empty($_POST['user'])) $error[0]="<br><font size=\"1\" color=\"red\">"._login_error_field."</font></td>";
        elseif(empty($_POST['pass']))  $error[1]="<br><font size=\"1\" color=\"red\">"._login_error_field."</font></td>";                                                                
    }
    else
    {             
            if($_POST['user'] != $user || $_POST['pass'] != $password)
            {
                $error[1]="<br><font size=\"1\" color=\"red\">"._login_error_failed."</font></td>";
            }
            else
            {          
                $_SESSION['user']=$user;
                $_SESSION['pass']=$password;
              
                if(isset($site)) include($site.'.php'); else include('overview.php');      
            }
     }     

    if($_SESSION['user'] = $user AND $_SESSION['pass'] = $password)
    {
        if(isset($site)) include($site.'.php'); else include('overview.php');
    }
    else
    {  
        echo show("login", array("head" => _login_head,
                                                        "info" => _login_info,
                                                        "user" => _login_user,
                                                        "password" => _login_password,
                                                        "button" => _login_button,
                                                        "error-0" => $error[0],
                                                        "error-1" => $error[1],
                                                        "post_user" => $_POST['user'],
                                                        "post_pass" => $_POST['pass']));
    }
}
?>
Gibt zumindestens keine Fehler mehr aus, gucke aber mal weiter erstmal.
 
Zuletzt bearbeitet:
Hi,
ich würde mal behaupten das es ganz logisch ist das er sich einloggt...
versuch mal deine if Abfrage andersrum zu formulieren.

so in etwa...
PHP:
    if($_POST['user'] == $user AND $_POST['pass'] == $password){
      $_SESSION['user']=$user;
      $_SESSION['pass']=$password;
    
      if(isset($site)) include($site.'.php'); else include('overview.php');
      
    }else{
      $error[1]="<br><font size=\"1\" color=\"red\">"._login_error_failed."</font></td>";          
    }


Megaman2044 schrieb:
bringt auch nix.

Aber ich habe wieder ein problem und zwar, vorher hatte ich diese abfrage in der index.php
PHP:
if(isset($site)) include($site.'.php'); else include('overview.php');

Jetzt ist diese abfrage in der login.php aber da habe ich folgendes problem:

so wenn ich das aufrufe:

index.php?site=matches&add aufrufe geht das aber wenn ich da dann den button klicke wird nichts dargestellt.

Wieso ?

Auf welchen button klickst du denn, auf welcher seite befindet sich der button?
Ist schwer nachzuvollziehen aber..... ich würde mal darauf tippen, das du im POST unter dem Formular nicht den kompletten pfad angegeben hast sprich index.php?site=matches&add
 
Ok danke.

ja ich habe immer nur sowas stehen wir: index.php?site=matches&add
 
Ich kanns irgendwie echt net nachvollziehen!!! Wenn du auf welchen Button klickst?`zum einloggen? oder einfach so nen Button der dann zu der Seiet

index.php?site=matches&add

führt.

Wie sieht denn das FORMULAR aus? poste mal den code!
 
so sieht ein fomular aus:

PHP:
 <tr>
		<td>
			<table cellpadding="0" cellspacing="0" align="center" class="content-box">
			 <form action="index.php?site=downloads&cat-add" method="post">			 	
	 			<tr>
	 				<td colspan="2" class="head1"><b>[head]</b></td>	 			
	 			</tr>	 
	 			<tr>
	 				<td class="line1">[category]</td>
	 				<td class="line2">
	 				<select name="category">		
	 				[post_category]
	 				</select>
	 			</tr>	
	 			<tr>
	 				<td class="line1">[name]</td>	 		
	 				<td class="line2"><input class="line" type="text" value="[post_name]" name="name" size="0"></td>	 		
	 			</tr>				 				 			
	 			<tr>
	 			  <td colspan="2" class="line2"><input class="button" type="submit" name="save" value="[button]"> [fields]</td>	 			
	 			</tr>
	 		</form>
			</table>
		</td>
	</tr>
 

Ähnliche Themen

Zurück
Oben