login nach tutorial - Problem

W

wetge

Guest
Hallo,

Ich habe das sessionbasierte login tutorial dieser Seite an mein Projekt angepasst.
Bekomme es jedoch einfach nicht hin!!
Und nun bekomme ich nach einigen kleinen Veränderungen nicht einmal mehr meine Seite angezeigt, was ja bedeutet, dass es irgendwo einen Programmierfehler gibt.
Welchen ich leider nicht finde!
sad.gif


hier mal die relevanten Codes:

ShowLogin.php
CODE
<?php


session_start();

require_once ('licence/Database2.php');
require_once ('licence/Kunde.php');
require_once ('licence/Bestellung.php');
require_once ('licence/Lizenz.php');
require_once ('licence/Aktivierung.php');
require_once ('licence/Produkt.php');
include_once ('licence/sessionhelpers.inc.php');


function ShowLogin ($lang, $pageId, $IDRechnNr, $password)
{
// schaue, ob IDKunde und password gegeben sind und lösche Leerzeichen vor bzw. nach dem string
if (isset ( $_POST["login"] ) {

// Variablen umbennenen
$password = $_POST["password"];

// IDKunde aus Bestellung holen
$IDKunde = bGetIDKunde($_POST["IDRechnNr"]);

$userid = check_user( $IDKunde, $password );

if ( $userid ) {
login($userid);
}
else {
echo '<p>Ihr Passwort ist nicht korrekt!</p>';
}
}

if ( !loggend_in() ) {
include ("licence/login.inc");
}

else { // Passwort korrekt

// IDKunde aus Bestellung holen
$IDKunde = bGetIDKunde($_POST["IDRechnNr"]);

include ("licence/activation.inc");

}

}

?>





sessionhelpers.inc.php
ist eigentlich identisch, mit dem Unterschied, dass ich die Felder mit den Namen aus meiner db angepasst habe und die db über db2Open() am Anfang öffne.


CODE
<?php


/**
* @param string $name
* @param string $pass
* @return boolean
*/
$link = db2Open();

function check_user ( $name, $pass ) {
// magic quotes anpassen
if ( get_magic_quotes_gpc() ) {
$name = stripslashes($name);
$pass = stripslashes($pass);
}
// escapen von \x00, \n, \r, \, ', " und \x1a
$name = mysql_real_escape_string($name);
// escapen von % und _
$name = str_replace('%', '\%', $name);
$name = str_replace('_', '\_', $name);

$sql = 'SELECT ID FROM Kunde WHERE IDKunde = \'' . $name . '\' AND password = \'' . $pass . '\'';
if ( !$result = mysql_query($sql) ) {
exit(mysql_error());
}
if ( mysql_num_rows($result) == 1 ) {
$user = mysql_fetch_assoc($result);
return ( $user['ID'] );
} else {
return ( false );
}
}


/**
* @param int $userid
* @return void
*/
function login ( $userid ) {
$sql = 'UPDATE Kunde SET UserSession = \'' . session_id() . '\' WHERE ID = ' . ((int)$userid);
if ( !mysql_query($sql) ) {
exit(mysql_error());
}
}


/**
* @return boolean
*/
function logged_in () {
$sql = 'SELECT ID FROM Kunde WHERE UserSession = \'' . session_id() . '\'';
if ( !$result = mysql_query($sql) ) {
exit(mysql_error());
}
return (mysql_num_rows($result) == 1);
}


/**
* @return void
*/
function logout () {
$sql = 'UPDATE Kunde SET UserSession = NULL WHERE UserSession = \'' . session_id() . '\'';
if ( mysql_query($sql) ) {
exit(mysql_error());
}
}


db2Close();
?>



activation.inc

CODE
<?php

include_once('sessionhelpers.inc.php');

echo 'Sie sind ';
if ( !logged_in() ) {
echo 'nicht ';
}
echo 'eingeloggt.<p />';

if ( !logged_in() )
echo '<p><a href="login.php">Anmelden</a></p>';
}

else { ?>

<div align="left">

<h2>Sie haben sich erfolgreich angemeldet!</h2><br />



<b>Geben Sie bitte nun Ihren Aktivierungscode ein</b><br /><br />



<form method="post" action="licence/licencegen.php">

<input type="text" name="actkey" size="50" >
<br /><br />
<input type="submit" name="gen" value="Code generieren">

</form>

<a href="licence/logout.php">Logout</a>

</div>

<?php
}
?>



Wäre wirklich seeeeeeeeeeehr nett, wenn mir da jmd weiterhelfen könnte!
 
hi,

dein ganzen code durchzugehen und hier ne test umgebung aufzubauen wäre ein grosser aufwand. gibt es nicht mal eine fehlermeldung von php?

ich würde dir vorschlagen mal debugin infos in deinem code einzubauen.

pack einfach mal bei allen anfragen einen echo "xy..." und schau dir welchen echo er nicht ausspuckt. viel mehr aufwand müsste man sich nicht antun.

wenn du dann sagst ab wo er nichts mehr rauswirft und welche fehlermeldung er ausgibt (versuch auch mal try und catch einzubauen) kann man dir hier sicher viel besser weiterhelfen.

grüsse
 
ich benutze grad PHPEdit.
Der einzige Fehler, den er mir meldet ist, dass er sich nicht in die db connecten kann
und bezieht sich auf diese Zeile:

if ( !( $dbLink = mysql_connect($s,$u,$p) ) )

(wobei dort der Fehler nicht liegt .. die Datapase2.php funktioniert einwandfrei und wird von mir daher auch nich mehr angerührt. ^^)

Das is wohl ein Problem mit PHPEdit - bekomme nämlich auch die db connection in den Einstellungen irgendwie nich hin.
Es gibt also keine offenen Klammern oder vergessene Semikolone.

Nun öffnet er mir ja nich mal mehr die Seite.

Kann das an der Reihenfolge der Befehle liegen?
Also dass die Syntax eigentlich korrekt ist - die Programmierung jedoch falsch.

--

EDIT

die sessionhelpers.inc braucht man sich ja nich mal deutlich anzugucken.
Sie enspricht, bis auf die Name und dem connect auf die db, eins zu eins dem Original.

EDIT2
hab herausgefunden, dass es an dem Befehl db2Close(); ganz unten bei sessionhelbers, lag dass die Seite nich angezeigt werden konnte.
Jetzt kann ich mit den einzelnen echo Befehlen arbeiten. ^^
 
alles wieder weg ... hatte nen Tippfehler ..

SORRY

EDIT
habe jetzt nen konkreten Fehler. Diese Funktion liefert mir den Fehler:

CODE function logged_in () {
$sql = 'SELECT ID FROM Kunde WHERE UserSession = \'' . session_id() . '\'';
if ( !$result = mysql_query($sql) ) {
exit ('logged_in fehlerhaft');
}
return (mysql_num_rows($result) == 1);
}


Ich habe das Feld UserSession jetzt mit NULL probiert oder 0.
Hat beides nicht geklappt.
 
probier es mal so:

CODE
function logged_in () {
$sql = 'SELECT ID FROM Kunde WHERE UserSession = \'' . session_id() . '\'';
if ( !$result = mysql_query($sql) ) {
exit ('logged_in fehlerhaft');
}
if( mysql_num_rows($result) > 0)
return 1;
}

 
der query klappt dennoch nicht.
er bringt mir weiterhin den Fehler: 'logged_in fehlerhaft'

Ein Auszug aus Tabelle Kunde sieht so aus:

ID IDKunde Name Vorname password email UserSession
1 1234 bla blub 5678 bla@blub.de


 
Hallo wetge

probier mal statt
QUOTE

CODE if ( !$result = mysql_query($sql) )



das:

CODE if ( !($result = mysql_query($sql) ))

oder

CODE
$result = mysql_query($sql)&#59;
if (!$result)...



yam
 
Hi,

habe ich auch schon probiert. :-/

Ich versuche es jetzt über die $_SESSION Variablen hinzubekommen.

Trotzdem THX
 
Zurück
Oben