Fahrtenbuch genial!
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 31.07.2002, 11:47   #1
TP-Specialist
 
Benutzerbild von Flixxtoras
 
Registriert seit: May 2001
Ort: Leipzig
Flixxtoras macht alles soweit korrekt
Question

Problem bei Session LogIn System mit SQL Abfrage


Hallo TP Freunde,

ich habe mal wieder ein kleines Problemchen.
Dann mal los ich habe mir ein LogIn System mit Sessions gebaut. Das geht auch alles.

Ein User gibt Benutzername und Passwort ein und auf der nächsten Seite wird in einer Datenbank nachgeschaut ob die Daten stimmen, falls ja werden die Variablen $datenrichtig und $user_eingeloggt auf true gesetzt, falls nein auf false.

Soweit klappt alles allerdings muss ich die Abfrage ob der Benutzername und das Passwort stimmen noch verändern. Hier komme ich nicht mehr weiter.

Kurz zur Erklärung ich ich es mir vorstelle:

Der User gibt auf der LogIn Seite seine Daten ein und drückt auf Submit nun wird die Seite checkuser.php aufgerufen und schaut zu erst nacht ob es den User und das PW in der DB1 gibt sollt das der Fall sein werden die Variablen $datenrichtig und $user_eingeloggt auf true gesetzt.

Ist es aber nicht der Fall möchte ich gerne das er in eine andere Datenbank (DB2) schaut ob es dort den eingegebenen Benutzernamen und das Passwort gibt. Wenn ja soll er den Benutzernamen und das Passwort in DB 1 speichern und $datenrichtig und $user_eingeloggt auf true setzen.

Wenn er in der DB2 nichts findet soll er $datenrichtig und $user_eingeloggt auf false setzen.

Im Anhang findet ihr noch eine kleine Skizze von mir. Ich hoffe ihr könnt mir weiterhelfen. Hoffentlich Toxical

Ach ja noch ne kleine andere Frage zu einer SQL Anweisung:

PHP-Code:
SELECT FROM table1 WHERE id '($username)-(140145)' 
Ich möchte gerne das er mir die id ausrechnet $username ist auch eine Zahl zum Beispiel 140334.

So soll es ausgerechnet werden id=140334($username) minus 140145.
Angehängte Grafiken
Dateityp: gif sql_session_problem.gif (7,2 KB, 75x aufgerufen)
Flixxtoras ist offline   Mit Zitat antworten


Alt 31.07.2002, 12:06   #2
TP-Veteran
 
Benutzerbild von steff
 
Registriert seit: Mar 2001
Ort: wein4tel (ö)
steff ist auf einem guten Weg
hm, wenn ich das richtig verstanden habe, könnte es so funzen:

setze die zweite anfrage ($query2) in eine else-anweisung nach if(mysql_num_rows($anfrage1) > 0){...} -> d.h. wenn die anzahl der datensätze von anfrage1 kleiner/gleich null ist, fährt er mit anfrage2 fort.

und dann bei anfrage zwei, setzt du wieder nach der if-anweisung eine else-anweisung mit $datenrichtung = false; und $user_eingeloggt = false; -> d.h. ist auch anfrage2 negativ, setzt er die beiden variablen auf false

sollte die anfrage2 zutreffen, musst du bei der if-anweisung ein mysql_query("INSERT INTO table (Kunde, Kennwort) VALUES ('$username','$passwort')"); -> somit wird der username und das passwort in die tabelle 'table' eingetragen

so müsste es doch klappen.
steff ist offline   Mit Zitat antworten
Alt 31.07.2002, 12:14   #3
TP-Specialist
 
Benutzerbild von Flixxtoras
 
Registriert seit: May 2001
Ort: Leipzig
Flixxtoras macht alles soweit korrekt

..


Komisch so hatte ich es eigentlich aber er hatte immer Fehlermeldungen. Kannst du vielleicht ansatzweise deinen Code posten?
Flixxtoras ist offline   Mit Zitat antworten
Alt 31.07.2002, 12:54   #4
TP-Veteran
 
Benutzerbild von steff
 
Registriert seit: Mar 2001
Ort: wein4tel (ö)
steff ist auf einem guten Weg
habs nicht ausprobiert, aber so müsste es klappen:

PHP-Code:
$query1 "SELECT Kunde, Kennwort FROM table WHERE Kunde = '$username' AND Kennwort = '$passwort'";
$anfrage1 mysql_query($query1$connect_id);
if (
$anfrage1) {    // Falls $anfrage1 erfolgreich war
    
$datenrichtig true;
    
$user_eingeloggt true;
}
else {
    
$id_suche $username 140145;   // lasse immer in eigenen variablen rechnen = macke von mir ;)
    
$query2 "SELECT id,pin FROM table1 WHERE id = '$id_suche' AND pin = '$passwort'";
    
$anfrage2 mysql_query($query2 $connect_id);
    if (
$anfrage2) {
        
$insert mysql_query("INSERT INTO table (Kunde, Kennwort) VALUES ('$username', '$passwort')"$connect_id);
        
$datenrichtig true;
        
$user_eingeloggt true;
    }
    else {
        
$datenrichtig false;
        
$user_eingeloggt false;
    }

ich hab gesehen, dass du bei $query1 und $query2 $table und $table1 geschrieben hast - fehler??

ausserdem hast du bei den anfragen keine verbindungs-id angegeben?!
steff ist offline   Mit Zitat antworten
Alt 31.07.2002, 12:57   #5
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
PHP-Code:

$datenrichtig
=false;
$user_eingeloggt =false;
$result mssql_query("select username,pw from tabelle where username=$username AND pw=$pw",$con1);
$rsmysql_fetch_row($result ) ;

if(
$rs[0]!=$username || $rs[1]!=$pw)
{
$result mssql_query("select username,pw from tabelle2   where  username=$username AND pw=$pw",$con2);
$rsmysql_fetch_row($result ) ;
}

if(
$rs[0]=$username && $rs[1]=$pw)
{
$datenrichtig=true;
$user_eingeloggt =true;
}
header(location:zurückzumstart); 
net getestet, aber so kann ich mir das vorstellen, dass es gehen sollte.

zum select:
ich bin mir nicht sicher, ob deine berechnung im select gut aufgehoben sind (typkonvertierung...). zieh sie doch raus:

$username= $username - 140145;
SELECT * FROM table1 WHERE id = '$username'


lf

p.s. gerad gesehen, dass steff gepostet hat, aber trotzdem...
und das mit den connections könnte wirklich ein problem sein.
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 31.07.2002, 13:07   #6
TP-Specialist
 
Benutzerbild von Flixxtoras
 
Registriert seit: May 2001
Ort: Leipzig
Flixxtoras macht alles soweit korrekt

Thx


Danke euch beiden erstmal.
Werde es gleich nach der Mittagspause probieren.

Wegender Connection ID ich require die DB Verbindung.

Inhalt der Datei:


PHP-Code:
<?php
  $db
="tablelalal";
  
$dbuser="flixxtoras";
  
$dbpasswd="******";
  
$host="localhost";

  
$mysqlid mysql_connect($host,$dbuser,$dbpasswd);
  
$exist=mysql_select_db($db$mysqlid);
?>
Geht doch auch so oder?
Flixxtoras ist offline   Mit Zitat antworten
Alt 31.07.2002, 13:15   #7
TP-Veteran
 
Benutzerbild von steff
 
Registriert seit: Mar 2001
Ort: wein4tel (ö)
steff ist auf einem guten Weg
damit stellst du die verbindung zur datenbank/zum server her.

setze die variable $mysqlid nach dem $query1 und $query2 bei deinen anfragen.
steff ist offline   Mit Zitat antworten
Alt 31.07.2002, 15:26   #8
TP-Specialist
 
Benutzerbild von Flixxtoras
 
Registriert seit: May 2001
Ort: Leipzig
Flixxtoras macht alles soweit korrekt

..


Ich steh auf den Schlauch hier mein Script:
Er meckert immer in der Zeile hier: "if (mysql_num_rows ($anfrage2) > 0) {"
Achja

PHP-Code:
<?php
require("db1.icl.php");
require(
"db2.icl.php");
$table "anbieter";
$table1 "adressen";
session_start (); // Session starten.
if ((session_is_registered ("user_eingeloggt")) AND ($user_eingeloggt)) {
echo 
"Du bist schon eingeloggt";
} else {
session_start (); // Starte eine Session.
$query1 "SELECT Kunde, Kennwort FROM $table WHERE Kunde = '$username' AND Kennwort = '$passwort'";
$anfrage1 mysql_query($query1$mysqlid);
if (
mysql_num_rows ($anfrage1) > 0) {
    
$datenrichtig true;
    
$user_eingeloggt true;
}
else {
    
$kunde $username 140145;
    
$query2 "SELECT id,pin FROM table1 WHERE id = '$kunde' AND pin = '$passwort'";
    
$anfrage2 mysql_query($query2$mysqlid);
if (
mysql_num_rows ($anfrage2) > 0) {
        
$insert mysql_query("INSERT INTO table (Kunde, Kennwort) VALUES ('$username', '$passwort')"$mysqlid);
        
$datenrichtig true;
        
$user_eingeloggt true;
    }
    else {
        
$datenrichtig false;
        
$user_eingeloggt false;
    }
}
// Variable $user_eingeloggt in der Session registrieren.
session_register ("user_eingeloggt");
// Name der Session ID
$sid session_id();
}
?>
Die Datein db1.icl.php und db2.icl.php sehen so aus:


PHP-Code:
<?php
$host
="localhost";
$dbuser="flixxtoras";
$dbpass="geheim";
$db="tabellenname";

$mysqlid = @mysql_connect($host$dbuser$dbpass) or die ("Fehler beim Datenbankzugriff");
mysql_select_db($db$mysqlid);   
?>

Geändert von Flixxtoras (31.07.2002 um 15:42 Uhr).
Flixxtoras ist offline   Mit Zitat antworten
Alt 31.07.2002, 15:37   #9
TP-Veteran
 
Benutzerbild von steff
 
Registriert seit: Mar 2001
Ort: wein4tel (ö)
steff ist auf einem guten Weg
Question

was wird denn gemeckert?
steff ist offline   Mit Zitat antworten
Alt 31.07.2002, 15:40   #10
TP-Specialist
 
Benutzerbild von Flixxtoras
 
Registriert seit: May 2001
Ort: Leipzig
Flixxtoras macht alles soweit korrekt

..


Ist das Script sonst ok und auch die require Datein?

Warning: Supplied argument is not a valid MySQL result resource in /test/main.php on line 21
Flixxtoras ist offline   Mit Zitat antworten
Alt 31.07.2002, 15:46   #11
TP-Veteran
 
Benutzerbild von steff
 
Registriert seit: Mar 2001
Ort: wein4tel (ö)
steff ist auf einem guten Weg

Re: ..


Zitat:
Original geschrieben von Flixxtoras

Die Datein db1.icl.php und db2.icl.php sehen so aus:


PHP-Code:
<?php
$host
="localhost";
$dbuser="flixxtoras";
$dbpass="geheim";
$db="tabellenname";

$mysqlid = @mysql_connect($host$dbuser$dbpass) or die ("Fehler beim Datenbankzugriff");
mysql_select_db($db$mysqlid);   
?>
$db="tabellenname"; -> hast du das nur so geschrieben, oder steht da tatsächlich der name einer tabelle und nicht der der datenbank?
steff ist offline   Mit Zitat antworten
Alt 31.07.2002, 15:49   #12
TP-Specialist
 
Benutzerbild von Flixxtoras
 
Registriert seit: May 2001
Ort: Leipzig
Flixxtoras macht alles soweit korrekt

..


Mist ich meine doch Datenbankname das ist aber alles richtig.
Ich schau noch mal und melde mich wieder.
Flixxtoras ist offline   Mit Zitat antworten
Alt 31.07.2002, 15:49   #13
TP-Veteran
 
Benutzerbild von steff
 
Registriert seit: Mar 2001
Ort: wein4tel (ö)
steff ist auf einem guten Weg
nochwas:

bei anfrage1 heisst deine datenbanktabelle '$table' und beim insert heisst sie 'table'.

was nun??? (tippe mal auf table und die anfrage1 ist wahrscheinlich line 21 )

ps: ich gehe davon aus, dass du das script 1:1 reinkopiert hast, oder?

muss mich jetzt leider vertschüssen, aber viele andere augen werden dir weiterhelfen

cu
steff
steff ist offline   Mit Zitat antworten
Alt 31.07.2002, 15:52   #14
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
meinm verständnis nach, schreibst du nur in die datenbank, die in der db2.inc.php connected wird, da du keine zwei verbindungen zu mysql aufmachst.

$exist=mysql_select_db($db, $mysqlid);

schreib das in das if deiner jeweiligen datenbankabfrage.

etwa so:



PHP-Code:
<?php
require("db.icl.php");


$table "anbieter";
$table1 "adressen";
session_start (); // Session starten.
if ((session_is_registered ("user_eingeloggt")) AND ($user_eingeloggt)) 
{
echo 
"Du bist schon eingeloggt";

else
{
session_start (); // Starte eine Session.
mysql_select_db($db1$mysqlid);   //db1    
$query1 "SELECT Kunde, Kennwort FROM $table WHERE Kunde = '$username' AND Kennwort = '$passwort'";

$anfrage1 mysql_query($query1$mysqlid);

if (
mysql_num_rows ($anfrage1) > 0) {
    
$datenrichtig true;
    
$user_eingeloggt true;
}

else 
{
    
$kunde $username 140145;
mysql_select_db($db2$mysqlid);   //db2    
$query2 "SELECT id,pin FROM table1 WHERE id = '$kunde' AND pin = '$passwort'";
$anfrage2 mysql_query($query2$mysqlid);

if (
mysql_num_rows ($anfrage2) > 0)
{
mysql_select_db($db1$mysqlid);   //db1    
        
$insert mysql_query("INSERT INTO table (Kunde, Kennwort) VALUES ('$username', '$passwort')"$mysqlid);
        
$datenrichtig true;
        
$user_eingeloggt true;
    }
    else {
        
$d
atenrichtig 
false;
        
$user_eingeloggt false;
    }
}
// Variable $user_eingeloggt in der Session registrieren.
session_register ("user_eingeloggt");
// Name der Session ID
$sid session_id();
}
?>
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 31.07.2002, 15:54   #15
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
und das db.inc.php

<?php
$host="localhost";
$dbuser="flixxtoras";
$dbpass="geheim";
$db1="db1";
$db2="db2";

$mysqlid = @mysql_connect($host, $dbuser, $dbpass) or die ("Fehler beim Datenbankzugriff");

?>
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Problem bei Session LogIn System mit SQL Abfrage Problem bei Session LogIn System mit SQL Abfrage
« IDs in Cookie speichern => Warenkorb | text-datei »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu