Verschiedene Ausgabe je nach User?

fototec

Grünschnabel
Hallo ihr Lieben,

ich habe ein Problem mit meinem Script :(

Ich möchte gerne das Gäste auf der Website bestimmte links sehen, regestrirte User wiederum noch zusätzliche Links aber ein User z.B. der ,,Hans" noch einen weiteren Link ...
hab hier mal den Teil der funktioniert..

PHP:
<?php

session_start();
require_once 'dbconnect.php';

   if( isset($_SESSION['user']) ) {
                       
           $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
           $userRow=mysql_fetch_array($res);           
           
echo"       
           
           <a class=\"rubrik\" href=\"javascript:void(0)\">".$userRow['userName']."</a>


   <a href=\"S1.php\" target=\"anzeige\">S1</a>
   <a href=\"S2.php\" target=\"anzeige\">S2</a>
   

   ";   
   
}else{
   
  echo "
   
   <a class=\"rubrik\" href=\"javascript:void(0)\">Gast</a>
   
    <a href=\"startseite.php\" target=\"anzeige\">Startseite</a>
   <a href=\"login.php\" target=\"anzeige\">Login/Registrieren</a
    ";
}

?>

Der ,,Gast" sieht also nur die Startseite und die Loginseite.. Der beliebige eingelogte ,,User" dann die Links
S1 ud S2...

Nun mein Problem, der bestimmte User ,,Hans" soll zusätslich zu Link S1 und S2noch den Link S3 sehen...
Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt und jemand könnte mir helfen;)

Danke und Grüße fototec
 
Hi

ich empfehle dringend, eine aktuelle PHP-Version zu verwenden. Zurzeit wirst du nicht nur einfach gehackt, sondern schreibst auch Code der nach einem Update gar nicht mehr funktioniert.

Zum Thema Hacken, du hast auch in deinem Code ein paar der (Top10-) Probleme ... um einen Beitrag von vor ein paar Tagen zu zitieren:
Zu den bisher erwähnten Probleme (aber beachten, dass das nur die bisher bekannten sind, es kann noch viel mehr geben):

Die mysql_ - Funktionen gibt es nicht mehr (die Datenbank Mysql schon, aber die gleichnamigen Funktionen in PHP nicht). Ersatz sind entweder Funktionen namens mysqli_... die relativ ähnlich zu verwenden sind (aber nicht ganz gleich, weil zumindest ein großes Problem der alten Funktionen ohne weitere Parameter nicht lösbar gewesen wäre), oder die PDO-Klasse. Wie das verwendet wird ist leicht findbar, bei Bedarf gern mehr Details.

In beiden Fällen auch aufpassen, möglichst nie PHP-Variablen direkt in den SQL-String einzufügen. Das ist als SQL-Injection bekannt und eins der zwei häufigsten Sicherheitsprobleme in PHP. Kurzbeschreibung:
Code:
query('SELECT * FROM benutzer WHERE name="$dername" ');

Ein paar mögliche Werte für $dername, und die daraus resultierende Abfrage:

Hans
query('SELECT * FROM benutzer WHERE name="Hans" ');

Kurt
query('SELECT * FROM benutzer WHERE name="Kurt" ');

" OR "1"="1
query('SELECT * FROM benutzer WHERE name="" OR "1"="1" ');
Die letzte Abfrage findet alle Benutzer, bei denen entweder der Name leer oder 1 gleich 1 ist, und das sind alle Benutzer. Also, mit einem gezielt seltsamen Variablenwert hat man plötzlich die Art der Abfrage verändert. Wenn dieser Variablenwert zB. aus einer Formulareingabe kommt, oder aus einem Cookie, oder zig andere Möglichkeiten außerhalb vom Server, kann damit jeder beliebig SQL-Anweisungen verändern. Logins umgehen, die ganze Datenbank leeren, möglich ist damit viel.
Abhilfe: prepare: Platzhalter und dann die Werte extra getrennt vom SQL-String übergeben. Siehe zB. https://stackoverflow.com/questions...a-pdo-object-for-a-parameterized-select-query

Das zweite der zwei häufigsten PHP-Sicherheitsprobleme: XSS. In der einfachsten Form: Ein Benutzer liefert irgendwelche Daten, die anderen Benutzern später auch angezeigt werden können. Egal ob ein Beitrag im Forum, der eigene Benutzername, oder andere Sachen.
Am Beispiel Benutzername beim Registrieren:
Vorwissen 1: Fett geschrieber Text in HTML geht zB. so, nur als Erinnerung:
Code:
<span style="font-weight:bold;">Hier der Fette Text</span>
Vorwissen 2: Die Zeichen < und > (und auch weitere) haben in HTML ja eine spezielle Bedeutung. Wenn man aber zB. <> einfach als Text anzeigen will, und es nicht als HTML-Steuerding verstanden werden soll, muss man solche Platzhalter verwenden:
Code:
&lt; &gt;
So, Benutzername beim Registrieren: Wenn ich Hans eingebe, wird das eben in der DB abgespeichert, und wenn sich dann jemand die Benutzerliste oder so anschaut sendet der Server das Wort Hans zu diesem anderen Benutzer. Bisher kein Problem. Wenn ich aber
Code:
<span style="font-weight:bold;">Hans</span>
als Benutzernamen eingebe? ... Sobald sich das ein anderer Benutzer anschaut interpretiert der Browser das als fett geschriebenes Hans, statt nur Hans, und damit habe ich beeinflusst wie die Seite für andere Benutzer aufgebaut ist. Das echte Problem ist dann zB. der Einbau von Links auf Seiten mit Malware oder illegalem Zeug, und noch viel schlimmer der Einbau von Javascript das dann bei allen Benutzern, die meinen Benutzernamen sehen, viel Schaden anrichten kann.
Prinzipielle Lösung: Bei Eingaben mit < und > stattdessen &lt; und &gt; ausgeben (und auch für die anderen wichtigen Zeichen so). Da gibts auch schon eine nette Funktion: htmlspecialchars. Also beim Registrieren kann es ruhig mit <> in die DB, aber beim Auslesen und echo'n zuerst mit dieser Funktion behandeln.
 
Guten Morgen

Vielen Dank Sheel für deine schnelle Hilfe, ich bin leider ein Neuling in Sachen PHP und werde deinen Tip beherzigen und das alte Script mal verwerfen..,
Ich schau mal ob ich es so hinbekomme..

Danke und Grüße fototec
 

Neue Beiträge

Zurück