Autor Zpráva
Attritions
Profil *
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
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
Jak může být hash heslo varchar(40) roven id int(11)?

EDIT: Co konkrétního chceš vybrat?
Tori
Profil
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
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 *
OK díky moc ;)

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