2016-07-26 10 views
-1

Ich versuche ein Login-Portal zu machen, das zu zwei verschiedenen Seiten führt, die Verbindung sollte nach dem Benutzer führen, es ist das Problem, egal welcher Benutzername ist so lange eingegeben, wie es in der Datenbank ist, führt es zu der letzten Position auf Code geschrieben, ich weiß nicht, was falsch sein könnte:Ein Login um zwei verschiedene Seiten zu zwei verschiedenen Benutzern zu führen

<?php 
// connection to host and database 
$host="localhost"; 
$username="dbusername"; 
$password="dbpass"; 
$db_name="dbname"; 
$tbl_name="members"; 

// connection 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

//username and password sent from 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

//escape strings and stripslashes 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
$result=mysql_query($sql); 

//to count tables 
$count=mysql_num_rows($result); 

// **no matter the user it logs in, they will land in page2.php** 
if($count==1){ 
    ($myusername == 'user1'){ 
     header('location:page1.php'); 
} 
elseif($myusername == 'user2'){ 
    header('location:page2.php'); 
} 
else { 
    echo "wrong username or password"; 
} 

Eine andere Sache, die auf geht ist, dass ich nicht sicher verbinden können, um entweder page1.php oder page2.php durch eine session_start();, da es sich nicht einloggen muss, um die Seite zu betreten, es erfordert nur, den Link zu kennen, das ist, was ich am Anfang von page1.php schreibe, bevor der html startet:

<?php 
session_start(); 
if(!$myusername == 'user1'){ 
    header("location:main_login.php"); 
} 
?> 

Jede Rückmeldung würde sehr geschätzt werden. Vielen Dank.

+0

gibt es einen Fehler nach if ($ count == 1). – Dave

+0

Korrigieren Sie zuerst die Bedingung, die Sie geschrieben haben ($ myusername == 'user1') .. Sie haben vergessen hinzuzufügen. If .. – sAcH

Antwort

0

Warum fördern wir gute Vertiefung des Codes:

if($count==1) 
{ 
if ($myusername == 'user1') // you forgot an if here 
{ 
    header('location:page1.php'); 
} 
else if ($myusername == 'user2') 
{ 
    header('location:page2.php'); 
} 
else 
{ 
    echo "wrong username or password"; 
} 
}//another closing bracket here 
0

In page1.php, wie Sie die $myusername Variable Sie initialisieren?

Sie sollten zuerst einige Beispiele für eine einfache Anmeldung ausprobieren. Es scheint, Sie folgen this, aber ich glaube

a. Dieses Beispiel ist schlecht.

b. Sie bearbeiten den Code, ohne die dahinter stehende Logik zu verstehen.

Bitte lesen Sie die Sitzungsbeispiele unter w3school oder php .

Login-Seite

if (isset($_REQUEST["username"])) { 
    /* 
    usename & password verification here 
    you need to set $_SESSION["username"] in this code 
    */ 

    if ($_SESSION["username"] == "user1") { 
    header("Location: page1.php"); 
    } else if $_SESSION["username"] == "user2") { 
    header("Location: page2.php"); 
    } 
} else { 
    /* login form here */ 
} 

page1.php

if (!isset($_SESSION["username"])) { 
    header("Location: login.php"); 
} else { 
    /* content of page 1 here */ 
} 

page2.php

if (!isset($_SESSION["username"])) { 
    header("Location: login.php"); 
} else { 
    /* content of page 2 here */ 
} 
+0

Um die Seite nach der korrekten Eingabe der Sitzung aufrufen zu lassen, verwende ich 'if (! _ $ Myusername == 'user1') {"header (" location: main_login.php ")}' aber wenn Sie den Link von page1.php haben, greifen Sie von überall darauf zu, ohne dass Sie sich einloggen müssen. –

0

Keine Notwendigkeit, die Auflösung zu zählen Ults wirklich, wie Sie das Skript unabhängig umleiten müssen. Also, je nach 'Benutzername', Umleitung auf eine bestimmte Seite oder eine Fehlerseite.

switch ($myusername) { 

    case 'user1': 
     $redirectPage = 'page1.php'; 
     break; 

    case 'user2': 
     $redirectPage = 'page2.php'; 
     break; 

    default: 
     $redirectPage = 'error.php'; 
} 

header("Location: $redirectPage"); 
exit; 
+0

Großartig, dies führt zu jedem Benutzernamen um eine Seite jeder aber das Passwort wird irrelevant, wenn Sie den Benutzer kennen, können Sie auf eine Art und Weise wechseln, die der Benutzer mit seinem jeweiligen Passwort übereinstimmen muss? –

+0

Dann muss jede "Seite" überprüfen, dass der aktuelle Benutzer Zugang zu dieser bestimmten Seite hat - oder umleiten. – MaggsWeb

Verwandte Themen