session Prob mal wieder

Kimble

Erfahrenes Mitglied
hi,
ich hab versucht ein einfaches Login-Script zu schreiben:

login.php:
PHP:
<?php
session_start();
session_save_path( "./save" );
$connectionid = mysql_connect ("localhost", "x", "x"); 
mysql_select_db ("usr_web202_1", $connectionid) or die("Error: " . mysql_error());

$query = "SELECT * FROM eq_user ";
$query .= "WHERE (user LIKE '%" . $_POST['user'] . "%')";
$query .= " AND (pw='" . md5( $_POST['pw'] ) . "')";
$tmp = mysql_query( $query );
if( mysql_num_rows( $tmp ) > 0 ) {
	$data = mysql_fetch_array( $tmp );
	$user_id = $data['id'];
	$user_user = $data['user'];
	$user_firstName = $data['firstName'];
	$user_secName	= $data['secName'];

	session_register( "user_id" );
	header("Location: news.php");
} else {
	header("Location: main.php");
}
?>

so dann rufe ich folgendermassen z.b. eine Seite auf:
PHP:
<?php

include("modules/cms_checkLogin.inc");
?>
<html>
<head>
	<title>news</title>
	<link rel="stylesheet" type="text/css" href="style/style.css">
</head>

<body bgcolor="#D4D5D7" vlink="#5E667B">
<table border="0" width="500" cellspacing="0" cellpadding="0">
	<tr bgcolor="#C5C5C5">
		<td width="20" align="center" class="header">ID</td>
		<td width="80" class="header">Created By</td>
		<td width="150" class="header">Topic</td>
		<td width="80" align="center" class="header">date</td>
		<td width="100" align="center" class="header">Action</td>
	</tr>
	<tr>
		<td colspan="5">&nbsp;</td>
	</tr>
</table>
</body>
</html>

und hier der Inhalt der cms_checkLogin.inc:
PHP:
<?php

session_start();

if( !session_is_registered( "user_id" )) {
	header("Location: main.php");
}
?>

Allerdings werde ich immer zu der main.php umgeleitet.
wenn ich in der login.php statt dem header("Location: news.php"), echo "test" einfuege, wird auch test ausgegeben, also die mySql Abfrage funktioniert!

Und es kommt auch keine Fehlermeldung...
 
hoeh?
nee, das is egal, du kannst des auch so schreiben:
PHP:
if(! session_is_registered( "user_id" ))
oder
if(!session_is_registered( "user_id" ))
oder
if(!(session_is_registered( "user_id" )))
oder
if(! (session_is_registered( "user_id" )))

kommt jedesmal aufs gleiche raus!
 
mit

//
session_register( "user_id" );
//

ist user_id == user_id ... ;) mhh.. oder? mhh

//
$_SESSION["user_id"] = "$user_ide";
//

so sollte es funktionieren.:-)
 
Zuletzt bearbeitet:
du hast den save path nicht angegeben...
aber davon mal abgesehen, muss der nicht eh vor dem starten der session gesetzt werden?!?
PHP:
<?php
session_save_path( "./save" ); //<---
session_start();

if( !session_is_registered( "user_id" )) {
    header("Location: main.php");
}
?>
 
is doch...
PHP:
<?php
session_start();
/* Ordner save im aktuellen Verzeichniss verwenden, der
existiert auch */
session_save_path( "./save" );
$connectionid = mysql_connect ("localhost", "x", "x"); 
// ....
 
ich meinte auch eher in der cms_checkLogin.inc
und probier mal aus das session save path vor dem starten der sessin zu verändern
 
hm,
also wenn ich session_save_path vor session_start setz, wird die Session schon mal in save gespeichert :)

Aber es geht immer noch nich.
die mySQL Abfrage funktioniert ohne Probleme, aber ich komm trotzdem nich auf die Testseite...
 
ich glaub zwar nicht, dass es daran liegt, aber probier mal aus was passiert, wenn du die cms_checkLogin.inc hierzu veränderst, denn ich finde $_SESSION und isset() schöner :)
PHP:
<?php
session_save_path( "./save" );
session_start();

if( !isset($_SESSION['user_id'])) {
    header("Location: main.php");
}
?>
 
Zurück