php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.04.2008, 22:21  
Benutzer
 
Registriert seit: 08.04.2008
Beiträge: 45
coraplanet befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Login erstellen

hi leute ...

habe meine homepage (wen ich den link mal zur problemlösung senden dar) CORA-PLANET.DE neu aufgesetzt und wollte mich jetzt dran machen einen login zu erstellen

habe bereits in der datenbank (lokal allerdings) einen benutzernamen und passwort mit md5 verschlüsselung angelegt

ich weiß allerdings jetzt nicht wie ich das mittels php überprüfen kann... habe ein script erstellt aber da werden mir die texte für eingeloggt und für nicht eingeloggt angezeigt ... ich vermute mal das was mit der abfrage nicht stimmt... aber was da komm ich jetzt leider nicht drauf ... könnt ihr mir helfen?? wäre nett danke schonmal im vorraus

hier die einzelnen scripte

index.php (wo der login ist)
Code:
<?php include('navi.php');?>
<html>
 <head>
  <title>
   CORA-PLANET.DE
  </title>
  <link rel="stylesheet" type="text/css" href="cora-planet-template.css">
 </head>

 <body>
  <div class="header">
   <a href="http://www.cora-planet.de"><img src="images/logo.gif" height="43" border="0"></a>
  </div>

  <div class="menubox">
   <div class="head">
    <b>
     Men&uuml;
    </b>
   </div>
   <a href="index.php?index">Home</a><br>
   <a href="index.php?kalender">Kalender</a><br>
   <a href="index.php?bilder">Bilder</a><br>
   <a href="index.php?kontakt">Kontakt</a><br>
   <a href="index.php?chronik">Chronik</a><br>
   <a href="index.php?neues">Neues</a><br>
   <a href="index.php?impressum">Impressum</a><br>


  </div>
  <div class="loginbox">
   <div class="head">
    <b>
     Login
    </b>
   </div>
   <form action="login.php" method="POST">
    Username:<br>
    <input type="text" name="username" size="15"><br>
    Passwort:<br>
    <input type="password" name="passwort" size="15"><br><br>
    <input type="submit" value="Login" name="klick">
   </form>
   <a href="#">Registrieren</a><br>
   <a href="#">Passwort vergessen</a>
  </div>
  <div class="rechts1">
   1. rechter Block
  </div>

  <div class="footer">
   &copy; by KM April 2008
  </div>   
 </body>
</html>
login.php (auf die der login button verweist)
Code:
<?php  session_start();	?>

<html>
 <head>
  <title>
   Eingeloggt
  </title>
 </head>

 <body>

 <?php
  if($_SERVER['REQUEST_METHOD'] == 'POST'){

    $server = "localhost";
    $nutzer = "root";
    $passwort = "";
    $dbname = "coraplanet";
    $verbindung = mysql_connect($server, $nutzer, $passwort) or die ("Keine Verbindung zum Server moeglich");
    mysql_select_db($dbname) or die ("Die Datenbank existiert nicht!");

    $hostname = $_SERVER['HTTP_HOST'];
    $path = dirname($_SERVER['PHP_SELF']);
    $username = mysql_query("SELECT name FROM user");
    $passwort = mysql_query("SELECT passwort From user");
    $usernameabfrage = $_POST["username"];
    $passwortabfrage = $_POST["username"];
    
    if($usernameabfrage == $username && $userpasswortabfrage == $passwort){
     header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/logged.php');
    }
    else
     echo "Sie haben falsche daten eingegeben";
    }
  ?>
  <h2>Herzlich Willkommen</h2>
 </body>
</html>
logged.php (auf die nach dem überprüfen weitergeleitet werden soll)
Code:
<?php include("auth.php");?>
<html>
 <head>
  <title>
   Eingeloggt
  </title>
 </head>

 <body>
 <h1>Herzlich Willkommen<?php $_POST[
auth.php (in der überprüft werden soll ob derjenige bereits angemeldet ist oder nicht)
Code:
<?php
     session_start();

     $hostname = $_SERVER['HTTP_HOST'];
     $path = dirname($_SERVER['PHP_SELF']);

     if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
      header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
      exit;
      }
?>
hoffe das genügt schon ... falls nicht bitte schreiben was noch fehlt und ich werde dies liefern
coraplanet ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.04.2008, 08:20  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

DU machst gleich mehrere Fehler. Zuerst solltest du dir mal angucken wie mysql_query() funktioniert, die liefert dir nämlich eine ressource, die du dann z.b. mit mysql_fetch_assoc() verarbeiten kannst. Außerdem solltest du auch die md5()-Funktion verwenden wenn dein Passwort in der Datenbank auch mit md5 verschlüsselt ist. Dann gehst du bei dir davon aus das nur ein User in der Tabelle steht, das kann ja nun auch nicht sinn der sache sein. Als Tipp: mysql_query() immer mit "or die(mysql_error())" benutzen um evtl. Fehler von der Datenbank auszugeben

[edit]
Da sind noch mehr Fehler, aber kümmere dich erstmal um die genannten
cycap ist offline  
Alt 10.04.2008, 09:42  
Benutzer
 
Registriert seit: 08.04.2008
Beiträge: 45
coraplanet befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von cycap Beitrag anzeigen
DU machst gleich mehrere Fehler. Zuerst solltest du dir mal angucken wie mysql_query() funktioniert, die liefert dir nämlich eine ressource, die du dann z.b. mit mysql_fetch_assoc() verarbeiten kannst. Außerdem solltest du auch die md5()-Funktion verwenden wenn dein Passwort in der Datenbank auch mit md5 verschlüsselt ist. Dann gehst du bei dir davon aus das nur ein User in der Tabelle steht, das kann ja nun auch nicht sinn der sache sein. Als Tipp: mysql_query() immer mit "or die(mysql_error())" benutzen um evtl. Fehler von der Datenbank auszugeben

[edit]
Da sind noch mehr Fehler, aber kümmere dich erstmal um die genannten

danke schonmal, werde mir das gleich mal anschauen
coraplanet ist offline  
Alt 10.04.2008, 16:53  
Neuer Benutzer
 
Registriert seit: 09.04.2008
Beiträge: 25
amigo befindet sich auf einem aufstrebenden Ast
Standard

Ich würde an deiner Stelle dein Script n bisschen anders aufbauen.
1. Würde ich mal zusehen, dass ich im mysql_query ne WHERE Bedingung reinhaue. z.B.:
Code:
$abfrage = "SELECT `password` FROM `user` WHERE `username` = '".$_POST['username']."' ";
d.H. Suche mir das Passwort raus, welches in der Tabelle user steht und suche dort, wo der username = dem eingegebenen Usernamen ist.

2. in deiner 2ten Abfrage mach mal aus dem From ein FROM ^^

das andere was mir so auf anhieb aufgefallen ist wurde schon gesagt.

so far Greetz amigo
amigo ist offline  
Alt 10.04.2008, 16:57  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von amigo Beitrag anzeigen
Ich würde an deiner Stelle dein Script n bisschen anders aufbauen.
1. Würde ich mal zusehen, dass ich im mysql_query ne WHERE Bedingung reinhaue. z.B.:
Code:
$abfrage = "SELECT `password` FROM `user` WHERE `username` = '".$_POST['username']."' ";
d.H. Suche mir das Passwort raus, welches in der Tabelle user steht und suche dort, wo der username = dem eingegebenen Usernamen ist.

2. in deiner 2ten Abfrage mach mal aus dem From ein FROM ^^

das andere was mir so auf anhieb aufgefallen ist wurde schon gesagt.

so far Greetz amigo
Genau das meinte ich mit

Zitat:
Dann gehst du bei dir davon aus das nur ein User in der Tabelle steht, das kann ja nun auch nicht sinn der sache sein


Greetz
Cy
cycap ist offline  
Alt 10.04.2008, 23:07  
Benutzer
 
Registriert seit: 08.04.2008
Beiträge: 45
coraplanet befindet sich auf einem aufstrebenden Ast
Standard

habe den code jetzt mal folgendermaßen geändert

Code:
<?php  session_start();	?>

<html>
 <head>
  <title>
   Eingeloggt
  </title>
 </head>

 <body>

 <?php
  if($_SERVER['REQUEST_METHOD'] == 'POST'){

    $server = "localhost";
    $nutzer = "root";
    $passwort = "";
    $dbname = "coraplanet";
    $verbindung = mysql_connect($server, $nutzer, $passwort) or die ("Keine Verbindung zum Server moeglich");
    mysql_select_db($dbname) or die ("Die Datenbank existiert nicht!");

    $hostname = $_SERVER['HTTP_HOST'];
    $path = dirname($_SERVER['PHP_SELF']);
    $usernameabfrage = mysql_query("SELECT 'passwort' FROM 'user' WHERE 'username' = '".$_POST['username']."' ");
    $passwortabfrage = mysql_query("SELECT 'passwort' FROM 'user' WHERE 'passwort' = '".$_POST['passwort']."' ");
    $username = $_POST["username"];
    $passwort = $_POST["username"];
    
    if($usernameabfrage == $_POST['username'] && $passwortabfrage == $_POST['passwort']){
     header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/logged.php');
    }
    else
     echo "Sie haben falsche daten eingegeben";
    }
  ?>
 </body>
</html>
jedoch springt er immernoch in den else teil ... der fehler das er auch noch zusätzlich herzlich willkommen geschrieben hat hab ich nun auch behoben das war nach dem php code der <h2>Herzlich Willkommen</h2> tag gewesen den habe ich entfernt

Geändert von coraplanet (10.04.2008 um 23:18 Uhr).
coraplanet ist offline  
Alt 11.04.2008, 08:57  
Benutzer
 
Registriert seit: 06.03.2008
Beiträge: 32
ReatKay befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$usernameabfrage mysql_query("SELECT passwort FROM user WHERE username = '".$_POST['username']."' "); 
Damit schaffst du lediglich die Abfrage, aber noch keine Auswertung der zurückgelieferten Ressource... Damit du effektive Werte hast, benutze z.B:

PHP-Code:
$usernameabfrage mysql_query("SELECT passwort FROM user WHERE username = '".$_POST['username']."' ");

// Username existiert nicht
if (!mysql_num_rows($usernameabfrage)
{
  echo 
"Paah, gibt's ned";
}

// Username vorhanden
{
  
// WICHTIG: zurückgelieferte MySQL-Ressource auslesen!!
  
$password_in_database mysql_result($usernameabfrage,0,'passwort');
  
  
// Passwort entspricht Datenbank-Passwort
  
if ($_POST['passwort'] == $password_in_database)
  {
    echo 
"Korrekt: Du darfst rein!";
  }
  else
  {
    echo 
"Zutritt verweigert";
  }

Ich würde dir dringendst nahelegen, mehr über PHP+MySQL zu lesen... offenbar happerts noch bissl am Konzept "Datenübergabe von MySQL an PHP". MySQl liefert dir nach einem Query keine direkt auslesbaren Werte - vielmehr musst du sie mit Hilfe der MySQL-Funktionen in PHP zu Strings und/oder Arrays "umwandeln".

Geändert von ReatKay (11.04.2008 um 10:24 Uhr).
ReatKay ist offline  
Alt 11.04.2008, 10:19  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
$usernameabfrage = mysql_query("SELECT 'passwort' FROM 'user' WHERE 'username' = '".$_POST['username']."' ");
Das ist anfällig für sql injections. Ausserdem müssen bei mysql backticks für Feldbezeichner benutzt werden, keine '

PHP-Code:
$query "SELECT
 `passwort`
FROM
 `user`
WHERE
 `username`='"
.mysql_real_escape($_POST['username'], $verbindung)."'
"
;
$usernameabfrage mysql_query($query$verbindung) or exit(mysql_error($verbindung)); 
David ist offline  
Alt 11.04.2008, 10:24  
Benutzer
 
Registriert seit: 06.03.2008
Beiträge: 32
ReatKay befindet sich auf einem aufstrebenden Ast
Standard

David: zuviel des Guten. SQL-Injections und andre Sicherheitsrelevante Themen sollen ihn erst kümmern, wenner mal die Basics drin hat. Bevor er nich mal Daten aus ner DB auslesen kann, is alles andre eh Humbug
ReatKay ist offline  
Alt 11.04.2008, 10:27  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Leute ihr wiederholt größtenteils nur das was ich in meinem ersten Post schon gesagt habe und was immer noch nicht in die Tat umgesetzt wurde.

Ich bin, wie ReatKay, der Meinung das SQL-Injection zwar ein wichtiges Thema, aber an dieser Stelle wohl zu viel des guten ist.
cycap ist offline  
 


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
Forum Login per curl leb0rtran PHP Tipps 2008 1 19.03.2008 12:47
Etwas komplexerer Login --> Keine Angst, Suche benutzt dethlef14 PHP Tipps 2006 7 02.10.2006 00:35
.htaccess Login über HTML Login Felder gestalten php1 PHP-Fortgeschrittene 2 09.08.2006 13:53
Session Logout Login Navigation TailerD PHP Tipps 2006 10 24.06.2006 17:12
Frage zu Login Kein Genie PHP Tipps 2006 5 16.06.2006 12:34
phpBB Loginscript in eigenes Login Script einbinden 2wuck PHP Tipps 2007 4 19.12.2005 23:10
Problem mit Login Script PHP Tipps 2007 4 15.11.2005 17:29
Problem mit Login Bereich (Sessions, MySQL) nicobischof PHP Tipps 2005-2 6 19.10.2005 09:54
Login Bereich erstellen nicobischof PHP Tipps 2005-2 2 17.10.2005 21:40
wie speichere ich eine ip beim login? annaloga PHP Tipps 2005-2 23 14.10.2005 17:10
[Erledigt] Login, LogIn, Anmelden, Einloggen -&amp;amp;amp;amp;gt; ??? Off-Topic Diskussionen 20 14.07.2005 11:01
Stammbaum erstellen Riot PHP Tipps 2005 17 13.05.2005 16:32
login mit session id PHP Tipps 2005 10 26.01.2005 12:32
[Erledigt] Zurück-Button beim Login PHP Tipps 2005 7 25.01.2005 17:22
Ordner per Skript erstellen --> Rechte Problem PHP Tipps 2004 2 06.07.2004 14:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
html login erstellen, php login erstellen, homepage login erstellen, login erstellen html, login erstellen, login html erstellen, login für homepage erstellen, login erstellen php, homepage mit login erstellen, login mit php erstellen, website login erstellen, login php erstellen, webseite mit login erstellen, login erstellen php mysql, user login erstellen, login.php erstellen, website mit login erstellen, webseiten login erstellen, login homepage erstellen, php login seite erstellen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:28 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