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 Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 27-11-2015, 11:12
parkballer94
 Registrierter Benutzer
Links : Onlinestatus : parkballer94 ist offline
Registriert seit: Nov 2015
Beiträge: 1
parkballer94 befindet sich auf einem aufstrebenden Ast
Standard Trying to get property of non-object

Hallo liebe PhP-Gemeinde,

Ich arbeite aktuell freizeitmäßig an einer Materialverwaltung und habe dort bei meinem Login ein kleines Problem.
Wie es ablaufen soll:
a) Wenn ein Login korrekt erfolgt, dann soll ich auf meine Seite "stock.php" weitergeleitet werden.
b) Wenn ein Login fehlerhaft erfolgt, dann soll eine Fehlermeldung entsprechend des "Fehlverhaltens" erfolgen.

Was passiert:
a) Klappt.
b) Klappt nicht: Error = "Notice: Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/webdev/mmweb/user/user_controller.php on line 38"und es erfolgt eine Weiterleitung auf die stock.php...

Zeile 38:
PHP-Code:
$id $this->model->getRecord("username='" $this->_request->username .
                             
"' AND password='" md5($this->_request->password) . "'")->id
Ich versuche das Problem jetzt schon seit einigen Tagen zu beheben, habe aber mittlerweile wirklich den Blick dafür verloren, sämtliche Dinge über var_dump getestet und ich weiß einfach nicht weiter... ich vermute ja, dass ich einen Fehler bekomme sobald getRecord aufgerufen wird, da er mit $data nichts anzufangen weiß und mir darüber wohl null zurückliefern wird...
daher würde ich mir von euch wünschen, wenn mir jemand sagen könnte, wo in meiner Logik ein Fehler auftritt oder was ich falsch mache.


Vielen Dank schon mal im Voraus.


user_model:
PHP-Code:
<?php
include_once 'libraries/Model.php';

class 
User_Model extends Model{
    
const 
TABLE_NAME="user";
    
    
public function 
getRecord ($where ""){                //Abfrage eines Datensatzes
   
    
$queryparent::buildQuery(self::TABLE_NAME,$where);
    return 
parent::getObject($query);
    
    
}

public function 
getRecords ($where ""$ordering""){      //Abfrage mehrerer Datensätze auf einmal
    
     
if($ordering == ""){
        
$ordering="id";
    }
    
    
$queryparent::buildQuery(self::TABLE_NAME,$where,$ordering);
    return 
parent::getObjectList($query);
    
    
}
PHP-Code:
<?php
include_once "libraries/Database.php";

class 
Model extends Database{
    
    public function 
__construct() {
        
parent::connect();
    }
    
    public function 
buildQuery($tableName=""$where=""$ordering=""){     //Query wird gebastelt
                                                                            //ordering entspricht dem Zusatz "Order by"
        
$query ="SELECT * FROM " $tableName;
       
            if(
$where != ""){
                
$query.=" WHERE ".$where;
            }
            if(
$ordering != ""){
                
$query.= " ORDER BY ".$ordering;
            }
         
            return 
$query;
    }
public function 
getObjectList($query=""){               //Mehrere Datensätze in Objekte umschreiben
       
        
$data = array();        
        
Database::setQuery($query);
        
$i=0;
        while (
$row parent::getObjectList()){
            
$data[$i]=$row;
            
$i ++;
        }
        
        return 
$data;
    }          
    
    
     public function 
getObject($query "") {
         
         
$data="";
         
Database::setQuery($query);
//         $x= parent::getObjectList();
//         var_dump($x);
             
         
while ($row parent::getObjectList()) {
           
            
$data $row;
          
        }
        
        return 
$data;
        
    }
Database:
PHP-Code:
class Database{
    
    private 
$ergebnis;
    
    function 
connect(){                     //Verbindung zur Datenbank herstellen
        
        
$connect mysql_connect(MySQL_HOST,MySQL_USER,MySQL_PASSWORT) or die("Keine Datenbankverbindung möglich" .mysql_error());
        
mysql_select_db(MySQL_DATENBANK) or die ("Die Datenbank existiert nicht" .  mysql_error());
        
       return 
$connect;
        
    }
    
   
    
    function 
setQuery($query){              //Query wird gebaut und abgeschickt
        
        
$connect=$this->connect();        
        
$this->ergebnis mysql_query($query,$connect) or die (mysql_error());
        return 
$this->ergebnis;
    }
    
    
    function 
getObjectList(){        //Inhalt des Queries wird zu einem Objekt geformt 
       // print_r($this->ergebnis);
     
return mysql_fetch_object($this->ergebnis); 
User_controller:

PHP-Code:
<?php

include_once 'config/constants.php';
include_once 
'libraries/Controller.php';
//error_reporting(E_ALL);
//ini_set("display_errors", "off");
//ini_set("display_startip_errors", "off");

class User_Controller extends Controller {

    public function 
__construct() {

        
parent::__construct();                  //Zugriff auf Funktionen von Model und View jetzt über 
        
$this->view = new User_View;            //$this->model-> oder $this->view->
        
$this->model = new User_Model;
        if (isset(
$this->_request->action)) {   //Filtere die Action aus der Request um Work einen 
            
$this->work($this->_request->action); //Paramenter zu übergeben und die switch-Anweisung zu füllen
        
}
    }

    public function 
work($action) {

        switch (
$action) {


            case 
"login":


                if ((
$this->_request->username == "") || ($this->_request->password == "")) { //Fall 1: Leeres Login-Formular

                    
parent::output("error""Login fehlgeschlagen.<br/> Bitte geben Sie einen gültigen Benutzernamen und Passwort ein");
                   
                } else { 
//Fall 2: Login-Daten sind inkorrekt.

                    //Führt getRecord aus User_Model aus und erzeugt Query, welches einen Datensatz mit den passenden Username und Passwort zurückliefert. 
                    //Schreibt sich aus diesem Datensatz nur die ID! des USERS raus und legt diese auf $id (getRecord liefert Objekt zurück)
                      
$id $this->model->getRecord("username='" $this->_request->username .
                             
"' AND password='" md5($this->_request->password) . "'")->id;
                     
                        if (
$id == 0) {                         
                         
parent::output("error""Login fehlgeschlagen.<br/> Bitte Login-Daten überprüfen");   
                    } 
                        else if (
$id != 0) {
                        
//Sonst weiterleitung in Stock und setzen der ID in die Session.
                        
                        
header("Location:" WEBROOT "stock.php");
                        
$_SESSION['id'] = $id;
                        
parent::output("success""Login erfolgreich.");
                        
                    }
                }   break;


    }}
Mit Zitat antworten
  #2 (permalink)  
Alt 27-11-2015, 16:19
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Spontane Antwort: Wenn die Login-Daten falsch sind, dann existiert der Nutzer in der Kombination Name/Passwort nicht.

PHP-Code:
$id $this->model->getRecord("username='" $this->_request->username .
                             
"' AND password='" md5($this->_request->password) . "'")->id
Warum dann also seinen Datensatz (den es nicht gibt) aus der DB laden und seine ID (die es auch nicht gibt) auslesen wollen?

PS: Ich könnte mir zudem denken, dass das Script anfällig für SQL-Injections ist, weil du Request-Daten ungeprüft in SQL-Queries einsetzt.
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Trying to get property of non-object in <b> DarkDino PHP Developer Forum 1 21-08-2012 16:53
Notice: Trying to get property of non-object in frauke PHP Developer Forum 6 18-07-2008 11:18
Notice: Trying to get property of non-object analyzer PHP Developer Forum 9 18-06-2008 15:27
PHP5: Notice: Trying to get property of non-object (OOP) fletschge PHP Developer Forum 14 18-07-2006 14:30
Notice: Trying to get property of non-object wkd- PHP Developer Forum 41 14-06-2005 10:48

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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:32 Uhr.