php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.03.2010, 18:00  
Neuer Benutzer
 
Registriert seit: 12.03.2010
Beiträge: 14
PHP-Kenntnisse:
Anfänger
atkaz befindet sich auf einem aufstrebenden Ast
Standard Probleme mit Klassen(OOP)

Hallo Leute,

ich habe ein Problem.Es geht darum, dass ich keine Werte aus meinen den Klassen auslesen kann. Das Objekt überprüft auch nicht die Eingaben die ich in das Formular machen. Was mache ich denn falsch?? Ich bin erst ein anfänger in OOP weiss deshalb nciht merh weiter.

Klassen.php
PHP-Code:
<?php

class haupt {
var 
$passt;
var 
$problem;

function 
haupt(){
$this->passt true;
}

function 
ungueltigeEingabe($feld) {
$this->passt false;
$this->$problem =$feld;
}

function 
namensCheck($name) {
            
// Ist der neue Name ein nichtleerer String?
            // der mit einem Buchstaben anfängt und ansonsten
            // nur aus Buchstaben, Bindestrichen,
            // Leerzeichen und Apostrophen besteht?
            
return preg_match("/^[^\W\d_]([^\W\d_]|[\-\'\s\.])*$/",
                              
stripslashes($name));


}

}
class 
register extends haupt {

function 
register ($username ,
                     
$vorname ,
                     
$nachname ,
                     
$strasse,
                     
$ort ,
                     
$plz,
                     
$passwort,
                     
$passwortb,
                     
$email) {

$this->username $username;
$this->vorname $vorname;
$this->nachname $nachname;
$this->strasse $strasse;
$this->ort $ort;
$this->plz $plz;
$this->passwort $passwort;
$this->passwort2 $passwortb;
$this->email $email;

}

function 
__set($eigenschaft,$wert) {
switch (
$eigenschaft) {

case
    
"username"
               
                 if ( 
preg_match('~\A\S{3,30}\z~',$wert)) {
                 
                 return 
$this->fUser $wert;
                 
                }
                 else
                 {
                 
$this-> ungueltigeEingabe["Username"];
                 }
                 break;
case 
    
"vorname":
              if(
$this->$wert !="") {
              
             if( 
$this->namensCheck($wert)) {
              return 
$this->fVorname =$wert;
             
              }
              }
              else
              {
              
$this-> ungueltigeEingabe["Vorname"];
              }
            break;
case 
    
"nachname":
              if(
$this->$wert !="") {
              if( 
$this->namensCheck($wert)) {
              
$this->fVorname =$wert;
              }
              }
              else
              {
              
$this-> ungueltigeEingabe["Nachname"];
              }
            break;
case 
    
"strasse":
              if(
$this->$wert !="") {
             
              
$this->fStrasse =$wert;
              }
              
              else
              {
              
$this-> ungueltigeEingabe["Strasse"];
              }
            break;
case 
    
"plz":
              if(
$this->$wert !="") {
             if (
preg_match("/^[\d+]{5}$/",$wert)) {
              
$this->fPlz =$wert;
              }
              }
              else
              {
              
$this-> ungueltigeEingabe["Plz"];
              }
              
            break;
            
case 
    
"passwort":
              if(
$this->$wert !="") {
              
$this->fPasswort =$wert;
              
              }
              else
              {
              
$this-> ungueltigeEingabe["Passwort"];
              }
            break;
case 
    
"passwort2":
              if(
$this->$wert !="") {
              
$this->fPasswort2 =$wert;
              
              }
              else
              {
              
$this-> ungueltigeEingabe["Passwort2"];
              }
            break;            
case 
    
"email":
              if(
$this->$wert !="") {
if(
preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$/"$wert)){
              
$this->fEmail =$wert;
              }
              }
              else
              {
              
$this-> ungueltigeEingabe["Email"];
              }
            break;
    

}
}
function 
__get($eigenschaft) {
switch(
$eigenschaft) {
case 
"username": return $this->fUser;
case 
"vorname": return $this->fVorname;
case 
"nachaname": return $this->fNachname;
case 
"strasse": return $this->fStrasse;
case 
"ort": return $this->fOrt;
case 
"plz": return $this->fPlz;
case 
"passwort": return $this->fPasswort;
case 
"passwort2": return $this->fPasswort2;
case 
"email": return $this->fEmail;
}
}
}
register.php
PHP-Code:
<?php

if (!isset($_POST['username'], $_POST['vorname'],$_POST['nachname'], $_POST['strasse'], $_POST['ort'], $_POST['plz'], $_POST['passwort'], $_POST['passwortb'],$_POST['email']))
   {
echo 
"Bitte benutzen Sie das dafür vorgesehene Formular";
 exit;
  }
include 
"Klassen.php";

$username $_POST["username"];
$vorname $_POST["vorname"];
$nachname $_POST["nachname"];
$strasse $_POST["strasse"];
$ort $_POST["ort"];
$plz $_POST["plz"];
$passwort $_POST["passwort"];
$passwort2 $_POST["passwortb"];
$email$_POST["email"];

$user = new register($username,
                     
$vorname,
                     
$nachname,
                     
$strasse,
                     
$ort,
                     
$plz,
                     
$passwort,
                     
$passwort2,
                     
$email);

echo  
$user->fVorname;
?>
Registerformular
[php]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<body>
<div align="center" style="background-color:#F1F1F1" >
<form action="index.php?seite=register" method="post">
<table width="341" border="0" align="center">
<tr>
<th width="187" scope="col"><p align="left">Username*</p></th>
atkaz ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.03.2010, 19:46  
Erfahrener Benutzer
 
Registriert seit: 26.10.2009
Beiträge: 425
PHP-Kenntnisse:
Fortgeschritten
Yoshi- befindet sich auf einem aufstrebenden Ast
Standard

Da fehlen Input Felder?
Yoshi- ist offline  
Alt 12.03.2010, 19:56  
Neuer Benutzer
 
Registriert seit: 12.03.2010
Beiträge: 14
PHP-Kenntnisse:
Anfänger
atkaz befindet sich auf einem aufstrebenden Ast
Standard

Die input felder sind vorhanden sind auch ok. Es liegt an der Klassen.php

leider finde ich den Fehler selber nicht.
atkaz ist offline  
Alt 12.03.2010, 19:58  
Erfahrener Benutzer
 
Registriert seit: 26.10.2009
Beiträge: 425
PHP-Kenntnisse:
Fortgeschritten
Yoshi- befindet sich auf einem aufstrebenden Ast
Standard

error reporting anmachen?

Du solltest eig 100 Fehler kriegen.
Yoshi- ist offline  
Alt 12.03.2010, 20:07  
Neuer Benutzer
 
Registriert seit: 12.03.2010
Beiträge: 14
PHP-Kenntnisse:
Anfänger
atkaz befindet sich auf einem aufstrebenden Ast
Standard

bei mir zeigt er keine fehler an..

könntest du mir eventuel lösungsvorschläge geben??
atkaz ist offline  
Alt 12.03.2010, 20:10  
Erfahrener Benutzer
 
Registriert seit: 26.10.2009
Beiträge: 425
PHP-Kenntnisse:
Fortgeschritten
Yoshi- befindet sich auf einem aufstrebenden Ast
Standard

ini_set('display_errors', 1);
error_reporting(E_ALL);
Yoshi- ist offline  
Alt 12.03.2010, 23:22  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zunächst mal interessiert mich, ob Du PHP4 entwickelst?!
Denn PHP5 erwartet als Konstruktor __construct() !!!
NUR aus Kompatiblitätsgründen springt er bei fehlendem Konstruktor in die gleichnamige Klassenmethode.

Davon mal abgesehen, solltest Du die Klassen-Variablen alle zuvor definieren, bevor Du sie mit Werten füllst.
PHP-Code:
class register extends haupt {

  protected 
$username;
  protected 
$vorname;
  protected 
$nachname;
  
// ...

function register ($username ,
  
// ... 
Verwende den error-reporting, wie Yoshi- gepostet hat, dann müßte er Dir sowas auch anzeigen.

EDIT
Ach ja: Gib den Methoden bitte auch einen Gültigkeitsbereich mit!

Geändert von Arne Drews (12.03.2010 um 23:28 Uhr). Grund: Kleiner Zusatz
Arne Drews ist offline  
Alt 13.03.2010, 10:52  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.654
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Zitat:
Denn PHP5 erwartet als Konstruktor __construct() !!!
Blödsinn! Es funktioniert beides.

Zitat:
function __get($eigenschaft) {
switch(
$eigenschaft) {
Das ist kein OOP, das ist Gefrickel. Wann verbietet eigentlich mal jemand diesen magischen Mist! Schreibe am besten getFoo() und setFoo($foo) Methoden für die Eigenschaft foo, damit ist die API deutlich lesbarer.

Zitat:
ich habe ein Problem.Es geht darum, dass ich keine Werte aus meinen den Klassen auslesen kann.
Hast du dich schon mal mit dem Thema OOP abstrakt auseinandergesetzt? Wofür nutzt man Klassen, was haben diese für eine Bedeutung? Ich denke nicht. Daher würde ich dir raten, einfache Funktionen zu nutzen, denn dein Ansatz ist nichts weiter als Funktionen in Klassen zu gruppieren. Das bringt die zunächst keinen Mehrwert, sondern nur Verwirrung.

Just my 2 cents,
Dr.E.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 13.03.2010, 10:59  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von dr. e.
Blödsinn! Es funktioniert beides.
Zitat:
Zitat von Arne Drews
NUR aus Kompatiblitätsgründen springt er bei fehlendem Konstruktor in die gleichnamige Klassenmethode.
Bitte genau lesen. Steht sonst auch so in der Doku, falls Du's nachlesen willst!
Arne Drews ist offline  
Alt 13.03.2010, 11:01  
Neuer Benutzer
 
Registriert seit: 12.03.2010
Beiträge: 14
PHP-Kenntnisse:
Anfänger
atkaz befindet sich auf einem aufstrebenden Ast
Standard

Hey, danke erstmal für eure Hilfe.
Hab es jetzt mit der Ausgabe hingekriegt. Das Problem was weiter besteht ist das, dass Die Eingaben nciht überprüft werden. Das merkwürdige ist, dass es davor alles gut geklapt hat.

Hab mich erst seit kurzem angefangen mit objekten zu befassen. Der Grund dafür ist, dass ich das alles irgendwie übersichtrlicher machen will, naja obs gelingt ist die andere Frage.

Klassen.php
PHP-Code:
<?php
ini_set
('display_errors'1);
error_reporting(E_ALL);

class 
datenObjekt {


var 
$konsistent;
var 
$problemFeld;

 function 
datenObjekt() {
            
$this->konsistent true;
        }

   
function 
namensCheck($name) {
            return 
preg_match("/^[^\W\d_]([^\W\d_]|[\-\'\s\.])*$/",
                              
stripslashes($name));
                              }

function 
ungueltigeEingabe($feld) {
            
$this->konsistent false;
            
$this->problemFeld $feld;
        echo 
"Bitte ficken Sie das Feld ".$this->problemFeld" korrekt aus </br>";
        }

}

class 
user extends datenObjekt {

var 
$Fname;
var 
$fVorname;
var 
$fNachname;
var 
$fStrasse;
var 
$fOrt;
var 
$fPlz;
var 
$fEmail;
function 
__construct($username,$vorname,$nachname,$strasse,$ort,$plz,$passwort,$passwortb,$email) {

$this->datenObjekt(); 



$this->username $username;
$this->vorname $vorname;
$this->nachname $nachname;
$this->strasse $strasse;
$this->ort $ort;
$this->plz $plz;
$this->passwort $passwort;
$this->passwort $passwortb;
$this->email $email;
$this->datenObjekt();
}



function 
__set($eigenschaft,$wert) {
switch(
$eigenschaft) {

 case 
"username"
               if(
$wert!=""
               {
                if ( 
preg_match('~\A\S{3,30}\z~',$wert)) {
                 return 
$this->Fname $wert;
                 }
                }
                 else
                 {
                  
$this-> ungueltigeEingabe("Username");
                exit;
                 }
                 break;
           
case 
"vorname":
              if(
$wert !=""
               {
                if( 
$this->namensCheck($wert)) {
               
$this->fVorname =$wert;
             }
              
              }
              else
              {
              
$this-> ungueltigeEingabe("Vorname");
             exit;
              }
             
            break;

case 
"nachname":
              if(
$wert !=""
               {
              if( 
$this->namensCheck($wert)) {
               
$this->fNachname =$wert;
             }
              
               }
              else
              {
              
$this-> ungueltigeEingabe("Nachname");
             
              }    


case 
"strasse":
              if(
$wert !="") {
             
              return 
$this->fStrasse =$wert;
              
              }
              else
              {
              
$this-> ungueltigeEingabe("Strasse");
              }
            break;
case 
"ort":
              if(
$wert !="") {
             
              return 
$this->fOrt =$wert;
              
              }
              else
              {
             return  
$this-> ungueltigeEingabe("Ort");
              }
            break;            

case 
"plz":
              if(
$wert !="") {
             if (
preg_match("/^[\d+]{5}$/",$wert)) {
             return 
$this->fPlz =$wert;
              }
              }
              else
              {
              
$this-> ungueltigeEingabe("Plz");
              }
              
            break;
            
case 
"passwort":
              if(
$wert != $wert) {
             return 
$this->fPasswort =$wert;
              
              }
              else
              {
              
$this-> ungueltigeEingabe("Passwort");
              }
            break;
case 
"passwort2":
              if(
$wert !="") {
             return 
$this->fPasswort2 =$wert;
              
              }
              else
              {
              
$this-> ungueltigeEingabe("Passwort2");
              }
            break;            
case 
"email":
              if(
$wert !="") {
if(
preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,3})$/"$wert)){
             return 
$this->fEmail =$wert;
              }
              }
              else
              {
              
$this-> ungueltigeEingabe("Email");
              }
            break;
    


}
}

}



?>
register.php
PHP-Code:
<?php
ini_set
('display_errors'1);
error_reporting(E_ALL);
include 
"k.php";

if (!isset(
$_POST['username'], $_POST['vorname'],$_POST['nachname'], $_POST['strasse'], $_POST['ort'], $_POST['plz'], $_POST['passwort'], $_POST['passwortb'],$_POST['email']))
   {
echo 
"Bitte benutzen Sie das dafür vorgesehene Formular";
 exit;
  }

$username $_POST["username"];
$vorname $_POST["vorname"];
$nachname $_POST["nachname"];
$strasse $_POST["strasse"];
$ort $_POST["ort"];
$plz $_POST["plz"];
$passwort Md5($_POST["passwort"]);
$passwort2 $_POST["passwortb"];
$email$_POST["email"];

$user = new user($username,$vorname,$nachname,$strasse,$ort,$plz,$passwort,$passwort2,$email);



echo  
$user->Fname
echo 
$user->fVorname;
 echo 
$user->fNachname;
 echo 
$user->fStrasse;
 echo 
$user->fOrt;
 echo 
$user->fPlz;
 echo 
$user->fEmail;
?>
würde mich freuen, wenn sich jemand den Code oben anschauen könnte.
atkaz 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
CHarset und Probleme mit IE KeKs0r HTML, Usability und Barrierefreiheit 10 26.01.2010 21:59
[Erledigt] fopen() Probleme jN^ PHP Tipps 2009 2 18.08.2009 12:31
[Erledigt] Firefox / IE - Probleme HTML, Usability und Barrierefreiheit 5 20.07.2009 17:04
[Erledigt] Probleme mit iFrame rocco HTML, Usability und Barrierefreiheit 1 28.12.2008 17:44
Probleme bei Speicherung von serialize() Strings Manni2k PHP Tipps 2006 13 15.10.2006 15:06
Probleme mit mbstring extension unter Debian HStev Server, Hosting und Workstations 3 30.08.2006 20:55
Probleme mit Rechteverteilung chmod() per script!!!??? Funky_ PHP Tipps 2006 7 17.06.2006 17:10
Probleme beim Datenupload zu meiner Datenbank Datenbanken 3 05.09.2005 19:47
Probleme mit Sonderzeichen... Datenbanken 1 02.08.2005 23:37
[Erledigt] hilfe! probleme mit... PHP Tipps 2005 4 12.04.2005 22:55
[Erledigt] CSV Größe macht Probleme mit php PHP Tipps 2005 5 15.03.2005 21:29
Zwei Rechner ins Netz - Router - Hub - Probleme... imported_Ben Off-Topic Diskussionen 37 13.01.2005 21:36
[Erledigt] Technische Probleme mit Sessions PHP-Fortgeschrittene 4 18.11.2004 14:45
[Erledigt] Probleme mit Fremdsprachen HTML, Usability und Barrierefreiheit 2 21.09.2004 17:11
PHP Bilder in DB / Probleme bei Änderung PHP-Fortgeschrittene 1 05.06.2004 11:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php felder überprüfen oop, haupt klassen php, objektorientierte programmierung $_post, [^\\w\\d_ -] php, apostrophe preg_match

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