Autor | Zpráva | ||
---|---|---|---|
Trax Profil |
#1 · Zasláno: 8. 8. 2011, 01:41:36 · Upravil/a: Trax
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 * |
#2 · Zasláno: 8. 8. 2011, 09:57:43
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 |
#3 · Zasláno: 8. 8. 2011, 10:34:26
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 * |
#4 · Zasláno: 8. 8. 2011, 10:48:11
Mrkněte na funkci mysql_query, může mít více parametrů - konkrétně i identifikátor připojení.
|
||
Trax Profil |
#5 · Zasláno: 8. 8. 2011, 10:59:52 · Upravil/a: Trax
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 |
#6 · Zasláno: 8. 8. 2011, 11:24:40
Hm tak takhle mi to nefunguje..
|
||
Kajman_ Profil * |
#7 · Zasláno: 8. 8. 2011, 12:25:38
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 |
#8 · Zasláno: 8. 8. 2011, 12:34:42
Já v tom nejsem zase tak zběhlej. Mohl by jste mi to víc přiblížit?
|
||
Časová prodleva: 13 let
|
0