php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.08.2006, 16:54  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard

PHP-Code:
<?php
session_start
();
?>

<?php
@mysql_connect("localhost""root""") or die("Verbindung zum MySQL - Server fehlgeschlagen!");
@
mysql_select_db("usercontroldb") or die("Verbindung zur Datenbank fehlgeschlagen!");

$sql "SELECT admin, passwort, codex FROM admins";

$result mysql_query($sql);

$row mysql_fetch_assoc($result);

if (isset(
$_POST["name"]) == $row["admin"] && (isset($_POST["passwort"])) == $row["passwort"] && isset($_POST["codex"]) == $row["codex"]) 
  {
  echo 
"Login erfolgreich. 
 <a href=\"usercontrol.php\">Geschützer Bereich</a>"
;
  }
  else
  {
  echo 
"Nö..";
}

mysql_close();
?>
So. Ich habe es nun verbessert. Die Session Funktion da oben hat noch nichts zu sagen, ich habe sie erst notiert. Aber Sessions sollen danach auch noch ran!
Garry ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.08.2006, 16:56  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard

Zitat:
Zitat von PsychoEagle
sind deine Namen eigentlich Unique? also kann es nur einen geben?

Du musst auf jeden Fall erstmal den Datensatz mit WHERE finden. Falls es keine UNIQUE Namen sind, dann mach am Besten WHERE name = $_POST ['name'] AND passwort = $_POST['passwort']

natürlich in anführungszeichen etc. Aber da man dem User nicht trauen kann, diese eingaben auf Fehler prüfen. trim() ist auch noch sinnvoll.

Ich bin mir sicher xabbuh wird noch was dazu sagen können bzw du findest was mit der suche (-> SQL-Injection), denn ich muss aufs Klo und hab dann Feierabend für heut

viel Erfolg

mfg
Mist!
Garry ist offline  
Alt 02.08.2006, 17:03  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard

http://forum.developers-guide.net/sh...t=688#post6010

Das ist schonmal sehr gut!

Aber wieso denn mit WHERE arbeiten? Es geht doch auch so?! Oder stehe ich jetzt auf'm Schlauch?!

Und das man die HTML Zeichen deaktiviert ist auch noch eine gute Idee!
Garry ist offline  
Alt 02.08.2006, 18:25  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Klar geht es so, aber es ist weder leicht upzugraden / ändern noch zu warten etc.. Und elegant ist es schon gleich gar ned
SQL ist doch eine mächtige SPrache, also wieso solltest Du sie nicht richtig anwenden, wenn es dadurch viel leichter und sicherer wird?

PHP-Code:
//fang doch erstmal so an und hol die variablen aus dem Post
//und jag sie durch einen error handler
$usr_pw_md5 md5($_POST['password']);
.
.
.
if (empty(
$usr_pw) || empty($.........)) {
     
location(header........form.php?lastinput=feldfehler);
//so z.b. je nach geschmack, dann kannst du in der seite noch den fehler anzeigen lassen...
} else {
     
$sql "SELECT admin, passwort, codex FROM admins WHERE admin = '$usr_name' AND passwort = '$usr_pw'..........";
     
//Hier darf es ja nur ein ergebnis geben!!
     
$result mysql_query($sql); 
     
$row mysql_fetch_assoc($result);
     if (empty(
$result)) {
     
location(header........form.php?lastinput=datenfehler);
     } else {
     
//Benutzer mit Session versehen und einloggen

Ist kein lauffähiger Code, aber es sollte klar sein, dass man so SQL richtig benutzen kann. Das mysql_fetch_assoc brauchst Du erst wieder, wenn Du den Benutzer als "aktiven Benutzer" Ã*n eine andere Datenbank schreiben willst, um ihn -inkl. seiner Daten - in einem ausgelagerten Table zu haben. (z.b.)
pepe24 ist offline  
Alt 02.08.2006, 18:53  
Neuer Benutzer
 
Registriert seit: 02.08.2006
Beiträge: 25
Garry
Standard

Wieso ist er denn nicht elegant?
Garry ist offline  
Alt 02.08.2006, 22:43  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Wie soll dein Script funktionieren, wenn du später mal mehr als einen Benutzer hast? Woher soll PHP wissen, von welchem der Benutzer aus der Datenbank du die Daten mit den Daten aus dem Formular vergleichen willst?
xabbuh ist offline  
Alt 03.08.2006, 00:08  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Garry
Oder stehe ich jetzt auf'm Schlauch?!
Komplett.

btw: nein ich lese mir den Ulk nicht durch. Wegschweißen, neu schreiben und bei Bedarf noch mal fragen.
 
Alt 03.08.2006, 00:18  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Zitat:
Zitat von Garry
Wieso ist er denn nicht elegant?
1. Weil Du Daten abrufst, die Du gar nicht brauchst.
2. Weil Du dann noch die Daten (auch die Du nicht brauchst) von gültigen Daten extrahieren musst.

Und das frisst Rechenleistung. D.h. so viel, dass Du Dein ganzes Projekt vergessen kannst, wenn 100 (oder bei diesem Code auch nur 10 ) User gleichzeitig eine Anfrage stellen, weil der Server dann alle Viere von sich streckt!
Du musst schon von Anfang an darauf achten, dass Du wirklich nur mit Daten arbeitest, die innerhalb der Möglichkeiten (und da gibt es sehr viele!! (siehe www.mysql.com)) von SQL schon maximal aufbereitet sind!
Ist ja auch klar... Du kaufst Dir ja auch fürs Auto kein Erdöl an der Tanke und raffinierst es - noch viel Teurer - erst zu Hause oder?!
pepe24 ist offline  
Alt 03.08.2006, 08:44  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Ich poste mal nen Weg, wie ich den oft fahre

PHP-Code:
<?php
  
if(isset($_POST['submit'])) {
    
// ZÄHLEN DER EINTRÄGE MIT EINGEGEBENER E-MAIL ADRESSE
    
$cnt mysql_query("SELECT email FROM user_login WHERE email = '"inputf($_POST['email']) ."'") OR die(mysql_error());

    
// SQL ABFRAGE DES PASSWORTES, DER USERID UND DES GESPERRT STATUS
    
$sql "SELECT userid     AS userid,
                   passwort   AS passwort,
                   gesperrt   AS gesperrt
            FROM   user_login
            WHERE  email = '"
inputf($_POST['email']) ."'";
    
$qry mysql_query($sql) OR die(mysql_error());
    
$res mysql_fetch_assoc($qry);

    
// ABFRAGE OB E-MAIL IN FORMULAR EINGEGEBEN WURDE
    
if(inputf($_POST['email']) == '') {
      echo 
'Keine E-Mail eingegeben'."\n";

    
// ABFRAGE OB DIE CNT (=COUNT) ABFRAGE EINEN WERT ERMITTELTE
    
} elseif(mysql_num_rows($cnt) == 0) {
      echo 
'Benutzer existiert nicht'."\n";

    
// ABFRAGE OB PASSWORT IN FORMULAR EINGEGEBEN WURDE
    
} elseif(inputf($_POST['pw']) == '') {
      echo 
'Kein Passwort eingegeben'."\n";

    
// ABFRAGE OB EINGEGEBENES PASSWORT MIT PASSWORT AUS DATENBANK ÃœBEREINSTIMMT
    
} elseif(md5(inputf($_POST['pw'])) != $res['passwort']) {
      echo 
'Ungültiges Passwort'."\n";

    
// ABFRAGE OB ACCOUNT GESPERRT IST
    
} elseif($res['gesperrt'] == 1) {
      echo 
'Dieser Account ist gesperrt'."\n";

    
// EINGELOGGEN + NACHRICHT AUSGEBEN
    
} else {
      echo 
'Sie sind eingeloggt'."\n";
      
// [...]
      // USERID IN SESSION SCHREIBEN
      
$_SESSION['userid'] = $res['userid'];
    }
  }
?>
Die function inputf($var) sieht wie folgt aus:

PHP-Code:
<?php
  
function inputf($dp) {
    
$dp trim($dp);
    
$dp htmlentities($dp);
    
$dp addslashes($dp);
    return 
$dp;
  }
?>
Ich weiss nicht wie sicher mein Login ist, vielleicht kann da wer auch nen Comment abgeben

Und vielleicht kannst du damit was anfangen
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle 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
Diverses aus meinem Apache Logs robo47 Server, Hosting und Workstations 5 25.05.2007 22:45
Script beendet sich ohne Fehlermeldung Zahl PHP Tipps 2006 6 04.06.2006 20:41
passwort script problem PHP Tipps 2006 8 15.02.2006 10:30
[Erledigt] php script und ixed PHP Tipps 2005-2 14 12.10.2005 13:34
[Erledigt] Verzögerung durch included Script? Umgehen? PHP Tipps 2005-2 4 10.07.2005 19:26
[Erledigt] Relay Script PHP-Fortgeschrittene 11 01.06.2005 16:02
[Erledigt] Hilfe bei Download Verwaltungs Script PHP Tipps 2005 8 04.05.2005 10:29
Fehler bei Script, welches Ordner erstellt PsychoEagle PHP Tipps 2005 3 23.04.2005 16:03
[Erledigt] python script mit php aufrufen... PHP-Fortgeschrittene 1 17.11.2004 17:11
PHP Script aus PHP aufrufen Stümper PHP Tipps 2004 5 26.09.2004 08:15
"das" Script oder "der" Script?? Simbo Off-Topic Diskussionen 31 16.09.2004 17:04
Script bricht mitten in einer while Schleife ab PHP Tipps 2004 5 11.07.2004 17:16


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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.