Autor Zpráva
Trax
Profil
Ahoj,

mám problém a už to fakt řeším pokus, omyl. Mám databázi realm s tabulkou account. Problém je v tom, že se mi nevypisuje jméno účtu.

<?php
  $vysledek = mysql_query ("SELECT `username` FROM `account` WHERE `id`=".$_SESSION["id"]."");
  $zaznam = MySQL_Fetch_Array($vysledek);
?>

<center>

<div id="block" style="width: 574px !important; float: left; margin: 0px 0px 0px 0px !important; padding: 5px 10px 5px 10px !important;">
  <div style="float: left; display: inline-block;"><div class="gold">Account: </div><?php echo($zaznam["username"]); ?></div>
  <div style="float: right; display: inline-block;"><a href="?a=lgo&l=y0&o=1&b=a0"<?php echo ($aktivni == 'y0' ? 'class="active"' : ''); ?>>Odhlásit</a></div>
</div>


</center>



Myslím si ale, že chyba není v tomhle kódu, protože se to začalo dít, až když jsem změnil DB. Myslím, že bude někde problém ve funkci, protože jsem si nevěděl rady s porovnáním hesla při loginu, tak jsem to obšlehnul z jinýho zdroje. Funguje to, ovšem při nalogování se mi nevypisuje jméno účtu.


function.php
function iduzivatele ($user_name, $user_pass)
{
  $user_name = stripslashes($_POST["username"]);
	$user_pass = sha1(strtoupper($user_name.":".stripslashes($_POST["password"])));
  $vysledek=mysql_query("SELECT `id` FROM `account` WHERE username='".$user_name."' AND sha_pass_hash='".$user_pass."' LIMIT=1");
  if (mysql_num_rows($vysledek)==0) 
    return false; 
  else {
    $zaznam = mysql_fetch_array($vysledek);
    return $zaznam["id"];
  }
}  



index.php
<?php 
  session_start();
  
  include "./configuration.php";
    mysql_connect ($s_host, $s_user, $s_pass);
    mysql_select_db ($s_db);
    mysql_query("SET NAMES 'utf8'");
  
  require "./function.php";
  if ($stranka=="log")
  {
    $user_id = iduzivatele($_POST["username"], $_POST["password"]);
    if ($user_id<>0) $_SESSION["id"]=$user_id;
  }
  elseif ($stranka=="lgo")
  {
    unset($_SESSION["id"]);
  }
?>



Poradíte mi prosím, co tam je špatně?
Kajman_
Profil *
Zkuste si vypsat mysql_error. Možná to bude tím, že mezi limit a jedničkou má být mezera a ne rovnítko.
Trax
Profil
Jojo díky.. Rovná se tam nemělo co dělat, to asi jak jsem to včera zkoušel, tak už jsem blbnul. Jinak mysql_error() mi nepomohl, ale už možná vím v čem je chyba. Připoju se totiž k dvoum databázím. K databázi realm, kde mám tabulku account a k databázi web, kde mám webové náležitosti. Mám oboje připojení uložený v souboru configuration.php. Když jsem před výpis z DB hodil include, tak už to účet vypsalo. V tomto případě narážím ale na další problém. Jak mám danýmu sql říct, aby se připojil na správnou DB?
Kajman_
Profil *
Mrkněte na funkci mysql_query, může mít více parametrů - konkrétně i identifikátor připojení.
Trax
Profil
include "./configuration.php";
    $link=mysql_connect ($s_host, $s_user, $s_pass);
    mysql_select_db ($s_db);
    mysql_query("SET NAMES 'utf8'");


$vysledek=mysql_query("SELECT `id` FROM `account` WHERE username='".$user_name."' AND sha_pass_hash='".$user_pass."' LIMIT 1", $link);

Takhle by to šlo?
Trax
Profil
Hm tak takhle mi to nefunguje..
Kajman_
Profil *
Snažte se více popsat, jak konkrétně to nefunguje. Lokalizujte si problém.

Je možné, že uvnitř funkce $link není inicializován. Buď ho předejte jako parametr, nebo ho definujte jako globální proměnnou.

Mimochodem kód není bezpečný, protože je náchylný na sql injection.
Trax
Profil
Já v tom nejsem zase tak zběhlej. Mohl by jste mi to víc přiblížit?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0