2

このコードを使用してURLを認証しています。

  1. 私の場合は正常に動作してlocalhostいますが、サーバー(goDaddy)にロードすると、ユーザー名とパスワードを繰り返し要求されます。

  2. これらのユーザー名とパスワードのフィールドを制御して、データベースに接続したいと思います。

そのために次のようなコードを使用しています:

$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
}

したがって、ユーザーがユーザー名とパスワードを入力すると、認証が成功するとそのページが表示されます。

PHP-MYSQLを使用していますが、予備知識があるので、プログラミングの初心者です。

適切なテスト済みコードで上記の2つの問題を修正するのを手伝ってください。

編集: 問題1はローカルで動作しており、リンクで提供されているものと同じコードを使用しています。問題2は、ローカルホストでログインを許可できるように、ローカルデータベースからこれらのフィールドusernameとフィールドを取得しようとしています(後の段階で機能する場合は、データベースをオンラインにします)。password

編集-2:

ty.php次のようなコードが含まれています

<?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>

auth.php含まれています

<?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;
}

?>

したがって、ヒットty.phpするとユーザー名とパスワードの入力を求められ、検証が成功すると、保護されたダウンが表示されます。これはすべてローカルホストでは正常に機能していますが、サーバーでは機能していません。

誰かplsがこの
おかげで私を助けてくれますか:)

4

2 に答える 2

0

goDaddyホスティングサービスでデータベースのユーザー名とパスワードを作成する必要がありますroot。空のパスワードではうまくいきません。ルートはローカルサーバーのデフォルトのユーザー名であり、パスワードを設定していないため、""パスワードとして機能します。リモートサーバーを機能させるには、リモートサーバーでユーザー名とパスワードを設定する必要があります。

mysql_connect("your-host-server", "a-username", "a-secret-password"); // Password can't be empty and username can't be root, hope you understand
于 2012-04-05T12:57:16.367 に答える
0

パスワードをループしていますが、ループ後に単一の値のみをチェックしています。

あなたのコードは次のとおりです。

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

そのはず:

while($row = mysql_fetch_array($rr)) {
    if ($password == $row['password']) {
        // take into the website
    }
}
于 2012-04-09T11:07:59.750 に答える