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 19-03-2008, 21:05
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard Geschützte MySQL-Verbindung in Klasse?!

Hey Ho,
Mal wieder eine bescheidene Frage von mir^^ Und zwar habe ich eine Klasse für mein Accountsystem geschrieben. Diese stelle ich über den includepath für bestimmte vHosts zur verfügung..

In dieser Klasse gibt es eine Funktion namens connect(), die am Anfang eine Verbindung zur Account-Datenbank (MySQL) herstellt:

PHP-Code:
public function connect() {
        
$this->link mysql_connect("localhost""user""password"
true);
        
mysql_select_db("micronax_mymicronax"$this->link);
    } 
This->link ist wie folgt definiert
PHP-Code:
protected $link false
In der Klasse führe ich querys durch mit
PHP-Code:
$result mysql_query($sql$this->link) or die(mysql_error()); 
Meine Anfangsüberlegung war: Wenn ich den link nur in der Klasse definiere und auf protected setze, müsste man außerhalb der Klasse ja eigendlich nicht auf diese MySQL-Verbindung zugreifen können. Damit lag ich aber leidet falsch. Es ist möglich. Hab schon probiert, mittel __destruct die Verbindung wieder zu schließen.. bringt aber auch nichts..

Hat jemand eine Idee, wie ich es machen kann, das diese Verbindung mit diesen Zugangsdaten nur Klassenintern verfügbar ist?

Danke & Grüße,

Fabian
Micronax.de
__________________
--> Micronax <--
Mit Zitat antworten
  #2 (permalink)  
Alt 19-03-2008, 21:16
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://de3.php.net/manual/de/ref.pdo.php

Schau dir das mal an.
Mit Zitat antworten
  #3 (permalink)  
Alt 19-03-2008, 21:19
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
das diese Verbindung mit diesen Zugangsdaten nur Klassenintern verfügbar ist?
private?

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #4 (permalink)  
Alt 19-03-2008, 21:22
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn keine Verbindungskennung bei den Mysql-Funktionen angegeben wird, wird automatisch die letzte genommen.
Ich denke dass darin das Problem besteht.
Mit Zitat antworten
  #5 (permalink)  
Alt 19-03-2008, 21:31
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von $_Baker
Wenn keine Verbindungskennung bei den Mysql-Funktionen angegeben wird, wird automatisch die letzte genommen.
Ich denke dass darin das Problem besteht.
Genau. Aber wie kann man das unterbinden?
__________________
--> Micronax <--
Mit Zitat antworten
  #6 (permalink)  
Alt 19-03-2008, 21:36
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von Kropff
private?

gruß
peter
Müsste doch auch mit dem von mir verwendeten protected gehen, oder? und das tuts nich^^
__________________
--> Micronax <--
Mit Zitat antworten
  #7 (permalink)  
Alt 19-03-2008, 21:41
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die mysqlverbindung von den mysqlfunktionen ist offenbar global gültig.
Eine Option wäre es, PDO zu benutzen
Mit Zitat antworten
  #8 (permalink)  
Alt 19-03-2008, 21:49
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Wenn ich mir die Syntax und Benutzung von PDO anschaue.. *grml* Da bekomm ich gleich eine Abneigung dagegen^^

Gibt's denn keine andere Möglochkeit?
__________________
--> Micronax <--
Mit Zitat antworten
  #9 (permalink)  
Alt 19-03-2008, 21:53
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Die mysqlverbindung von den mysqlfunktionen ist offenbar global gültig.
also entwder reden wir aneinander vorbei oder ich verstehe nur bahnhof. also, ich setze eine variable für die resource:
PHP-Code:
class MySQL
{
  private 
$link;
  ...

dann baue ich die verbindung auf und die resourcen-kennung wird gesetzt:
PHP-Code:
$this->link mysql_connect (...) 
und dann lasse ich abfragen nur mit entsprechender kennung zu:
PHP-Code:
public function doQuery($query)
{
  if (
is_resource ($this -> link))
  {
    
$result mysql_query(...);
  } 
da die variable auf private gesetzt ist, kann die resourcen-kennung nur innerhalb der klasse gesetzt und genutzt werden.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #10 (permalink)  
Alt 19-03-2008, 21:56
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Jopp, genauso sollte es sein. Man kann diese Resource auch nicht direkt außerhalb der Klasse nutzen. Das Problem ist: Wenn man außerhalb der Klasse ein Query durchführt aber keine spezifische Resource angibt.. wird die letzte verwendet.. und wenn diese eben die der Klasse ist.. kann man diese uneingeschränkt benutzen. -> schlecht..
__________________
--> Micronax <--
Mit Zitat antworten
  #11 (permalink)  
Alt 19-03-2008, 22:05
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

und wenn man nach jeden query die verbindung trennt?
PHP-Code:
public function doQuery($query)
{
  if (
is_resource ($this -> link))
  {
    
$result mysql_query(...);
    
mysql_close (this -> link);
  }

Zitat:
Wenn man außerhalb der Klasse ein Query durchführt aber keine spezifische Resource angibt.. wird die letzte verwendet
ich verstehe ehrlich gesagt nicht ganz den sinn. offenbar willst du keine sql-abfragen innerhalb deiner anwendung zulassen, die nicht über deine klasse läuft. richtig?

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #12 (permalink)  
Alt 19-03-2008, 22:10
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Du meinst, die doQuery() soll beim Aufrufen verbinden, den query ausführen und dann wieder closen?

Zitat:
ich verstehe ehrlich gesagt nicht ganz den sinn. offenbar willst du keine sql-abfragen innerhalb deiner anwendung zulassen, die nicht über deine klasse läuft. richtig?
Das wird die Account-Klasse mit sämtlichen Benutzer- und Kundendaten. Nur die Klasse mit ihren Funktionen, die auf Sicherheitslücken getestet ist und nur bestimmte Vorgänge mit bestimmten Rechten ausführen kann, darf Zugriff zu diese Datenbank haben. Sprich es ist ohne das komplexe Password oder sonstige MySQL-Hacks nicht möglich, z.B. per Injection oder sonst was Userdaten auszuspähen oder zu ändern.. Und Sicherheit ist mir sehr wichtig.

lg

Fabian
__________________
--> Micronax <--
Mit Zitat antworten
  #13 (permalink)  
Alt 19-03-2008, 22:16
$_Baker
 Member
Links : Onlinestatus : $_Baker ist offline
Registriert seit: Feb 2008
Beiträge: 220
$_Baker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Und wenn du dir eine Klasse erstellst, die PDO "extended" ?//zwecks Übersichtlichkeit

Könnte mir vorstellen, das ein Neuverbinden bei jedem Query sehr... performancelastig ist
Mit Zitat antworten
  #14 (permalink)  
Alt 19-03-2008, 22:40
micronax
 Registrierter Benutzer
Links : Onlinestatus : micronax ist offline
Registriert seit: Jan 2006
Beiträge: 602
micronax ist zur Zeit noch ein unbeschriebenes Blatt
micronax eine Nachricht über MSN schicken micronax eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von $_Baker
Und wenn du dir eine Klasse erstellst, die PDO "extended" ?//zwecks Übersichtlichkeit

Könnte mir vorstellen, das ein Neuverbinden bei jedem Query sehr... performancelastig ist
Das könnte gut sein, ja.. Mh... wenn ich mittels PDO zu MySQL verbinde.. wirft mir das Ding vor, das die Treiber fehlen.. Ein Blick in die phpinfo sagt mir, das ich wirklich nur die für sqllite habe.. Also muss ich jetz ma rausfinden, wie ich die nachinstallieren kann..
__________________
--> Micronax <--
Mit Zitat antworten
  #15 (permalink)  
Alt 19-03-2008, 23:08
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von micronax

Das wird die Account-Klasse mit sämtlichen Benutzer- und Kundendaten. Nur die Klasse mit ihren Funktionen, die auf Sicherheitslücken getestet ist und nur bestimmte Vorgänge mit bestimmten Rechten ausführen kann, darf Zugriff zu diese Datenbank haben. Sprich es ist ohne das komplexe Password oder sonstige MySQL-Hacks nicht möglich, z.B. per Injection oder sonst was Userdaten auszuspähen oder zu ändern.. Und Sicherheit ist mir sehr wichtig.
Hahaha ... ist ja ultra ulkig ... überlege doch mal ... wie kann man angreifen? Über inkomming datas, richtig? Und deine Anwendung behandelt auch inkomming datas, also wo soll denn was sicher sein, wenn du inkomming datas ungeprüft durch lässt ... du schraubst an der falschen Stellen! Das was du machen sollst, ist inkomming datas genau unter der Lupe nehmen bevor du irgendwas damit machst. Was nützt dir denn den Schrott mit der nicht zugreifbaren Verbindungsresource, wenn du doch dann selbst aufbaust, um selbst die User-Eingabe zu verarbeiten ... hahaha ist echt amüsant hier.
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

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 02:58 Uhr.