Bitte helfen wen es geht

Maikomania

Active member
23 August 2006
31
1
Was stimmt an diesem code nicht wo ist der hagen möchte das die daten mit den date in der datenbank verglichen werden und die session in der datenbank gespeichert wird
PHP:
<?php
require('main/db.php');
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($dbname,$db) or die(mysql_error());

if($login){
$daten=mysql_query("select * from kunden where kdnr='$user'");
if(mysql_num_rows($daten)>0){
$knummer=mysql_result($daten,0,"kdnr");
$upass=mysql_result($daten,0,"pwd");
}
if($user==""){
$update="<center>Bitte einen Benutzername eingeben.</center>";
}
else{
if($pwd==""){
$update="<center>Bitte ein Passwort eingeben.</center>";
else{
if($user!="$knummer"){
$update="<center>Benutzername wurde nicht gefunden.</center>";
}
else{
if($pwd!="$upass"){
$update="<center>Passwort falsch.</center>";
}
else{
if($upass==$pwd){
$ltime=time();
mt_srand((double)microtime()*1000000);
$randval = mt_rand();
$sessionid=md5($randval);

mysql_query("update kunden set session='$sessionid' where kdnr='$user'");
}

else{
header ("Location: tst/index.php?sessionid=$sessionid");
}}
?>
 
Zuletzt bearbeitet:
er hat dir doch schon geholfen ;-).

Es werden nicht alle Variablen gesetzt, nun schau in dein Script welche es sein könnten, ich denke er meint die variablen in manchen ifanweisungen ;-)
 
ok habe den code einbisschen geändert nun zeigt er mir eine fehlermeldun in line 13 t else aber habe schon nachgesehen habe nichts gefunden.
PHP:
<?php
require('main/db.php');
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($dbname,$db) or die(mysql_error());
$daten=mysql_query("select * from kunden where kdnr='$user'");
if(mysql_num_rows($daten)>0){
$uname=mysql_result($daten,0,"user");
$upass=mysql_result($daten,0,"pwd");
}
if((!$_REQUEST['user']=="$upass") And (!$_REQUEST['passwort']="$upass"))
{
echo"Bitte Kontrollieren Sie Ihre Zugangsdaten";
else {

if (($uname="$_REQUEST['user']") And ($passwort="$_REQUEST['passwort']")){
$randval = mt_rand();
$sessionid=md5($randval);
mysql_query("update kunden set session='$sessionid' where user='$_REQUEST['user']'");
header ("Location: kunden/index.php?sessionid=$sessionid");
}
}
}
?>
 
ok habe es nun anders gemacht jedoch kommt folgendes als meldung alles andere funzt

hier der code

PHP:
<?php
require('main/db.php');
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die(mysql_error());
mysql_select_db($dbname,$db) or die(mysql_error());
$daten=mysql_query("select * from kunden where kdnr='$_REQUEST[user]'");
if(mysql_num_rows($daten)>0){
$uname=mysql_result($daten,0,"kdnr");
$upass=mysql_result($daten,0,"pwd");
}
if((!$_REQUEST[user]=="$uname") And (!$_REQUEST[passwort]="$upass"))
{
echo"Bitte Kontrollieren Sie Ihre Zugangsdaten";}
else {

if (($uname=="$_REQUEST[user]") And ($upass=="$_REQUEST[passwort]")){
$randval = mt_rand();
$sessionid=md5($randval);
mysql_query("update kunden set session='$sessionid' where user='$_REQUEST[user]'");
header ("Location: kunden/index.php?sessionid=$sessionid");
}
}

?>
fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/freemoo.de/htdocs/main/db.php:1) in /var/www/virtual/freemoo.de/htdocs/login.php on line 19
 
fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/virtual/freemoo.de/htdocs/main/db.php:1) in /var/www/virtual/freemoo.de/htdocs/login.php on line 19
In deiner include-Datei, Zeile 2
PHP:
require('main/db.php');
wird anscheinend eine Ausgabe gestartet.
Aus diesem Grund darfst du nun in Zeile 19 nicht mehr mit header() arbeiten.

Noch was, Zeile 10:
PHP:
if((!$_REQUEST[user]=="$uname") And (!$_REQUEST[passwort]="$upass"))
Schau mal scharf hin, vor allem die die Vergleichsbedingung(en). Was fällt dir auf...?

Und eins kann ich mir einfach nicht verkneifen, auch wenn gleich rot-popelt: Mann, was für ein mieses Script!
 
Irgendwas wird in der db.php ausgegeben. Was wissen wir nicht, da wir ja den Inhalt der db.php nicht kennen. Falls du ihn hier mal reinstellen willst, bitte vorher die tatsächlichen Zugangsdaten ausXXXen (also durch xxx oder sowas ersetzen).

Aus eigener Erfahrung kann sowas sehr nervig zu finden sein. Es reicht z.B. ein Zeichen vor dem <?php in der db.php. Ich hatte mal den Fall, in dem ein Windows-Editor dort irgendein "unsichtbares" Zeichen eingefügt hat (an den Anfang der php-Datei, die per include eingebunden wurde). Das Zeichen wurde in den meisten Editoren nicht dargestellt, aber im Browser ausgegeben (dort war aber auch nix zu sehen). Es reichte aus, damit keine Header mehr geschickt werden konnten.