2010-12-15 27 views
3

Ich habe ein Login-Formular und ich habe meine Website so gestaltet, dass jeder Benutzer sein eigenes Dashboard hat.Lasten von if's, ist es in Ordnung?

Nach der Anmeldung, überprüfe ich, ob

if($_POST['username']=="ryan") 
{ 
redirect to ryan;s dashboard 
} 
if($_POST['username']=="jpn") 
{ 
redirect to jpn;s dashboard 
} 

und so weiter for1500 Benutzernamen. Ist es in Ordnung?

+1

Es ist in Ordnung, wenn Sie jedes Mal, wenn Sie einen neuen Benutzer erhalten, jede Menge zusätzliche Arbeit geben wollen. Wie lauten die Namen dieser Dashboards und hängen sie mit den Namen der Benutzer zusammen oder haben Sie eine Nachschlagetabelle mit Benutzernamen für Dashboards? –

+0

bezogen auf die Namen der Benutzer. – ryan

+0

Es wird natürlich funktionieren. Denken Sie daran, dass Sie jedes Mal Code hinzufügen müssen, wenn sich ein neuer Nutzer in Ihrer App anmeldet ... Vorausgesetzt, Sie verwenden besser etwas wie 'redirect_to ($ _ POST ['Benutzername']);' und haben eine Funktion zu – acm

Antwort

4

Geben Sie die Namen und die Dashboard-URLs in eine Datenbank ein. Erstellen Sie eine Abfrage, um die URL basierend auf dem geposteten Namen und der Weiterleitung zu suchen. Sie werden 4 Zeilen Code anstelle von 6000 haben.

+0

hey, das ist eine großartige Idee. Nachdem ich eine Abfrage ausgeführt habe und nach einem Benutzer suche und den Link von der db abrufe, wie leite ich den Benutzer um?Sollte ich die Header-Funktion von PHP verwenden? – ryan

+0

Sie könnten es so machen, aber meine Antwort ist viel sicherer, da Sie auch ein Passwort anfordern. Sie haben auch nur einmal den Dashboard-Code (in einer Datei), laden aber nur die Benutzerdaten. Sie können die Sitzungslänge an Ihre Bedürfnisse anpassen. Denken Sie daran, dass der Standardwert 15 oder 20 Minuten beträgt, bevor der Benutzer abgemeldet wird. Ich meine, mit Dans 'Methode, wenn ein Benutzer another Benutzernamen kennt, könnten sie so einfach auf ein anderes Benutzer-Dashboard zugreifen. – ClarkeyBoy

+0

Hatte noch einen anderen Gedanken zu diesem Thema ... erstens müsste der Code, der allen Dashboards gemeinsam ist, 1500 Mal dupliziert werden (vorausgesetzt, es sind verschiedene Seiten) und häufige Änderungen müssten 1500 mal dupliziert werden ... zweitens was passiert, wenn sich die Dashboard-URL "pattern" ändert. Zum Beispiel /dashboard/name.htm nach /dash/name.htm? Das ist eine HÖLLE von vielen Änderungen, die mit einem einfachen Suchen/Ersetzen in einer Datenbank nicht gemacht werden können. Das wäre unnötige Arbeit, wenn es nur 1 URL für alle ist, eine Änderung, wenn sich die URL ändert. – ClarkeyBoy

1

Nein. Wenn Sie wirklich zwischen 1500 verschiedenen Routinen wählen mussten, sollten Sie etwas wie die strategy pattern verwenden.

In Ihrem Fall ist es jedoch dieselbe Routine (Laden des Benutzer-Dashboards) mit anderen Daten. Die Verfahren sollten identisch sein. Wie kommt es, dass Sie einen anderen Code benötigen, um das Dashboard jedes Nutzers zu laden?

1

Denken Sie es ein Problem in Ihrem Design ist ... Dinge wie diese sollte nie :)

Sie passieren sollte ein Skript, das den Benutzer Armaturenbrett holt und nur die Benutzer-ID an das Skript senden!

+0

Denken Sie, das ist keine richtige Antwort. – acm

+0

Es macht viel mehr Sinn als andere Leute versuchen, den Code zu einer fehlerhaften Architektur passen – symcbean

0

Sie sollten auf 1 Dashboard umleiten. dann diese Werte in Armaturenbrett verwenden

login php .... 
if($_POST['username']) 
{ 
redirect to dashboard 
} 


dahsboard php 

welcome <?=$_POST['username']?>, 
... 
.. 
user spesific things.. 

wenn Sie Ihren Code für 1000 Benutzer versuchen Sie müde sein werden ..

1

Erstens, anstatt if Aussagen mehrere tun, dass die Art und Weise, würde ich empfehlen die Verwendung von switch Anweisung wie folgt:

switch($_POST['username']) 
{ 
    case "ryan" : //redirect to ryan;s dashboard 
    case "jpn" : //redirect to jpn;s dashboard 
} 

Zweitens würde ich nicht tun, wird empfohlen, dass überhaupt jemand Armaturenbrett zu umleiten. Sie sollten ein gemeinsames Dashboard und eine Tabelle mit den Benutzernamen und Details zum Dashboard haben. Dann rufe die einzelne Funktion mit dem Benutzernamen auf.

0

Sie können den Benutzernamen in einer Sitzungsvariablen speichern und das Benutzer-Dashboard basierend auf der Sitzungsvariablen laden. Angenommen, Sie möchten auch ein Passwort anfordern, sollten Sie sowohl den Benutzernamen als auch das Passwort speichern. Überprüfen Sie, ob sie korrekt sind, und laden Sie das Dashboard für diesen bestimmten Benutzer.

Wenn sie beispielsweise zu www.your-domain.com/jpn.html umgeleitet werden, ist dies unsicher, da a) sie von Suchmaschinen indiziert und in Suchergebnissen angezeigt werden können und b) wichtiger noch alle Benutzer Sie können auf alle anderen Dashboards zugreifen, indem Sie einfach die URL des Benutzers eingeben.

+0

erstaunliche Idee. Ich speichere bereits Benutzername und Passwort in einer Sitzungsvariablen. Wie kann ich darauf umleiten? – ryan

+0

Sie leiten einfach zu www.your-domain.com/dashboard.php um und laden die Benutzerdaten basierend auf den Werten, die zB in $ _SESSION ["username"] 'und' $ _SESSION ["password"] '' gespeichert sind . Ich bin mir nicht sicher, ob nur der Benutzername und das Passwort für diese Variablennamen sicher sind, da ich selbst kein PHP-Experte bin, aber Sie möchten sie vielleicht als etwas nennen, das von Hackern nicht vorhersehbar ist. – ClarkeyBoy

+0

Wie mache ich die Daten für verschiedene Benutzer unterschiedlich? Entschuldigung für solch ein dummes Fragen – ryan

Verwandte Themen