2012-04-05 5 views
2

Verwenden Sie this code für die Authentifizierung meiner URL.HTTP-URL-Schutz funktioniert in localhost aber schlägt auf dem Server fehl

  1. Seine adaequat in meinem localhost aber wenn ich auf den Server (GoDaddy) zu laden, sein immer wieder für die Benutzername und Passwort gefragt.

  2. Ich möchte die Kontrolle über diese Benutzernamen und Passwortfelder übernehmen und sie mit meiner Datenbank verbinden.

für diesen Code wie folgt bin mit:

$conid = mysql_connect("localhost", "root", ""); 
if(!$conid) { 
    die("sorry unable to establish a connection".mysql_error()); 
} 
echo "connected succesfully<br>"; 
mysql_select_db("passurl", $conid); 
$rr = mysql_query("select password from validate where username='$user' "); 
while($row = mysql_fetch_array($rr)) { 
    $x = $row['password']; 
} 
if($x == $password) { 
    //take into the website 
} 

so, wenn der Benutzername & Passwort vom Benutzer eingegeben werden, auf eine erfolgreiche Authentifizierung dauert es in diese Seite.

Ich benutze PHP-MYSQL, wie ich vorläufige Kenntnisse habe, bin Anfänger Programmierung.

bitte helfen Sie mir bei der Behebung der oben genannten zwei Probleme mit dem geeigneten getesteten Code.

Bearbeiten: Problem 1 arbeitet lokal und verwendet den gleichen Code wie in der Verknüpfung zur Verfügung gestellt. Problem 2 versucht, diese Felder username und password aus meiner lokalen Datenbank abzurufen, so dass die Anmeldung auf meinem lokalen Host gewährt werden kann (wenn es zu einem späteren Zeitpunkt funktioniert, nehme ich die Datenbank online).

Bearbeiten-2:

ty.php enthält Code wie

<?php 

$auth_realm = 'Access restricted'; 

require_once 'auth.php'; 

echo "You've logged in as {$_SESSION['username']}<br>"; 
echo '<p><a href="?action=logOut">LogOut</a></p>' 

?> 

<center><h1>now you see the protected content</h1></center> 

und auth.php enthält

<?php 
    $_user_ = 'test'; 
    $_password_ = 'test'; 
    session_start(); 

$url_action = (empty($_REQUEST['action'])) ? 'logIn' : $_REQUEST['action']; 
$auth_realm = (isset($auth_realm)) ? $auth_realm : ''; 

if (isset($url_action)) { 
    if (is_callable($url_action)) { 
     call_user_func($url_action); 
    } else { 
     echo 'Function does not exist, request terminated'; 
    }; 
}; 

function logIn() { 
    global $auth_realm; 

    if (!isset($_SESSION['username'])) { 
     if (!isset($_SESSION['login'])) { 
      $_SESSION['login'] = TRUE; 
      header('WWW-Authenticate: Basic realm="'.$auth_realm.'"'); 
      header('HTTP/1.0 401 Unauthorized'); 
      echo 'You must enter a valid login and password'; 
      echo '<p><a href="?action=logOut">Try again</a></p>'; 
      exit; 
     } else { 
      $user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : ''; 
      $password = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; 
      $result = authenticate($user, $password); 
      if ($result == 0) { 
       $_SESSION['username'] = $user; 
      } else { 
       session_unset($_SESSION['login']); 
       errMes($result); 
       echo '<p><a href="">Try again</a></p>'; 
       exit; 
      }; 
     }; 
    }; 
} 

function authenticate($user, $password) { 
    global $_user_; 
    global $_password_; 

    if (($user == $_user_)&&($password == $_password_)) { return 0; } 
    else { return 1; }; 
} 

function errMes($errno) { 
    switch ($errno) { 
     case 0: 
      break; 
     case 1: 
      echo 'The username or password you entered is incorrect'; 
      break; 
     default: 
      echo 'Unknown error'; 
    }; 
} 

function logOut() { 

    session_destroy(); 
    if (isset($_SESSION['username'])) { 
     session_unset($_SESSION['username']); 
     echo "You've successfully logged out<br>"; 
     echo '<p><a href="?action=logIn">LogIn</a></p>'; 
    } else { 
     header("Location: ?action=logIn", TRUE, 301); 
    }; 
    if (isset($_SESSION['login'])) { session_unset($_SESSION['login']); }; 
    exit; 
} 

?> 

so, wenn wir ty.php traf es für Benutzername und Passwort fragt und auf eine erfolgreiche Validierung es zeigt das geschützte herunter. All dies funktioniert gut in localhost, aber es funktioniert nicht auf dem Server. aus diesem
Vielen Dank im Voraus

Kann pls mir jemand helfen :)

+0

richtige Formatierung bitte – JimmyBanks

+0

Bitte können Sie zeigen Sie die vollen, eigentlichen Code. Stellen Sie außerdem sicher, dass die DB-Verbindung auf Ihrem öffentlichen Host funktioniert. – DaveRandom

+0

@DaveRandom der vollständige Code ist der gleiche wie in der bereitgestellten Verbindung. – krishna

Antwort

0

Sie benötigen einen Datenbank-Benutzername und Passwort auf Ihrem GoDaddy Hosting-Service zu erstellen, root und leeres Passwort können Sie nicht durch. Der Root ist der Standard-Benutzername für Ihren lokalen Server und Sie haben kein Passwort dafür festgelegt. Daher funktioniert "" für Sie als Passwort. Sie müssen auf Ihrem Remote-Server einen Benutzernamen und ein Kennwort einrichten, damit es funktioniert.

mysql_connect("your-host-server", "a-username", "a-secret-password"); // Password can't be empty and username can't be root, hope you understand 
+0

Ich habe einige Erfahrungen damit gemacht, wie man eine Datenbank online und ohne Probleme macht. Zuallererst funktioniert es nicht lokal. – krishna

0

Sie durchlaufen die Paswords, überprüfen jedoch nur einen einzelnen Wert nach der Schleife.

Ihr Code:

while($row = mysql_fetch_array($rr)) { 
    $x = $row['password']; 
} 
if($x == $password) { 
    //take into the website 
} 

Es soll:

while($row = mysql_fetch_array($rr)) { 
    if ($password == $row['password']) { 
     // take into the website 
    } 
} 
Verwandte Themen