0

以前はすべてのデータを 000webhost に保存していましたが、今日はホスティング業者に移行することにしました。だから..移動した後、古いmysql_connect情報を新しいものに置き換えました。よし、テストした後、一部のエコー機能を除いて、すべて正常に動作しました。

ファイルをチェックします(サーバーに接続してログインします):

    <?php

    $servidorr = "mysql.XXXX.co.uk";
    $bdd = "XXXXXXXX";
    $usuarioo = "XXXXX";
    $senhaa = "XXXXXXX";


    if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
        header("Location: geton"); exit;
    }


    mysql_connect($servidorr, $usuarioo, $senhaa) or trigger_error(mysql_error());

    mysql_select_db($bdd) or trigger_error(mysql_error());

    $usuario = mysql_real_escape_string($_POST['usuario']);
    $senha = mysql_real_escape_string($_POST['senha']);
    $lang = mysql_real_escape_string($_POST['lang']);


    $sql = "SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = '". $usuario ."') AND (`senha` = '". sha1($senha) ."') AND (`ativo` = 1) LIMIT 1";
    $updatelang = "UPDATE usuarios SET lang='$lang' WHERE usuario='$usuario'";
    $query = mysql_query($sql);
    if (mysql_num_rows($query) != 1) {

        echo "<script>alert('Oops! Looks like there is something wrong with your login! *perhaps a typo or you did not fill out the fields*'); location.href='geton'</script>"; exit;
    } else {

        $resultado = mysql_fetch_assoc($query);
      mysql_query($updatelang);


        if (!isset($_SESSION)) session_start();

        $_SESSION['UsuarioID'] = $resultado['id'];
        $_SESSION['UsuarioNome'] = $resultado['nome'];
      $_SESSION['usuario'] = $resultado['usuario'];
        $_SESSION['UsuarioNivel'] = $resultado['nivel'];
      $_SESSION['lang'] = $resultado['lang'];

        header("Location: http://mapmaking.zz.mu/pages/home"); exit;
    }

    ?>


Home file (these echos are just for testing and this is not the original file, the original one has the same php stuff, except the echo functions, those are in random lines):

<?php


if (!isset($_SESSION)) session_start();

  $tlang = $_SESSION['UsuarioLang'];
  $aclevel = $_SESSION['UsuarioNivel'];
  $nick = $_SESSION['UsuarioNome'];

$neededal = 1;
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $neededal)) {
    session_destroy();
    header("Location: http://inside.mapmaking.uk.to/geton"); exit;


}

session_start();

echo $tlang;
echo $aclevel;
echo $nick;
echo "$level$tlang$tlang";


?>

[これは基本的にセッションを開始し、接続ユーザーのアクセスレベルが 1 かどうかを確認します]

Echo $tlangが機能しません! :(どういうわけか、私には理由がわかりません;_;

皆さんが私を助けてくれることを願っています、ありがとう!!

4

2 に答える 2

0

$_SESSION['lang'] != $_SESSION['UsuarioLang']

最初のものに値を割り当てますが、2番目のものから値を期待します。

$_SESSION['lang'] = $resultado['lang'];

$tlang = $_SESSION['UsuarioLang'];

于 2013-08-14T21:46:08.747 に答える
-1

この行を変更します。

$_SESSION['lang'] = $resultado['lang'];

以下に:

$_SESSION['UsuarioLang'] = $resultado['lang'];

また、小切手session_start()なしで電話する必要があります。issetまた、PHP には奇妙な演算子の優先順位規則&&があるため、代わりにANDand||の代わりに使用することを検討する必要があります(代入はorよりも優先順位が高くなります)。OR=ANDOR

于 2013-08-14T21:47:37.277 に答える