hab den eh drauf, aber ...
Sorry, the IP address 127.0.0.1 is not public. For security reasons, validating resources located at non-public IP addresses has been disabled in this service.
naja muss ichs morgen von der arbeit machen
david
hab den eh drauf, aber ...
Sorry, the IP address 127.0.0.1 is not public. For security reasons, validating resources located at non-public IP addresses has been disabled in this service.
naja muss ichs morgen von der arbeit machen
david
tja
mein source besteht aus smarty templates, javascript files, php files etc.
Wenn ich die w3c validation machen will, dann kann ich dem validator nur schwer sagen welche javascript aktionen er durchführen soll damit er an die stellen meiner site kommt wo ich eine validation will.
abspeichern der site mit anschliessendem uploa dauf die w3c site geht auch nicht, da mein browser den source verändert. zB macht firefox aus <meta ... /> => <meta ...> entfernt also das schliessende zeichen.
gibts dafür ne lösung?
david
Ja so schauts bei mir auch aus und wird wohl auch so bleiben weil ich sonst nie fertig werd.
In Zukunft werd ich mir aber wohl mal PEAR::LiveUser anschaun
david
Na irgendwas halt dass die neu Erstellung der Objekte forciert. Klarerweise muss es auch zur Laufzeit gehen. Aber wie gesagt es ist nicht so kritisch und wenn was unvorhergesehenes passiert dreh ich den Usern den Server einfach ab
david
Naja das is schon klar aber dafür gibts doch elegantere Methoden, irgendein force reconstruct Dingens eingebaut aber das ist nicht so notwendig.
Denk mir nur dass das doch Performance braucht wenn man dauernd das Objekt neu macht oder?
Im Prinzip kann es mir wurscht sein funktionieren muss es =)
Danke für den Input
David
wos? Macht wenig Sinn was du da sagst, aber momentan erstelle ich das Objekt eh jedesmal neu weil wenn ich das Objekt direkt in einer SESSION Variable speichere (also ohne serialize/unserialize) dann bekomm ich nen Fehler (Irgendwas mit INCOMPLETE OBJECT blabla) wenn ich eine Methode des Objekts aufrufe.
david
mein smarty template produziert folgenden code
<label><input name="id[]" value="admin" checked="checked" type="checkbox">admin</label><br>
<label><input name="id[]" value="ressortleiter" checked="checked" type="checkbox">ressortleiter</label><br>
<label><input name="id[]" value="member" type="checkbox">member</label><br>
mit javascript sollte ich ja auf die einzelnen checkboxen über das name attribut zugreifen können, nur wie? wird aus dem id[] ein array?
alle meine versuche auf id zuzugreifen enden mit demjavascript error
"id is not defined"
david
und falls wem fad is, ich versteh ned ganz worin in html der unterschied zwischen name und id besteht
Jo hab ich vor kurzem auch gelesen dass im Prinzip die Daten einer Session serialisiert abgelegt werden, hab ich aber zu dem Zeitpunkt des Schreibens noch nicht gewusst.
david
ich nehm an wenn du das pdf über so nen virtuellen pdf drucker druckst und beim drucken eben das einstellst sollte es gehen
Kannst dir ja mal PEAR anschaun
Naja, bei mir hat jede Seite Bereiche die unterschiedliche Rechte benötigen.
Ich will nicht Seitenzugriffe mit Rechten versehen sondern Aktionen. Wie gesagt ich hatte schon ein paar Lösungsansätze aber die sind irgendwie nicht sonderlich vernünftig/sauber/...
Momentan schau ich mir die PEAR::LiveUser an
Aber das schaut auch sehr nach einarbeiten aus
http://www.gvngroup.be/doc/LiveUser/index.php
david
Ich tu seit Tagen rum und komm auf keinen Zweig.
Problemstellung: Mehr oder weniger CMS wobei die jeweiligen Benutzergruppen verschiedene Dinge tun können.
Sowohl die Struktur des ganzen als auch die Abfrage der Rechte bereitet mir Probleme und alle "Lösungen" die ich so ausarbeite stellen mich nicht zufrieden.
Das Problem muss ja bereits existieren und x-mal gelöst worden sein.
david
naja solange der user eingeloggt ist wird dauernd auf das objekt User zugegriffen und damit ich es nicht bei jedem seitenaufruf neu erstellen muss, dachte ich beim ersten mal wird es erstellt und in einer session variable serialisiert abgespeichert und damit arbeite ich dann. nicht klug?
david
ps:
pseudo code
if (login(username, password) {
$u = new User(username); //holt restliche daten von datenbank
$_SESSION['SERIALIZED_USER'] = serialize($u);
}
oder so
User loggt ein.
UserDaten(inklusive seiner Rechte auf der Website) werden von Datenbank geladen.
User wird serialisiert und serialisierte Daten in $_SESSION gespeichert
stellt obige Vorgehensweise ein Sicherheitsrisiko dar?
david
ab php 5 sollte man für den constructor
public function __construct()
verwenden und nicht mehr den klassennamen, frag mich jetzt nicht wieso.
nachlesen auf php.net
Mann
Bilder
bin ja zur Unterhaltung hier
hum.
das objekt wird bei jedem seiteaufruf (also in meinem fall dann wenn ich einen ajax request schicke) neu instantiiert, die if abfrage in
public static function instance() {
if (!is_object($dbc)) {
$dbc = new DatabaseController();
}
return $dbc;
}
ergibt scheinbar immer true (also dass es sich um kein objekt handelt)
hab grad keinen php5 server verfügbar um das nochmals zu testen.
david
hatte vor allem kein php5 aber habs nun lokal installiert (unet.univie rennt nur php 4)
Andre Frage (SQL Injections wären gelöst)
// escape special characters to prevent SQL Injection
public function quote_smart($query) {
// Quote if not a number or a numeric string
if (!is_numeric($query)) {
$query = "'" . mysql_real_escape_string($query, $this->db) . "'";
}
return $query;
}
Ich scheitere ein wenig an folgendem:
Wenn ein User zum ersten mal auf die Seite kommt, dann wird ne Session gestartet.
Ich würde gern ein Objekt DatabaseController verwenden welches den Zugriff auf die MySQL Datenbank kapselt.
Dieses soll ein Singleton werden, also einmal erzeugt und dann immer nur die Instanz geholt, aber irgendwie funktioniert das nicht so wie ich will.
class DatabaseController {
private $host="xxx";
private $user="xxx";
private $password="xxx";
private $db_name="xxx";
private $db;
private static $dbc;
private function connect() {
$this->db = @mysql_connect($this->host, $this->user, $this->password)
or die('Could not connect to MySQL Database: ' . mysql_error());
@mysql_select_db($this->db_name, $this->db)
or die('Could not select MySQL Database: ' . mysql_error());
}
// execute query and return array with values
public function exec_query($query) {
$result = mysql_query($query, $this->db)
or die('MySQL ERROR: ' . mysql_error());
if($result === TRUE) {
// INSERT, ... Operations return a boolean
// just return the result of that operation
return $result;
} else {
$i = 0;
$ret = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$ret[$i] = $row;
$i++;
}
}
// Free resultset
mysql_free_result($result);
return $ret;
}
protected function __construct() {
$this->connect();
}
public static function instance() {
if (!is_object($dbc)) {
$dbc = new DatabaseController();
}
return $dbc;
}
public function __destruct() {
unset($this->rights);
}
}
Alles anzeigen
und im Code mach ich ein include auf das file und dann zB
nö, nicht wirklich.
Hatte aber das Wort schon im Hinterkopf und hätte danach gegoogelt?
Würde mich aber auch nicht wehren wenn du mir ein paar Sätze darüber bzw. was man dagegen tun kann schreibst.
david