Autor | Zpráva | ||
---|---|---|---|
Attritions Profil * |
#1 · Zasláno: 16. 6. 2011, 21:14:42
Zdravím,
$sql="SELECT * FROM account WHERE username='".$jmeno."' sha_pass_hash='".$heslo."' in(select `id` from `account_access` where `gmlevel`>1)"; Snažím tento kód dát nějak dohromady,ale jaksi mi to nejde. Poradíte někdo ? Díky moc . |
||
Jozin Profil |
#2 · Zasláno: 16. 6. 2011, 21:20:37
Ahoj,
1. nevím jaké jsou položky tabulky 2. místo * vyjmenovávej položky, je to rychlejší 3. co je v $jmeno a $heslo (tzn máš nějak ošetřené ty proměnné?) 4. jakou verzi MySQL máš? |
||
Attritions Profil * |
Tabulka account_access
CREATE TABLE `account_access` ( `id` int(11) unsigned NOT NULL, `gmlevel` tinyint(3) unsigned NOT NULL, `RealmID` int(11) NOT NULL default '-1', PRIMARY KEY (`id`,`RealmID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; /*!40101 SET character_set_client = @saved_cs_client */; Tabulka account CREATE TABLE `account` ( `id` int(11) unsigned NOT NULL auto_increment COMMENT 'Identifier', `username` varchar(32) NOT NULL default '', `sha_pass_hash` varchar(40) NOT NULL default '', `sessionkey` longtext, `v` longtext, `s` longtext, `email` text, `joindate` timestamp NOT NULL default CURRENT_TIMESTAMP, `last_ip` varchar(30) NOT NULL default '127.0.0.1', `failed_logins` int(11) unsigned NOT NULL default '0', `locked` tinyint(3) unsigned NOT NULL default '0', `last_login` timestamp NOT NULL default '0000-00-00 00:00:00', `online` tinyint(4) NOT NULL default '0', `expansion` tinyint(3) unsigned NOT NULL default '2', `mutetime` bigint(40) unsigned NOT NULL default '0', `locale` tinyint(3) unsigned NOT NULL default '0', `recruiter` int(11) NOT NULL default '0', PRIMARY KEY (`id`), UNIQUE KEY `idx_username` (`username`) ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=DYNAMIC COMMENT='Account System'; /*!40101 SET character_set_client = @saved_cs_client */; Jmeno a Heslo = soucasti http://wow.edoma.sk/doggy/gmanager/ Viz toto. $jmeno = addslashes($_POST['jmeno']); $heslo = addslashes($_POST['heslo']); if ($jmeno == "" || $heslo == ""): $reason = $write[2]; else: $jmeno = strtoupper($jmeno); $heslo = strtoupper($heslo); $heslo = sha_password($jmeno,$heslo); $sql="SELECT * FROM account WHERE username='".$jmeno."' sha_pass_hash='".$heslo."' in(select `id` from `account_access` where `gmlevel`>1)"; $result = mysql_query($sql); $vysledek = mysql_fetch_array($result); if ($vysledek['username'] == ""): $reason = "<FONT COLOR=black>Špatni vyplniné uživatelské jméno nebo heslo</font>"; Moderátor Majkl578: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Jozin Profil |
#4 · Zasláno: 16. 6. 2011, 21:31:43 · Upravil/a: Jozin
Jak může být hash heslo varchar(40) roven id int(11)?
EDIT: Co konkrétního chceš vybrat? |
||
Tori Profil |
#5 · Zasláno: 16. 6. 2011, 21:36:26
Jozin:
„Jak může být hash heslo varchar(40) roven id int(11)?“ Předpokládala bych pokus o spojení tabulek na základě ID uživatele. |
||
Jozin Profil |
#6 · Zasláno: 16. 6. 2011, 21:44:21
když to teda trošku pozměním:
<?php //... $sql = "select * from acount, acount_access where username='".$jmeno."' and sha_pass_hash='".$heslo."' and id.acount=acount_access.id and acount_access.gmlevel>1"; //... //respektive s poddotazem $sql = "select * from acount where username='".$jmeno."' and sha_pass_hash='".$heslo."' and id in (select id from acount_access where gmlevel>1)"; |
||
Attritions Profil * |
#7 · Zasláno: 16. 6. 2011, 21:55:00
OK díky moc ;)
|
||
Časová prodleva: 13 let
|
0