« 1 2 »
Autor Zpráva
petrr
Profil *
ahojky uz 5 den davam do kupy login formular, udelal sem toto:

1) vytvoril databazi:

Návrh databáze:

CREATE TABLE `test`.`klienti` (
`id_klienta` INT NOT NULL AUTO_INCREMENT ,
`uziv_jmeno` VARCHAR( 10 ) NOT NULL ,
`uziv_heslo` VARCHAR( 10 ) NOT NULL ,
`prijmeni` VARCHAR( 20 ) NOT NULL ,
`jmeno` VARCHAR( 20 ) NOT NULL ,
`email` VARCHAR( 30 ) NOT NULL ,
PRIMARY KEY ( `id_klienta` )
) ENGINE = MYISAM ;




do tabulky jsem vlozil ilustracni udaje:

INSERT INTO `test`.`klienti` (`id_klienta`, `uziv_jmeno`, `uziv_heslo`, `prijmeni`, `jmeno`, `email`) 
VALUES (NULL, 'karel', 'abc', 'Novák', 'Karel', 'karel@karel.cz');


2)vytvoril index.php:
<html>
    <body>
       <font size="5" face="sans-serif">Login </font>
       <form action="overeni.php" method="POST" name="form1">
       <table cellpadding="3" cellspacing="4" border="0">
        <tr>
         <td>Username:</td>
         <td><input type="text" name="username"></td>
        </tr>
        <tr>
         <td>Password:</td>
         <td><input type="password" name="password"></td>
        </tr>
        <tr>
         <td><input type="submit" name="submit" value="Log in"/></td>
        </tr>
        </table>
        </form>
    </body>
</html>

3) vytvoril: overeni.php
<?php
setcookie('txtjmeno', '', time());
setcookie('txtheslo', '', time());

$spojeni =mysql_connect("localhost", "root", "");
mysql_select_db("test");

$sql ="SELECT uziv_heslo FROM klienti WHERE uziv_jmeno='{$_REQUEST['txtjmeno']}'";
$vysledek = mysql_query($sql);

if (!$vysledek){
echo "Oveření nelze použít.";
exit;
}


if (!mysql_num_rows($vysledek)):
echo "uživatel nenalezen";
exit;
else:

if (!mysql_result($vysledek, "uziv_heslo") != $_REQUEST['txtheslo']):
echo "nesprávné heslo";
exit;

else:
        setcookie ('txtjmeno', $_REQUEST['txtjmeno'], time()+3600);
    setcookie ('txtheslo', $_REQUEST['txtheslo'], time()+3600);
    endif;
endif;
  
?>


vysledek: Jakmile vypisu do formularu spravne uzivatelske jmeno: "karel" , heslo: "abc" vypise mi to hlasku: "uživatel nenalezen" nevite nekdo kde bude chyba? Děkuji

Moderátor nightfish: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).

Moderátor nightfish: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.
tiso
Profil
Úvodzovky
xmark
Profil
Nepsal ti tady někdo opakovaně, že máš kód vkládat jako kód?

$sql ="SELECT uziv_heslo FROM klienti WHERE uziv_jmeno='{$_REQUEST['txtjmeno']}'";

toto je nesmysl, patří tam toto:

$sql ="SELECT uziv_heslo FROM klienti WHERE uziv_jmeno='".$_REQUEST['txtjmeno']."'";
petrr
Profil *
po uprave:

<?php
setcookie('txtjmeno', '', time());
setcookie('txtheslo', '', time());
$spojeni =mysql_connect("localhost", "root", "");
mysql_select_db("test");

$sql ="SELECT uziv_heslo FROM klienti WHERE uziv_jmeno='".$_REQUEST['txtjmeno']."'";
$vysledek = mysql_query($sql);

if (!$vysledek){
echo "Oveření nelze použít.";
exit;
}


if (!mysql_num_rows($vysledek)):
echo "uživatel nenalezen";
exit;
else:

if (!mysql_result($vysledek, "uziv_heslo") != $_REQUEST['txtheslo']):
echo "nesprávné heslo";
exit;

else: 	setcookie ('txtjmeno', $_REQUEST['txtjmeno'], time()+3600);
	setcookie ('txtheslo', $_REQUEST['txtheslo'], time()+3600);
	endif;
endif;
 
?>


ale pořád to vypisuje: "uživatel nenalezen" včem ještě může být chyba?

Moderátor nightfish: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
tiso
Profil
…
<input type="text" name="username">
…
<input type="password" name="password">
…
petrr
Profil *
v cem je chyba v #5???

At ve vysledku do inputu vypisu cokoliv vzdy mi to vyhodi "uživatel nenalezen" čím se ještě může tato chyba dělat??? díky

Moderátor nightfish: Tvůj projev je špatně srozumitelný, piš prosím s diakritikou (pokud možno konzistentně v celém příspěvku, ne jen někde).
nightfish
Profil
petrr:
Doporučuji se podívat na zvýrazněné části v [#5] a porovnat s proměnnými, které používáš v SQL dotazu a při porovnávání.
petrr
Profil *
opraveno, kdyz ted dam refresh a potvrdim nejake udaje vypise mi to chyby:

Warning: mysql_result() expects parameter 2 to be long, string given in C:\xampp\htdocs\tutorial\overeni.php on line 26

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\tutorial\overeni.php:26) in C:\xampp\htdocs\tutorial\overeni.php on line 30

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\tutorial\overeni.php:26) in C:\xampp\htdocs\tutorial\overeni.php on line 31

Vi nekdo co mam spatne?? dekuji
panther
Profil
petrr:
??
!!

1. nikdy nepiš tyto příspěvky, kterými chceš na sebe upoutat pozornost.
Moderátor Joker: Poznámka, příspěvek ke kterému se toto vztahovalo jsem vyhodil
2. označuj kódy, ať jsou barevně zvýrazněné. Budou se lépe číst.
3. piš s diakritikou, vyžadují ji pravidla.

Na body 2 a 3 jsi upozorňován moderátory pod každým příspěvkem.
nightfish
Profil
petrr:
Warning: mysql_result() expects parameter 2 to be long, string given
Předáváš funkci mysql_result() špatné parametry. Podívej se do manuálu jak to má být správně.

Protože moderátorské poznámky zdá se nečteš, napíšu ti to sem do příspěvku:
Tvůj projev je špatně srozumitelný, piš prosím s diakritikou.

Pokud budeš i nadále porušovat pravidla, budeš mít problémy.
petrr
Profil *
Podle manuálu je to správně obsané, jaké špatné parametry můžu vlkádat? přeposílám Vám ještě jednou kód:
<?php


setcookie('txtjmeno', '', time());
setcookie('txtheslo', '', time());



$spojeni = mysql_connect("localhost", "root", "");
mysql_select_db("test"); //10

$sql ="SELECT uziv_heslo FROM klienti WHERE uziv_jmeno='".$_REQUEST['txtjmeno']."'";
$vysledek = mysql_query($sql);

if (!$vysledek):
echo "Oveření nelze použít.";
exit;
endif;


//20
if (!mysql_num_rows($vysledek)):
echo "uživatel nenalezen";
exit;

else:

if (mysql_result($vysledek, "uziv_heslo") != $_REQUEST['txtheslo']):
echo "nesprávné heslo";
exit;

else:
 	setcookie ('txtjmeno', $_REQUEST['txtjmeno'], time()+3600);
	setcookie ('txtheslo', $_REQUEST['txtheslo'], time()+3600);
	

endif;
endif;
?>

(Promiňte za gramatické chyby....)
nightfish
Profil
petrr:
Podle manuálu je to správně obsané, jaké špatné parametry můžu vlkádat?
Jaký je podle manuálu význam jednotlivých parametrů?
petrr
Profil *
Když zadám správnou kombinaci hesla a jména vypíše mi to toto:

Warning: mysql_result() expects parameter 2 to be long, string given in C:\xampp\htdocs\tutorial\overeni.php on line 28
nesprávné heslo


Když zadám správné uživatelské jméno bez hesla vypíše mi to toto:

Warning: mysql_result() expects parameter 2 to be long, string given in C:\xampp\htdocs\tutorial\overeni.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\tutorial\overeni.php:28) in C:\xampp\htdocs\tutorial\overeni.php on line 33

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\tutorial\overeni.php:28) in C:\xampp\htdocs\tutorial\overeni.php on line 34

Nevím si vůbec rady, co tam může být špatně?
petrr
Profil *
petrr>nightfish #12

Jak to myslíte význam jednotlivých parametrů? txtjmeno=jméno uživatele, txtheslo=heslo uživatele. Děkuji
shaggy
Profil
petrr:
Warning: mysql_result() expects parameter 2 to be long, string given
vs (riadok 28)
if (mysql_result($vysledek, "uziv_heslo")

Ak nevieš čítať a/alebo po anglicky, tak sa to budeš musieť doučiť. Bez toho sa v programovaní ďalej nepohneš. Ešte aj manuál jasne hovorí, že druhý parameter má byť integer a ty tam posielaš string.
nightfish
Profil
petrr:
Jak to myslíte význam jednotlivých parametrů?
Funkci mysql_result můžeš poslat dva až tři parametry. Zajímá mě, jaký je význam toho kterého parametru. Třeba první parametr je odkaz na připojení k databázi...
AM_
Profil
[#14] petrr
a kde se tyto proměnní v $_POST berou? ve tvém formuláři jsou pouze pole username a password.

Podle manuálu je to správně obsané
programování se nedá učit opisováním, ani obisováním, musíš pochopit princip. Tím, že opíšeš příklad z učebnice a ještě zřejmě špatně, se toho moc nenaučíš.
petrr
Profil *
ok, beru na vedomi ucim se priklady i teorii, všichni jste patrně zkušenější, proto prosím někoho aby mi poradil co jak přepsat aby to fungovalo? Děkuji
AM_
Profil
a k čemu bude, když ti to řekneme? navedli jsme tě velice přesně, tak na to zkus přijít sám, nebo se nad problémem zamysli a polož dotaz tak, aby bylo vidět, že víš, o čem je řeč. Koneckonců mysql_result() má na php.net jasně popsané, jak se parametry zadávají, pokud umíš anglicky, měl bys zjistit, kde je chyba.
Alphard
Profil
petrr:
Předpokládáte, že vám databáze vrátí jediný záznam, tj. jediný řádek.
Manuál vám říká, že druhý parametr určituje číslo řádku a začíná se číslovat od 0. Zároveň se očekává integer, což je číslo. Např. 0.

Je opravdu tak těžké domyslet, co by tam mohlo být?
petrr
Profil *
Chápu že během vypisovani chyb to vypisuje čísla špatných řádků i to že by to měl byt integer(číselná hodnota místo textové), ale nevim jak to přepsat?
Davex
Profil
Ano, asi nevíš jak přepsat řetězec na číslo.

Řetězec vypadá takto: "uziv_heslo"
Číslo vypadá takto: 0

Jak to tedy přepsat?
petrr
Profil *
takže to mám přepsat takto:

if (mysql_result($vysledek, 0) != $_REQUEST['txtheslo'])


?
petrr
Profil *
když to zapíši takto:


if (mysql_result($vysledek, 0))


pak mi to i po úspěšně vypsaném jménu a heslu vypsuje hlášku: "nesprávné heslo" jak to tedy jinak zapsat?
denCo
Profil
nieje toto náhodou zle?
setcookie('txtjmeno', '', time());

pretože time() vráti momentálny čas, takže cookies sa hneď aj vymažú nie?
setcookie('txtjmeno', '', time() + 3600); //cookie na jednu hodinu



EDIT// Ops, nevšimol som si deklaráciu, čo má neskôr v kóde, ale aj tak nechápem to nastavovanie cookies čo je na začiatku kódu
petrr
Profil *
nene ten time nepomaha - porad to vypisuje "nesprávné heslo", nemuzu prijit na tu chybu?
Alphard
Profil
[#24] petrr
To je správně (doplňuji: pokud tam není více stejných uživatelských jmen). Už se neukazují ani chyby.
Zkusil jste si vypsat mysql_result($vysledek, 0) a $_REQUEST['txtheslo']?
Nox
Profil
tak si vypiš co je v obou proměnných před ifem (použij třeba var_dump()) ...zase pozdě...
AM_
Profil
Davex:
když to zapíši takto:
>
>
if (mysql_result($vysledek, 0))
kdo řekl, že tam má být zrovna nula? a co třetí nepovinný parametr? co vlastně chceš, aby ta funkce vrátila?

z manuálu:
string mysql_result ( resource $result , int $row [, mixed $field = 0 ] )
petrr
Profil *
když vytvořím kód pomocí #27 takto:
 
setcookie('txtjmeno', '', time() + 3600);
setcookie('txtheslo', '', time() + 3600);



$spojeni = mysql_connect("localhost", "root", "");
mysql_select_db("test"); //10

$sql ="SELECT uziv_heslo FROM klienti WHERE uziv_jmeno='".$_REQUEST['txtjmeno']."'";
$vysledek = mysql_query($sql);
$_REQUEST['txtheslo'];

if (!$vysledek):
echo "Oveření nelze použít.";
exit;
endif;

//20
if (!mysql_num_rows($vysledek)):
echo "uživatel nenalezen";
exit;

else:

if (mysql_result($vysledek, 0)):

echo "nesprávné heslo";
exit;

else:
 	setcookie ('txtjmeno', $_REQUEST['txtjmeno'], time()+900);
	setcookie ('txtheslo', $_REQUEST['txtheslo'], time()+900);
	

endif;
endif;


?>


pořád to vypisuje při správné kombinaci hesla a jmena "nesprávné heslo", co dále? Děkuji
« 1 2 »

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