Variable in PHP UNSICHTBAR übergeben

  • #1
T

Tobsen086

Bekanntes Mitglied
Themenersteller
Dabei seit
01.11.2003
Beiträge
72
Reaktionspunkte
0
Hallöchen!

Es geht um folgende Seite:
http://www.victoria-seelow.de/fussball/jugend/f-jun/0708/kader.php
Wenn man dort bei den Namen im Mittelfeld drüber fährt, sieht man, dass da Links sind (weiß, dass sie im Moment schlecht formatiert sind, aber ums optische kümmere ich mich, nachdem das technische funktioniert). Wenn man auf diesen Link klickt, kommt eine neue Seite, wo später weitere Details über den Spieler erscheinen sollen.

Klappt so, wie es jetzt ist ganz super, hat nur einen riesigen Nachteil. Im Moment, übergebe ich die Variable über die URL so:
Code:
<?php
while($row = mysql_fetch_array($result)) 
{
	 echo 	 <a href=\profil.php?user_id=. $row['usr_id']. \ class=\kader2\>. $row['usr_last_name']. , . $row['usr_first_name']. </a>
	 <div class=\kader3\>. mysqldatetime('d.m.y', $row['usr_birthday']). </div>
;
}
?>

Die usr_id ist die wichtige Variable. Nur leider kann man ja nun einfach oben in der Adressleiste eine andere Zahl angeben und somit quasi meine ganze Datenbank (auch wenn es viel Arbeit ist) auslesen.
Auch die Alternative mit POST und einem hidden-field kann ich fast ausschließen, da man dann ja den Quelltext lesen kann und dann einfach den oben angegeben Link einfach nachbauen kann, oder?!?
Ich hatte auch überlegt, die übergebene Variable einfach zu überprüfen (in_array ?). Nur leider weiß ich nicht, wie das geht, jedenfalls nicht genau. Deshalb erstmal diese allgemeine Anfrage, dass ihr mir vielleicht einen Tip geben könnt, in welche Richtung ich weiter forschen/fragen muss. ;)

Als Hinweis sollte ich wohl noch dringen erwähnen, dass ich ein absoluter PHP-Anfänger bin.
 
  • #2
Mmmmmh,

wo liegt das Problem, wenn die Besucher auf den __Mittelfeldspieler__ klicken bekommen sie doch eh die Daten geliefert, ob nun deine Variable geschützt ist oder nicht, also warum sollte man sich die Mühe machen und den Link __manipulieren__ wenn das das Ergebniss das gleiche ist, versteh ich nicht ganz ;)

Ich schlage dir vor dich mal mit dem Thema SQL-Injection zu befassen, Tante Google weiß B'scheid ;)
http://www.google.de/search?q=sql+i...e=UTF-8&rlz=1B3GGGL_deDE221DE221&aq=t

Moin moin
 
  • #3
Hallo!

Das Problem ist nicht der Mittelfeldspieler. Das ist richtig. Seine Daten sollen ja angezeigt werden. Aber man könnte ja einfach in der URL eine andere ID eingeben und dann würde man auch zu einem anderen Mitglied die eingetragen Sahcen sehen (und man soll eben nicht jedes Mitglied auslesen können).
Ich schau mir mal deinen Link genauer an.
 
  • #4
Jo, dann musst du in deiner User-Tabelle ein Feld group_id einfügen welcher User was sehen darf.

z.B.

Admins = 2 (dürfen alles sehen)
Mitglieder = 1 (dürfen etwas mehr sehen als andere)
gemeines Fussvolk = 0 (dürfen kaum was sehen)

Regeln kannst du dann die ganze Sache über die Session.
Wer nicht eingeloggt ist ( 0 ) bekommt auch nur das zu sehen was ihm zusteht.

Eine SQL-Abfrage könnte dann in etwa so aussehen:

Code:
<?php
$gid= ($_SESSION['group_id']) ? $_SESSION['group_id'] : 0;
$query =->SELECT * FROM user_tbl WHERE user_id='. intval($id) .' AND group_id <=->. $gid.'';
?>

Im Klartext:

User XYZ mit der user_id=123 ist in der Gruppe -Mitglieder- (Gruppe 1).
Wird jetzt über die Adressleiste von einem -nicht eingeloggten- User (Gruppe 0) nach der user_id 123 gefragt bekommt er kein Ergebniss da ja in seiner Session group_id=0 definiert ist zum Anschauen dieses Eintrags aber mind. group_id=1 benötigt wird.
 
Thema:

Variable in PHP UNSICHTBAR übergeben

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben