Autor Zpráva
weckho
Profil
Kuwa už mě to se*e... Redaktor se mi přihlásí i když zadá špatný heslo... Nevidím tam chybu... Díky

<?php
//otevření DB
require_once('otevridb.inc');
if (!otevriDB()) break;
$autori = mysql_query("SELECT heslo FROM redakce WHERE jmeno = '{$_REQUEST["login"]}'");
if(!autori){
echo "Problém s redakčním systémem.";
exit;
}
//kontrola přihlašovacího jména a hesla
if(!mysql_num_rows($autori)){
echo "Neznámý redaktor!";
exit;
}
else{
if(mysql_result($autori,"heslo") !=$_REQUEST["heslo"]){
echo "Neplatné heslo!";
exit;
}
}
setcookie('login', $_REQUEST["login"], time()+900);
setcookie('heslo', $_REQUEST["heslo"], time()+900);
header("location: index2.php?page=novinky");
?>
llook
Profil
Nehlásí PHP nějakou chybu? Protože tenhle řádek by podle mě chybu hlásit měl (kvůli těm uvozovkám):
$autori = mysql_query("SELECT heslo FROM redakce WHERE jmeno = '{$_REQUEST["login"]}'");

Další věc vidím tady:
if(!autori){


Těch věcí tam bude víc. Nemáš náhodou v php.ini nastavené display_error=Off, nebo error_reporting=0 ?
23k_sleep
Profil *
hmm je to naky divny ... zkus to takhle


$jmeno a $heslo jsou z FORMULARE ($_POST);


$autori = mysql_query("SELECT login, heslo FROM redakce WHERE jmeno = $jmeno AND heslo=$heslo'");

if (mysql_num_rows($autori)==0) die('spatne zadane udaje');
elseif (mysql_num_rows($autori)>1) die('OPET CHYBA'); // autor je tam vickrat?
else{


SET COOKIE + presmerovani ...
}
printf
Profil
proč by tenhle řádek měl hlásit chybu? Podle mne je dobře. (doplněno: aspoň syntakticky, neošetřenej vstup je jiná věc)
$autori = mysql_query("SELECT heslo FROM redakce WHERE jmeno = '{$_REQUEST["login"]}'");

jinak bych doporučil podívat se co vlastně leze z Requestu a co leze z databáze
print_r($_REQUEST);
print_r(mysql_fetch_array($autori, MYSQL_ASSOC));
weckho
Profil
printf
Jo, je to dobře, chybu to nehlásí a ani by hlásit nemělo. Jinak z REQUESTU mi to hází informace správně, a ten výstup z DB ještě zkontroluju...

llook
Další věc vidím tady:

if(!autori){


Jo no, ale to jen malinká chybka, díky tomu to není...

Ale díky
xalivarius
Profil *
MAM TAKOVY PROBLEM. NA WZ.CZ MAM SQL DATABAZI. A CHCI VYTVORIT OVEROVANI HESLA PREZ DATABAZI A NEJAK ME TO NEBEZI. ZREJME BUDE CHYBA V DOTAZU, ALE ZKOUSEL JSEM MNOHO VARIANT AUZ ME NIC NENAPADA A ZACINAM MIT Z TOHO VYGUMOVANO. PORADTE KDE JE CHYBA.

if (isset($HTTP_POST_VARS['userid']) && isset($HTTP_POST_VARS['password']))
{

$userid = $HTTP_POST_VARS['userid'];
$password = $HTTP_POST_VARS['password'];

$db_conn = mysql_connect('mysql.wz.cz', 'NIK', 'HESLO');
mysql_select_db('auth', $db_conn);
$query = 'select * from auth '
."where name='$userid' "
." and pass=password('$password')";
$result = mysql_query("SELECT * FROM auth WHERE pass = '$_POST[$password]' AND name = _POST'$userid'");

if (mysql_num_rows($result) >0 ) {

$HTTP_SESSION_VARS['valid_user'] = $userid;
}
}



HLASI MI TO PO PŘIHLÁŠENÍ CHYBU:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL
MARŤAS
jozob
Profil
mysql_select_db('auth', $db_conn);
- Názov DB je na wz rovnaký ako názov webu, nie? (predpokladám, že auth je názov tabuľky, nie názov databázy)

$query = 'select * from auth '
."where name='$userid' "
." and pass=password('$password')";
$result = mysql_query("SELECT * FROM auth WHERE pass = '$_POST[$password]' AND name = _POST'$userid'");

- Dotaz uložený v premennej $query sa nevykoná, v nasledujúcej funkcii mysql_query() je parameter iný SQL dotaz

$result = mysql_query("SELECT * FROM auth WHERE pass = '$_POST[$password]' AND name = _POST'$userid'");
- Tu už je asi odpoveď na pôvodnú otázku - dotaz SELECT * FROM auth WHERE pass = '$_POST[$password]' AND name = _POST'$userid'; - by mal vyzerať takto: SELECT * FROM auth WHERE pass = '$password' AND name = '$userid';
xalivarius
Profil *
MNOHOKRAT DEKUJI, VUBEC JSEM SI TOTIZ NEVSIML, ZE SELECT_DB JSEM DAL NAZEV TABULKY A TO BYL TEN PROBLEM. ZA ZBYTEK SE OMLOUVAM KDYBYCH VEDEL CO JSEM UDELAL ZA HOVADINU, NEZKOUSEL BYCH TYHLE KOMBINACE A TUDIS BY TEN DALSI DOTAZ BYL ZBYTECNEJ. MOC DEKUJI
MARTAS
Toto téma je uzamčeno. Odpověď nelze zaslat.