php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.07.2011, 07:49  
Neuer Benutzer
 
Registriert seit: 16.06.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
K.Tacke befindet sich auf einem aufstrebenden Ast
Standard Fehlermeldung - PHP Login Skript

Guten Morgen,

ich habe folgendes problem. habe ein kleines Login Skript geschrieben.
Jetzt habe ich das agnze Skript auf meinen Server hochgeladen und bekomme folgende Fehlermeldung beim ausführen:

Notice: Undefined index: name in /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/login.php on line 47

Notice: Undefined index: pwd in /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/login.php on line 49

Warning: Cannot modify header information - headers already sent by (output started at /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/constant.php:11) in /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/login.php on line 131


login.php
PHP-Code:
<?php
// Session starten
session_start ();

// Error_reporting(E_ALL) alle Fehler werden angezeigt
error_reporting(E_ALL);

//in der config.php steht der include zu den Datenbank Constanten
include "inc/config.php";


// Datenbankverbindung aufbauen
$connectionid = @mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS) OR die(mysql_error());

mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

//Den Benutzerraussuchen dessen Nickname mit dem Passwort
//übereinstimmt. Verzwickt wegen Md5 verschlüsselung
$sql "SELECT ".
    
"Id, Nickname, Nachname, Vorname ".
  
"FROM ".
    
"benutzerdaten ".
  
"WHERE ".
    
"(Nickname like '".$_REQUEST["name"]."') AND ".
    
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";

//Ergebnis vom query in $result schreiben
$result mysql_query ($sql);


//wenn es mehr als 0 rows gibt dann startet er 
if (mysql_num_rows ($result) > 0)
{
  
// Benutzerdaten in ein Array auslesen.
  
$row mysql_fetch_array ($result);

  
// Sessionvariablen erstellen und registrieren
  
$_SESSION["user_id"] = $row["Id"];
  
$_SESSION["user_nickname"] = $row["Nickname"];
  
$_SESSION["user_nachname"] = $row["Nachname"];
  
$_SESSION["user_vorname"] = $row["Vorname"];

  
//hier frage ich nach den Rechten an der Stelle wo
  //Nickname aus der Datenbank und $_SESSION['user_nickname']
  //uebereinstimmen
  
$sql="SELECT
         Rechte
        FROM
         nutzerrechte
        WHERE
         Nickname = '"
.$_SESSION['user_nickname']."';";

  
$result mysql_query($sql) OR die(mysql_error());

//hier speichern wir in $row die ich sags mal so die "Reihen der Datenbank"
  
$row mysql_fetch_assoc($result);

    
//hier schaut er ob in $row['Rechte'] auch Adminsteht
    
if($row['Rechte'] == "Admin")
    {
    
//wenn ja dann bitte schön ab ins adminmenu
    
header ("Location: adminmenu.php");
    exit();
    }
 } else {
  
header ("Location: formular.php?fehler=1");
  exit();
}
    
//wenn nicht Admin drin steht dann ab ins usermenu.php
    
header ("Location: zertifikat.php");
    exit();
?>
formular.php

PHP-Code:
<?php session_start (); ?>
<html>
<head>
  <title>Login</title>
  <link rel="stylesheet" type="text/css" href="/reset.css" />

<style type="text/css">

body{font-family:Arial, Helvetica, sans-serif; font-size:12px;}

div{float:left;margin:15px;}

h1{
    margin:20px;font-size:20px;font-weight:bold;
}

#formular2{width:132px;margin:5px;padding:0; background: #FF9999; -moz-border-radius:6px;}

#formular2 fieldset{margin:0;padding:15px;border:0;}

#formular2 legend{display:none;}

#formular2 label{display:block; color:#fff;}

#formular2 input{font-family:Arial, Helvetica, sans-serif; font-size:12px; color:#369;}

#formular2 input.text{width:100px; -moz-border-radius:6px; margin:2px 0 5px 0; padding:2px; border:1px solid #369; color:#369;}

#formular2 input.submit{cursor:pointer; float:right; -moz-border-radius:6px; border:1px solid #369; background:#fff; height:21px; width:70px;}

ul.fehler{margin:5px;padding:5px;border-top:1px solid #d65a5c;border-bottom:1px solid #d65a5c;background:#fdd;color:#c00;}
ul.fehler li{border:0;padding:0;}
ul.erfolg{margin:5px;padding:5px;border-top:1px solid #5bb55b;border-bottom:1px solid #5bb55b;background:#deffde;color:#090;}

</style>
</head>

<body>
<?php
//$_REQUEST bitte in php.net nachlesen würde zu lange dauern
if (isset ($_REQUEST["0"]))
{
  echo 
"1";
}
?>

<div>
<form action="login.php" method="post" id="formular2">
<fieldset>
        <legend>Bitte einloggen</legend>
        <label for="name">Name: </label>
        <input type="text" name="name" id="name" class="text" />

        <label for="password">Passwort:</label>
        <input type="password" name="pwd" id="passwort2" class="text" />
        <input type="submit" value="Login" class="submit" />
    </fieldset>
</form>
</div>
</form>
</body>
</html>

Kann sich den Code jemand anschauen, ich find einfach den Fehler nicht. Auf meinen Lokalen Webserver funktioniert das Skript ohne Problem

Viele Grüße
K.Tacke ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.07.2011, 08:22  
Erfahrener Benutzer
 
Registriert seit: 25.01.2009
Beiträge: 1.027
PHP-Kenntnisse:
Fortgeschritten
Capfly befindet sich auf einem aufstrebenden Ast
Capfly eine Nachricht über ICQ schicken Capfly eine Nachricht über MSN schicken
Standard

was steht in der config.php?
__________________
MfG
~Capfly
Jetzt NEU! Cpix & Wbits Katahlan.de - Das Browsergame
Capfly ist offline   Mit Zitat antworten
Alt 20.07.2011, 08:25  
Neuer Benutzer
 
Registriert seit: 16.06.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
K.Tacke befindet sich auf einem aufstrebenden Ast
Standard

da habe ich folgendes drin stehen:

PHP-Code:
<?php
include "constant.php";
?>
und in der constant.php:
PHP-Code:
<?php
    define
('MYSQL_HOST''rdbms.strato.de');
    
define('MYSQL_USER''U....');
    
define('MYSQL_PASS''....');
    
define('MYSQL_DATABASE''DB.....');
?>
K.Tacke ist offline   Mit Zitat antworten
Alt 20.07.2011, 09:29  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Wo sind Zeile 47 und Zeile 49 von /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/login.php?
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden
mimomamu ist offline   Mit Zitat antworten
Alt 20.07.2011, 09:34  
Neuer Benutzer
 
Registriert seit: 16.06.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
K.Tacke befindet sich auf einem aufstrebenden Ast
Standard

aus der login.php
PHP-Code:
.....
$sql="SELECT
         Rechte [b]//Zeile 47[/b]
        FROM
         nutzerrechte [b]//Zeile 49[/b]
        WHERE
         Nickname = '"
.$_SESSION['user_nickname']."';";

  
$result mysql_query($sql) OR die(mysql_error());.... 
das ist das was ich nicht ganz verstehe warum der Fehler erscheint.
K.Tacke ist offline   Mit Zitat antworten
Alt 20.07.2011, 09:41  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Zitat:
Zitat von K.Tacke Beitrag anzeigen
PHP-Code:
//Den Benutzerraussuchen dessen Nickname mit dem Passwort
//übereinstimmt. Verzwickt wegen Md5 verschlüsselung
$sql "SELECT ".
    
"Id, Nickname, Nachname, Vorname ".
  
"FROM ".
    
"benutzerdaten ".
  
"WHERE ".
    
"(Nickname like '".$_REQUEST["name"]."') AND ".
    
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')"
1. MD5 ist keine Verschlüsselung, sondern eine Hash-Verfahren!
2. Was soll diese komische SQL-Syntax mit unzähligen doppelten Anführungszeichen?
3. Keine Sicherung gegen MySQL-Injections
4. Keine Prüfung, ob die Variable $_REQUEST['name'] und $_REQUEST['pwd'] überhaupt gesendet wurden (daher rührt auch der Fehler)
5. Wieso vergleichst du den Nickname mit "LIKE" und das Kennwort mit "="?
6. Das Thema hat nichts im Fortgeschrittenen-Bereich verloren
Trainmaster ist offline   Mit Zitat antworten
Alt 20.07.2011, 09:46  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

und wieso einmal $_SESSION['user_nickname'] und dann wieder $_REQUEST["name"] ??

Zitat:
<?php
//$_REQUEST bitte in php.net nachlesen würde zu lange dauern
if (isset ($_REQUEST["0"]))
{
echo
"1";
}
?>
hast Du denn den Code selber geschrieben ??
Oder war das jemand anders und hier willst ihn reparieren lassen ???
__________________
Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.
Koala ist offline   Mit Zitat antworten
Alt 20.07.2011, 09:52  
Erfahrener Benutzer
 
Benutzerbild von splasch
 
Registriert seit: 05.01.2009
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
splasch kann nur auf Besserung hoffen
Standard

Sehe ich auch so das ist ein typischer Anfänger Code. Nur weil man ein paar Zeilen Schreiben kann ist man noch lang nicht Fortgeschritten.

Die Fehlermeldungen sind eindeutig und selbst erklärend.
Zitat:
Warning: Cannot modify header information - headers already sent by (output started at /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/constant.php:11) in /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/login.php on line 131
Hier ist bereits davor eine ausgabe erfolgt. Dazu reicht auch schon ein Leerzeichen aus. Vorige daten auf ausgabe prüfen. Leerzeichen und dann <? fürt genauso zu einer ausgabe. In deinen Fall wird die erste Fehlermeldung die Ausgabe sein die den Fehler verusacht.

Nun dann kommen wir zur ersten Fehlermeldung den die 2 Fehlermeldung verursacht.
Zitat:
Notice: Undefined index: name in /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/login.php on line 47

Notice: Undefined index: pwd in /mnt/webc/52/24/5512224/htdocs/kunden/login_neu/login.php on line 49
Hier sind alle Fehlermeldungs ausgaben eingeschaltet. Was im Server betrieb generell schlecht ist da es lücken für einen Hack Angriff aufzeigt. Nun zum Fehler selbst der besagt das in dem Array keinen Schlüsselnamen mit dem Wort name gibt. Das selbe für das Wort pwd

Dieser zustand tritt dann auf wenn du sachen abfragst die es noch überhaupt nicht gibt. In deinem Fall bei deinen Formular das das erste mal aufgerufen wird und daher auch noch keine Werte sendet. (Weil ja noch nix eingeben wurde)

Wie kann man das verhindern. Wie mein vorredner schon richtig gesagt hat indem man prüft ob die Werte überhaupt vorhanden sind.

Dazu gibt es den php Befehl isset();

Zitat:
// Datenbankverbindung aufbauen
$connectionid = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error
());

mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
Der Teil hat in einer Login.php datei nix zu suchen. (Unötige redunanz)

Mfg Splasch

Geändert von splasch (20.07.2011 um 09:58 Uhr).
splasch ist offline   Mit Zitat antworten
Alt 20.07.2011, 09:58  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Zitat:
Zitat von K.Tacke Beitrag anzeigen
PHP-Code:
//übereinstimmt. Verzwickt wegen Md5 verschlüsselung
...
//hier speichern wir in $row die ich sags mal so die "Reihen der Datenbank" 
Die Kommentare finde ich irgendwie lustig
Trainmaster ist offline   Mit Zitat antworten
Alt 20.07.2011, 10:05  
Erfahrener Benutzer
 
Benutzerbild von splasch
 
Registriert seit: 05.01.2009
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
splasch kann nur auf Besserung hoffen
Standard

Hier gehts dann weiter:
Zitat:
//Den Benutzerraussuchen dessen Nickname mit dem Passwort
//übereinstimmt. Verzwickt wegen Md5 verschlüsselung
$sql = "SELECT ".
"Id, Nickname, Nachname, Vorname ".
"FROM ".
"benutzerdaten ".
"WHERE ".
"(Nickname like '".$_REQUEST["name"]."') AND ".
"(Kennwort = '".md5 ($_REQUEST["pwd"])."')";

//Ergebnis vom query in $result schreiben
$result = mysql_query ($sql);


//wenn es mehr als 0 rows gibt dann startet er
if (mysql_num_rows ($result) > 0)
{
Gleich mehre sachen die mir hier aufallen.

.) Warum $_REQUEST? sendet dein Formular auch GET Werte?
.) Md5 ist ein Hash keine Verschlüsselung besser du verwendest sha 256
.) SQL Syntax unötig schwer zu lesen durch unötige " Zeichen
.) like ist nicht gleich =
(entuell sucht du ja ob irgendwer drin sein könnte dem geb ich dann Zugang. A ,Andi, Andrew, Anna, unsw.
Der Benutzer braucht nur a% zu schicken)
.) Prüfung ob ein Datensatz vorhanden ist unzureichend. Da reicht ein Union Select und man ist schon drin ohne jemals ein Password eingeben zu haben. Das ist eine Noob prüfung. Die man in vielen Anfänger Tutorials liest.

http://sql.1keydata.com/de/sql-like.php
http://www.sql-tutorial.net/SQL-LIKE.asp

Mein Tip:

Setzt dich noch mal ran und überarbeite das ganze Script noch mal.
(Sql injection ist auch möglich wie bereits erwähnt). Einen Fortgeschrittenen sollte sowas nicht mehr passieren!

Mfg Splasch

Geändert von splasch (20.07.2011 um 10:24 Uhr).
splasch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Facebook Login und eigener Login Paralell blackcrow PHP-Fortgeschrittene 17 29.05.2011 21:03
[Erledigt] Weiterleitung nach Login Michelangelo PHP Einsteiger 3 05.01.2011 13:46
Login script zeigt immer formular an auch wenn eingeloggt sein sollte salix PHP Tipps 2010 2 28.03.2010 22:21
perl skript aus php skript aufrufen axmuellser PHP Tipps 2009 1 16.04.2009 17:59
Skript auf einem anderen Server! aha_01 PHP Tipps 2008 3 05.12.2007 09:02
Fehlermeldung bei Login winki PHP Tipps 2006 4 04.09.2006 19:22
.htpasswd (im geschützten Ordner!) per skript ändern! Funky_ PHP Tipps 2006 8 22.07.2006 18:03
ein Skript startet ein zweites... ajo_silent PHP-Fortgeschrittene 8 03.05.2006 13:42
Skript &amp;amp;amp;quot;tarnen&amp;amp;amp;quot;? Off-Topic Diskussionen 17 07.08.2005 19:42
[Erledigt] Login, LogIn, Anmelden, Einloggen -&amp;amp;amp;amp;gt; ??? Off-Topic Diskussionen 20 14.07.2005 11:01
[Erledigt] Fehlermeldung bei PHP Skript... Kann Fehler selber nicht... PHP Tipps 2005 6 17.02.2005 19:30
login mit session id PHP Tipps 2005 10 26.01.2005 12:32
[Erledigt] problem mit login skript | mysql | cookie PHP Tipps 2004-2 13 07.12.2004 19:01
SKRIPT GESUCHT - Werbung auf einer site anzeigen Beitragsarchiv 4 29.08.2004 14:07
Fehlermeldung beim Login!!! PHP Tipps 2004 5 06.06.2004 15:24

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php login online, benutzeranmeldung an datenbank mit sha-256 verschlüsselung sql, php wer ist online für loginscript, php login script weiterleitung, radius login sql tutorial, login session username undefined index, fehler beim einloggen php online, php login script mit weiterleitung, php login anfänger, php login script 2011, login fehlermeldungen php, php typische login script bugs, php login script weiterleitung cannot modify header information - headers already sent by, warning: cannot modify header information - headers already sent by login script, php login, php login ausgabe, php anmeldung mit fehlermeldung, fehlermeldung lustig

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:53 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum