. .
pragmaMx Support Forum 20 Juni 2013, 10:31:32 *
Willkommen Gast. Bitte einloggen oder registrieren.


Einloggen mit Benutzername und Passwort
News:
Brauchen Sie Hilfe? Bitte nutzen Sie unsere Suchfunktion bevor Sie Beiträge oder Fragen ins Board schreiben! Viele Fragen wurden bereits gestellt und beantwortet. Danke!
 
Übersicht Hilfe Forenregeln / Boardrules
 
Suche
Seiten: 1 [2]  Alle   Nach unten
Drucken
Autor Thema: Usersuche  (Gelesen 20177 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
Andi
Administrator
******
Offline Offline

Geschlecht: Männlich
Beiträge: 18.602

Andi


WWW
« Antworten #20 am: 16 Juli 2007, 23:26:01 »

So, das Script ist installiert und wurde aufgerufen. Bei eingeschaltetem Debugmodus ist die Seite erstmal voll mit Fehlermeldungen:
Zitat
Notice: Undefined variable: sitename in /modules/Usersuche/index.php on line 49
Notice: Undefined index: bday_day in /modules/Usersuche/index.php on line 95
Notice: Undefined index: bday_month in /modules/Usersuche/index.php on line 106
Notice: Undefined index: user_sexus in /modules/Usersuche/index.php on line 128
Notice: Undefined index: user_sexus in /modules/Usersuche/index.php on line 130
Notice: Undefined index: user_famstatus in /modules/Usersuche/index.php on line 139
Notice: Undefined index: user_smoke in /modules/Usersuche/index.php on line 163
usw....

Notice: Undefined variable: sitename in /modules/Usersuche/index.php on line 49
$sitename ist eine globale Variable aus der config.php, sie muss in der Funktion global verfügbar sein.
also
Code: [Select]  
global $sitename;
in der Funktion init() zufügen

Notice: Undefined index: bday_day in /modules/Usersuche/index.php on line 95
Notice: Undefined index: bday_month in /modules/Usersuche/index.php on line 106
Notice: Undefined index: user_sexus in /modules/Usersuche/index.php on line 128
usw....
Diese Array-Indexe sind nur vorhanden, wenn das Formular über Post abgesendet wurde und sich selbst wieder aufruft. Es müsste also vor Verwendung der Variablen-Indexe geprüft werden, ob diese überhaupt vorhanden sind. Hier eigentlich nur unschön, aber sauberes Coding ist das nicht und kann unter anderen Umständen zu schweren Sicherheitslücken führen. Das sollte man sich erst garnicht angewöhnen.
Also z.B. diese Zeile:
Code: [Select]  
<option value='0'<? if($_POST["user_sexus"] == "0") echo " selected"; ?>>nicht angegeben</option>
wie folgt abändern
Code: [Select]  
<option value='0'<? if(isset($_POST["user_sexus"]) && $_POST["user_sexus"] == "0") echo " selected"; ?>>nicht angegeben</option>
Ich habe jetzt, dass es schneller geht, folgende Konstrukt in die Funktion eingabe() eingefügt:

Code: [Select]  
if(empty($_POST['uname'])) $_POST['uname'] = '';
if(empty($_POST['realname'])) $_POST['realname'] = '';
if(empty($_POST['user_from'])) $_POST['user_from'] = '';
if(empty($_POST['bday_day'])) $_POST['bday_day'] = '';
if(empty($_POST['bday_month'])) $_POST['bday_month'] = '';
if(empty($_POST['bday_year'])) $_POST['bday_year'] = '';
if(empty($_POST['user_partneralter1'])) $_POST['user_partneralter1'] = '';
if(empty($_POST['user_partneralter2'])) $_POST['user_partneralter2'] = '';
if(empty($_POST['user_sexus'])) $_POST['user_sexus'] = '';
if(empty($_POST['user_famstatus'])) $_POST['user_famstatus'] = '';
if(empty($_POST['user_heigh1'])) $_POST['user_heigh1'] = '';
if(empty($_POST['user_heigh2'])) $_POST['user_heigh2'] = '';
if(empty($_POST['user_gewicht1'])) $_POST['user_gewicht1'] = '';
if(empty($_POST['user_gewicht2'])) $_POST['user_gewicht2'] = '';
if(empty($_POST['user_haar'])) $_POST['user_haar'] = '';
if(empty($_POST['user_augen'])) $_POST['user_augen'] = '';
if(empty($_POST['user_smoke'])) $_POST['user_smoke'] = '';
if(empty($_POST['user_alkohol'])) $_POST['user_alkohol'] = '';
if(empty($_POST['user_piercing'])) $_POST['user_piercing'] = '';
if(empty($_POST['user_tatto'])) $_POST['user_tatto'] = '';
if(empty($_POST['user_sucht'])) $_POST['user_sucht'] = '';
if(empty($_POST['user_beziehung'])) $_POST['user_beziehung'] = '';
if(empty($_POST['user_partnerfigur'])) $_POST['user_partnerfigur'] = '';
if(empty($_POST['ausgabe'])) $_POST['ausgabe'] = '';
Das ist Geschmacksache und ist sicher besser zu machen...


So, jetzt zur eigentlichen Suchfunktion.
Grundsätzlich sollte die Usertabelle über den User-Prefix angesprochen werden. Also in die Funktion search() folgendes hinzufügen:
Code: [Select]  
global $user_prefix;
und in sämtlichen Datenbankabfragen, in denen die Usertabelle angesprochen wird den Namen der Usertabelle mit dem user_prefix anstatt dem prefix ergänzen.

Dann finden sich Konstrukte in der Art in der Suchfunktion:
Code: [Select]  
    if(!empty($_POST["uname"])){
        $sql.=" && uname LIKE '%".trim($_POST["uname"])."%'";
    }
    if(!empty($_POST["user_heigh1"])){
        $sql.=" && user_heigh > ".trim($_POST["user_heigh1"]);
    }
Der Operator && ist zwar in mysql toleriert, aber normalerweise sollte das Schlüsselwort AND verwendet werden.
Desweiteren sollten Usereingaben auf jeden Fall auf Gültigkeit überprüft werden und Sonderzeichen "escaped" werden. Bei einer Suchfunktion, in denen beliebige Strings über Formulare eingegeben werden können, ist natürlich nicht viel auf Gültigkeit zu überprüfen. Evtl. könnte man Sonderzeichen ausfiltern und die Länge beschränken. Der USername darf z.B. nur 25 Zeichen lang sein. Das ist hier jetzt aber zu komplex, um das vollständig zu behandeln.
Zum escapen der Sonderzeichen empfiehlt sich in pragmaMx die API-Funktion mxAddSlashesForSQL(). Übergabevariablen, die normalerweise nur eine Zahl enthalten dürfen, können z.B. mit intval() zwangsweise in eine Zahl umgewandelt werden.
Die oben genannten Zeilen würden dann etwa so aussehen:
Code: [Select]  
    if(!empty($_POST["uname"])){
        $sql.=" AND uname LIKE '%".trim(mxAddSlashesForSQL(substr($_POST["uname"], 0, 25)))."%'";
    }
    if(!empty($_POST["user_heigh1"])){
        $sql.=" AND user_heigh > ".intval($_POST["user_heigh1"]);
    }

Die eigentliche Datenbankabfrage, weiter unten,
Code: [Select]  
$result=mysql_query($sql);
$Anzahl=mysql_num_rows($result);
$sql=$sql." order by uname ASC limit ".$_POST["Anfangsposition"].",".$ZeilenProSeite;
$result=mysql_query($sql);
muss in pragmaMx mit der API-Funktion sql_query() erfolgen, nicht wie in dem Script mit der normalen PHP-Funktion mysql_query(). Nur so greift der volle Schutz durch das integrierte Detection System. Konsequenterweise sollten dann auch die anderen Datenbankfunktionen der pragmaMx-Datenbank-API (sql_layer.php) verwendet werden.
Auch in der Limit-Begrenzung der Datenbankabfrage lauert eine Sicherheitslücke. Die beiden Parameter Start und Anzahl für das Limit dürfen nur eine Zahl sein. Ein Hacker könnte hier durch das einschleusen von einem String die Abfrage manipulieren.

Die abgeänderten Zeilen würden dann so aussehen:
Code: [Select]  
$result=sql_query($sql);
$Anzahl=sql_num_rows($result);
$sql=$sql." order by uname ASC limit ".intval($_POST["Anfangsposition"]).",".intval($ZeilenProSeite);
$result=sql_query($sql);

Das war's erstmal grob zur Sicherheit. Ich denke da kommen jetzt sicher noch Fragen Wink


Für jeden, der das nachvollziehen will, habe ich die unveränderte Datei hier mal angehängt.
Also nicht für den Einsatz, nur zum guggen und mitmachen!!
Deswegen habe ich den Thread jetzt auch in die Coder und Bastlerecke verschoben Wink

* kopie.php (24.92 KB - runtergeladen 185 Mal.)
Gespeichert

schön´s Grüssle, Andi
Kein Support über PN, Mail oder ICQ!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!
lemming
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 495


WWW
« Antworten #21 am: 17 Juli 2007, 07:32:40 »

hy  smile,
ech stark! danke für die gute erklärung andi!

werd das script daheim jetzt nochmal überarbeiten und dann einsenden. zwecks providerwechsel hab ich grad kein dsl aber im normalfall bin ich ende der woche wieder online.

nochmal vielen dank für die gute gegenüberstellung der einzelnen kritischen punkte! bookmark!
Gespeichert

greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*
lemming
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 495


WWW
« Antworten #22 am: 28 Juli 2007, 17:56:32 »

besser spät als nie Smiley an alle die auf das modul warten. ich habs soeben Andi per email für den downloadbereich zugeschickt.

gruß,
jörg
Gespeichert

greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*
lemming
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 495


WWW
« Antworten #23 am: 28 Juli 2007, 20:49:25 »

sorry für doppelpost aber konnts nicht mehr editieren...hier kann man sichs mal anschauen:

http://www.party-calw.de/modules.php?name=Usersuche
Gespeichert

greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*
CanKan
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 280

CanKan


« Antworten #24 am: 10 August 2007, 12:19:45 »

Hallo,

danke für das super Modul  thumbup


Wenn man User sucht und ergebnisse bekommt schaut man sich irgendein Profil. Und wenn man zurück auf die Ergebnisseite klickt ist die Seite abgelaufen. Man muss dann die Seite aktualisieren damit die Ergebnisse wieder zurückkommen. Könnte man dagegen was machen damit die Ergebnisse mit dem Zurückbutton sofort erscheinen?

Und ein kleines Usersuche Block wäre aus Super mit den Suchkriterien Username Stadt alter und suche mit dem Bild z.B.  smile


Danke nochmals


MfG

CanKan
Gespeichert

Der Hund bellt, die Karawane zieht weiter.
lemming
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 495


WWW
« Antworten #25 am: 10 August 2007, 17:15:23 »

hy,

bevor jetzt hier alle fragen wo ers her hat. ich habs ihm nur mal zum testen gegeben. bitte wartet noch, bis andi oder jemand anders es für den download bereich freigeschaltet haben.

wegen dem zurück weiß ich spontan grad nichts zu.

block ist von meiner seite aus erstmal keiner geplant.

gruß,
jörg  Smiley
Gespeichert

greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*
shaky84
neu hier
*
Offline Offline

Geschlecht: Männlich
Beiträge: 13


« Antworten #26 am: 31 August 2007, 11:01:29 »

hey Leute,

sagt mal wann wird der Download denn jetzt freigeschaltet?
würde das script auch gern haben.

lg
Gespeichert
wob
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 366

wob


WWW
« Antworten #27 am: 18 Oktober 2007, 06:32:56 »

Gibt es hier schon neue Infos Huhgruebel

Gruss
Gespeichert

Ideen sind immer gut, nur diese Idee`n umsetzen ist eine andere frage :-)
lemming
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 495


WWW
« Antworten #28 am: 18 Oktober 2007, 14:20:57 »

hi wob  Smiley,

weiß nicht ob du das hier schon gelesen hast:

http://www.pragmamx.org/Forum-topic-22506-start-msg152879.html#msg152879

mehr gibts bisher nicht. sollte das nichts mehr werden mit dem freischalten, würd ichs natürlich auch so weitergeben denn bei mir läufts ohne probleme bisher! aber ich denke bischen warten lohnt sich noch.

gruß
Gespeichert

greetz,
Jörg

------------------------
Mitgliedersuche v.0.3 *new*
wob
weiss mehr
****
Offline Offline

Geschlecht: Männlich
Beiträge: 366

wob


WWW
« Antworten #29 am: 19 Oktober 2007, 06:19:02 »

Thx lemming.

Ok dann warten wir doch lieber, mal hoffen das Andi dieses die nächsten Tage schafft :-)

Gruss & Danke für deine Antwort
Gespeichert

Ideen sind immer gut, nur diese Idee`n umsetzen ist eine andere frage :-)
baraber
öfter hier
**
Offline Offline

Beiträge: 57


« Antworten #30 am: 26 Oktober 2007, 18:36:08 »

Hallo,

wie is der Stand der Dinge ? Weiss jemand was ?

Gruß

Tony
Gespeichert
Eudossi
neu hier
*
Offline Offline

Beiträge: 10


« Antworten #31 am: 16 November 2007, 19:09:19 »

Hallo,

das Modul würde mich auch brennend interessieren. Wann wird das Modul denn freigegeben bzw. besteht die Möglichkeit das Modul vom Entwickler zu bekommen?

Grüße
Eudossi
Gespeichert
breakdancer
Gast
« Antworten #32 am: 09 Dezember 2007, 22:59:01 »

Hallo zusammen,

ich schieb nochmal ganz lieb hoch, ist ja nun schon fast ein Monat wieder rum...  biggrin

Nur mal so, damit es nicht ganz in Vergessenheit gerät.

Liebe Grüße

Markus
Gespeichert
Chris007
öfter hier
**
Offline Offline

Beiträge: 31


« Antworten #33 am: 14 Januar 2008, 14:24:27 »

Ja als geduldiger User wobei 6. Monate hmm  gruebel

werde ich es mal auch hochschieben in der hoffnung mal zu erfahren was aus dem modul geworden ist.

Liebbe Grüße

Chris
Gespeichert
JoergK
Inventar
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 2.206

JoergK


« Antworten #34 am: 14 Januar 2008, 16:40:50 »

Hoi Wink

Die ganze Hochschieberei bringt überhaupt nichts, solange der User lemming seine Arbeit nicht erneut in die Downloads stellt. Es liegt uns zur Zeit kein derartiger Download zur Freigabe vor.

Und damit das hier nicht wieder nen endloser "Wann kommt das Modul denn endlich?" Thread wird, mach ich an dieser Stelle den Thread zu.

Sollte das Modul erneut eingestellt und auch freigegeben werden, sind evtl. auftretende Probleme sowieso in neuen Threads zu erörtern. Wink
Gespeichert

Gruß,
Jörg

Nobody is perfect ... so don't call me Nobody

Hier noch was zum Lesen und Lernen
HTML, JavaScript & CSS: SelfHTML
PHP: SelfPHP und PHP-Handbuch
MySQL: MySQL 5.1 Handbuch
Seiten: 1 [2]  Alle   Nach oben
Drucken
 
Gehe zu:  

Powered by SMF 1.1.18 | SMF © 2011, Simple Machines
design by hENNE, layout based on YAML