php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 06-04-2008, 22:36
der_meier_hans
 Registrierter Benutzer
Links : Onlinestatus : der_meier_hans ist offline
Registriert seit: Mar 2007
Beiträge: 163
der_meier_hans ist zur Zeit noch ein unbeschriebenes Blatt
Standard OOP Testaufgabe

Hallo!

Ich hatte am Freitag eine Testaufgabe und bin mir nicht sicher ob meine Lösung gut ist oder ob es nicht besser zu proggen ist.

Die Aufgabenstellung: Erstelle ein Loginfenster und pürfe ob ein bestimmter Username vorhanden ist. Wenn ja, tausche den Login-Button mit einem Logout-Button aus. Außerdem speichere alle Aktionen in eine weitere Tabelle ab. Z.B. User hat sich erfolgreich angemeldet, User nicht vorhanden usw.

PHP-Code:
<?php
include_once("db_inc.php");

if(
$_POST['login']){
include_once(
"pruefen.php");
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head><title>Login</title

<link rel="stylesheet" type="text/css" href="basic.css">
</head>

<body>
    <div id="formular">
    <fieldset>
    <legend>Login</legend>
        <form method=POST action="<?php print htmlspecialchars($_SERVER['PHP_SELF']); ?>">
            <input type="input" name="user" maxlenght="40" value="Username">
            <input type="password" name="pass" maxlenght="20" value="Paswort"><br>
            <?if ($para != 2) {?>
            <input type="submit" value="login" name="login">
            <?} else {?>
            <input type="submit" value="logout" name="logout">
            <?}?>
        </form>
    </fieldset>
    </div>
    <?if ($para != 2) {
       echo 
"da ist was schief gegenagen!";
    } else {
       echo 
"Hallo";
    }
?>
    
</body>
</html>

PHP-Code:
<?php

class login {
     public function 
pruefen($user$pass) {
        
$res1 mysql_query("SELECT user_id, username, password FROM user WHERE username = '$user'");
        
$erg1 mysql_fetch_row($res1);
    
            if(
$erg1){
                
$res2 mysql_query("SELECT user_id, username, password FROM user WHERE username = '$user' AND password = '$pass'");
                
$erg2 mysql_fetch_row($res2);
            } else {
                
$this->schreiben_db($user"Username nicht vorhanden""0");
            }
            if(
$erg2){
                
$this->schreiben_db($user"Login erfolgreich" "2");
          
            } else {
                
$this->schreiben_db($user"Passwort falsch""1");
              
            }
     }

     public function 
schreiben_db($user$text$status) {

            
$write_db mysql_query("INSERT INTO user_log(username, status) VALUES('$user', '$text')");
            
$this->ausgabe($status);
        }


     function 
ausgabe($status) {
           global 
$para;
           
$para $status;

     }
}

$check_login = new login();
$check_login->pruefen($_POST['user'], $_POST['pass']);

?>
Mit Zitat antworten
  #2 (permalink)  
Alt 06-04-2008, 22:54
E.T.
 Registrierter Benutzer
Links : Onlinestatus : E.T. ist offline
Registriert seit: Nov 2003
Beiträge: 240
E.T. ist zur Zeit noch ein unbeschriebenes Blatt
E.T. eine Nachricht über ICQ schicken
Standard

schreiben_db() und ausgabe() scheinen private Methoden zu sein. Also würde ich das auch entsprechend deklarieren.

Oder wenn das für PHP4 sein soll, dann sollten die public Deklarationen der Methoden auch rausgenommen werden.
__________________
Download ET-Chat v3.x.x

Geändert von E.T. (06-04-2008 um 22:58 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 06-04-2008, 23:02
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

... und ...

- Eine Klasse muss unabhängig von allem sein, alles was braucht muss als Parameter übergeben werden. Deine Klasse setzt aber voraus, dass eine Verbindung zur DB besteht.

- Du sollst auch Anfangszustand mit isset prüfen.
Mit Zitat antworten
  #4 (permalink)  
Alt 07-04-2008, 08:30
der_meier_hans
 Registrierter Benutzer
Links : Onlinestatus : der_meier_hans ist offline
Registriert seit: Mar 2007
Beiträge: 163
der_meier_hans ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke!

@ E.T Wann sollte ich private Methoden benutzen? Vielleicht dann, wenn es sich um "private" Infos handelt, wie z.B. Passwort.

@asp2php sollte ich vielleicht die DB-Verbindung auch in eine Klasse unterbringen? Oder was genau meinst du mit "unabhängig von allem".
Mit Zitat antworten
  #5 (permalink)  
Alt 07-04-2008, 09:10
E.T.
 Registrierter Benutzer
Links : Onlinestatus : E.T. ist offline
Registriert seit: Nov 2003
Beiträge: 240
E.T. ist zur Zeit noch ein unbeschriebenes Blatt
E.T. eine Nachricht über ICQ schicken
Standard

Es gibt in PHP5, wie auch in Java und in diversen anderen OOP Sprachen public, privat, protected, static Methoden und Attribute. Die Festlegung der Methodenart gehört zu einem der grundlegenden Prinzipien der Object Orientierten Programmierung. Du findest die genaue Erklärung dazu auf unzähligen Internetseiten und in fast allen Büchern zur OOP.

Viel Erfolg.
__________________
Download ET-Chat v3.x.x
Mit Zitat antworten
  #6 (permalink)  
Alt 07-04-2008, 09:21
MelloPie
 PHP Master
Links : Onlinestatus : MelloPie ist offline
Registriert seit: Jan 2002
Ort: Hessen
Beiträge: 4.380
MelloPie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@der_meier_hans
noch was grundlegenes
Du solltest die klasse selbst einfach nur in einer Datei vorhalten, die Du in deinem Script zB per require_once einbindest.
Der klassenaufruf erfolgt in Deinem Script und nicht in der Klassendatei selbst.

ganz schrecklich in Deinem Script:
<?if ($para != 2) {
$para ist in Deiner Klasse global definiert. aber Du solltest alle Klassenattribute immer über Deine Klasseninstanz beziehen (GET und SET Methodik benutzen).
__________________
Beantworte nie Threads mit mehr als 15 followups...
Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:25 Uhr.