Autor | Zpráva | ||
---|---|---|---|
hladis Profil |
#1 · Zasláno: 28. 10. 2008, 10:36:31 · Upravil/a: hladis
Dobrý den. V registračním kódu reg.php mám:
<?php require "db.php"; echo "<form method=\"POST\" action=\"reg.php?stranka=pridat\"> <fieldset><legend>Váš účet</legend> Meno: <input type=\"text\" value=\"$nick\" name=\"nick\"><br> 2 x heslo: <input type=\"password\" name=\"heslo1\"> <input type=\"password\" name=\"heslo2\"><br> <input type=\"submit\" name=\"send\" value=\"Registrovat\"><br> </fieldset> </form>"; $nick = $_POST['nick']; $heslo1 = $_POST['heslo1']; $heslo2 = $_POST['heslo2']; if($_REQUEST['stranka'] == 'pridat'){ if(!$nick==""){ if(!$heslo1==""){ if(!$heslo2==""){ if($heslo1=$heslo2){ $heslo = sha1($heslo2); if(!mysql_result(mysql_query("select count(*) from `".users."` where `username`='$nick'"),0)) { mysql_query("INSERT INTO `".users."` (username,password) VALUES ('$nick', '$heslo')"); echo "<script> alert(\"Registrácia prebehla úspešne.\") </script>"; echo "<meta http-equiv=\"refresh\" content=\"10;url=http://supr.wu.cz/log.php\">"; } else { echo "Tento nick sa už používa."; } } else { echo "Heslá sa nezhodujú."; } } else { echo "Nezadali ste kontrolu hesla."; } } else { echo "Nezadali ste heslo."; } } else { echo "Nezadali ste nick."; } } ?> V souboru db.php se pripojuji, obsah: <?php $db_host = "mysql.wu.cz"; $db_user = "wu_supr"; $db_pass = "----"; $db_table = "users"; define("USERS", "users"); $spojenie = mysql_connect($db_host,$db_user,$db_pass); mysql_select_db($db_table,$spojenie); mysql_query("SET NAMES cp1250"); ?> A chyba: Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/free/wu.cz/s/supr/root/www/reg.php on line 26. Prosím poraďte. Odkaz. Nikdo mi na moje minulé vlákno nepsal, tak jsem založil druhé. Hledal jsem tu chybu v různých návodech, manuálech i v FAQ. Za každou odpověď předem děkuji. |
||
Měsíček Profil |
#2 · Zasláno: 28. 10. 2008, 12:26:45 · Upravil/a: Měsíček
-- vlastně to byla konstanta, promiň.
|
||
Měsíček Profil |
#3 · Zasláno: 28. 10. 2008, 12:29:32
V souboru db.php definuješ konstantu define("USERS", "users"); měl by jsi ji volat .USERS., ale ty ji voláš .users. možná v tom je chyba.
|
||
hladis Profil |
#4 · Zasláno: 28. 10. 2008, 19:23:41
Měsíček
A jak to mám prosím tě opravit? Je to důležité, fakt moc to potřebuji. |
||
nightfish Profil |
#5 · Zasláno: 28. 10. 2008, 19:29:05
„A jak to mám prosím tě opravit?“
no asi přepsat users na USERS v SQL dotazech... jinak kdybys opravdu hledal ve FAQ, tak by ses dočetl, jak zobrazit chybovou hlášku, kterou ti vrací mySQL server a která je, společně s vygenerovanou podobou dotazu, poměrně vhodná k řešení problémů jinak co se týká kontroly existence uživatele v tabulce je zřejmě lepší použít unikátní klíč a odchytávat chybové kódy - viz http://php.vrana.cz/vyuziti-unikatnich-klicu-v-databazi.php tvé řešení je náchylné na časově závislé chyby (race-conditions) |
||
Měsíček Profil |
#6 · Zasláno: 28. 10. 2008, 20:22:45 · Upravil/a: Měsíček
Z tohoto:
mysql_query("INSERT INTO `".users."` (username,password) VALUES ('$nick', '$heslo')"); mysql_query("INSERT INTO `".USERS."` (username,password) VALUES ('$nick', '$heslo')"); |
||
hladis Profil |
#7 · Zasláno: 29. 10. 2008, 08:42:12
nightfish
Promiň, že jsem to neposřehl. Prosím pomozte: Odkaz když se chci registrovat, tak mi to napíše že hesla neshodují. Prosím pomozte mi. Chci to vyřešit. Prosím pomozte. |
||
nightfish Profil |
#8 · Zasláno: 29. 10. 2008, 09:00:18
„if($heslo1=$heslo2){ “
tady ti něco chybí... (viz http://www.linuxsoft.cz/article.php?id_article=188) „Prosím pomozte“ „Prosím pomozte mi“ „Prosím pomozte.“ to vypadá jak nějaké nekvalitní SEO na frázi "prosím pomozte" |
||
hladis Profil |
#9 · Zasláno: 29. 10. 2008, 10:50:51
nightfish
Teď tam mám: <?php require "db.php"; echo "<form method=\"POST\" action=\"reg.php?stranka=pridat\"> <fieldset><legend>Váš účet</legend> Meno: <input type=\"text\" value=\"$nick\" name=\"nick\"><br> 2 x heslo: <input type=\"password\" name=\"heslo1\"> <input type=\"password\" name=\"heslo2\"><br> <input type=\"submit\" name=\"send\" value=\"Pirdať\"><br> </fieldset> </form>"; $nick = $_POST['nick']; $heslo1 = $_POST['heslo1']; $heslo2 = $_POST['heslo2']; if($_REQUEST['stranka'] == 'pridat'){ if(!$nick==""){ if(!$heslo1==""){ if(!$heslo2==""){ if($heslo1!=$heslo2){ $heslo = sha1($heslo2); if(!mysql_result(mysql_query("select count(*) from `".$db_table."` where `username`='$nick'"),0)) { mysql_query("INSERT INTO `".USERS."` (username,password) VALUES ('$nick', '$heslo')"); echo "<script> alert(\"Registrácia prebehla úspešne.\") </script>"; echo "<meta http-equiv=\"refresh\" content=\"10;url=http://supr.wu.cz/log.php\">"; } else { echo "Tento nick sa už používa."; } } else { echo "Heslá sa nezhodujú."; } } else { echo "Nezadali ste kontrolu hesla."; } } else { echo "Nezadali ste heslo."; } } else { echo "Nezadali ste nick."; } } ?> A pořád ta stejná chyba... |
||
nightfish Profil |
#10 · Zasláno: 29. 10. 2008, 11:05:27
„if($heslo1!=$heslo2){ $heslo = sha1($heslo2); if(!mysql_result(mysql_query("select count(*) from `".$db_table."` where `username`='$nick'"),0)) { mysql_query("INSERT INTO `".USERS."` (username,password) VALUES ('$nick', '$heslo')"); “
pokud se hesla neshodují, proveď vložení uživatelského jména do databáze - to imho není to, co chceš - nicméně upravuješ správnou podmínku, další iterace už by měla přinést správné řešení |
||
hladis Profil |
#11 · Zasláno: 29. 10. 2008, 11:48:55
nightfish
To nechápu, mohl by jsi to nějak trošku "vysvětlit"? Prosím, moc to potřebuji. |
||
nightfish Profil |
#12 · Zasláno: 29. 10. 2008, 12:26:45
tím jsem chtěl naznačit, že ta podmínka je špatně... nesmíš porovnávat na nerovnost, nýbrž na rovnost
|
||
hladis Profil |
#13 · Zasláno: 29. 10. 2008, 13:14:42
nightfish
A jak bych to měl udělat? |
||
nightfish Profil |
#14 · Zasláno: 29. 10. 2008, 13:18:52
„A jak bych to měl udělat?“
to je právě napsané v tom výše odkazovaném článku - http://www.linuxsoft.cz/article.php?id_article=188 (část Operátory porovnávání) |
||
hladis Profil |
#15 · Zasláno: 29. 10. 2008, 13:25:52
nightfish
Zkoušel jsem snad všechny typy jako třeba <,>,=,== ale pořád to nejde:( |
||
Měsíček Profil |
#16 · Zasláno: 29. 10. 2008, 13:27:48
To je na tom to nejhorší :( ... ty vlastně nevíš co potřebuješ.
|
||
hladis Profil |
#17 · Zasláno: 29. 10. 2008, 13:36:17
Potřebuji, aby to porovnání bylo že heslo1 = heslo2. Nebo se mýlím?
|
||
Měsíček Profil |
#18 · Zasláno: 29. 10. 2008, 13:38:34
No tak k porovnání je snad == ne? Takže místo if($heslo1!=$heslo2){ by mělo být if($heslo1 == $heslo2){ ...
|
||
hladis Profil |
#19 · Zasláno: 29. 10. 2008, 13:43:50 · Upravil/a: hladis
Měsíček
Už to funguje...jenom při registraci je MYSQL chyba: Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/free/wu.cz/s/supr/root/www/reg.php on line 26 Nevíte, čím to je? |
||
Měsíček Profil |
#20 · Zasláno: 29. 10. 2008, 13:47:07 · Upravil/a: Měsíček
Máš blbě syntaxi v mysql_query ;) .. hledej trochu sám :)
* A pro příště klauzule piš velkými písmeny. |
||
nightfish Profil |
#21 · Zasláno: 29. 10. 2008, 13:51:55 · Upravil/a: nightfish
„Warning: mysql_result(): supplied argument“
a jsme opět u původního problému... a opět ti napíšu to stejné... popis této chybové hlášky a příčin jejího vzniku je v databázovém FAQ |
||
hladis Profil |
#22 · Zasláno: 29. 10. 2008, 16:17:37 · Upravil/a: hladis
Stojí tam:
Tato chybová hláška se objeví v případě, že funkci pro zpracování výsledků mysql dotazu (mysql_fetch_*, mysql_result, mysql_num_rows, ...) dodáte na vstup proměnnou, která výsledek dotazu neobsahuje. To může mít několik příčin: 1) překlep v názvu proměnné - např.... A přitom všechny proměnné mám správně inicializované. A ten druhý způsob se mi tam vůbec nehodí. |
||
nightfish Profil |
#23 · Zasláno: 29. 10. 2008, 16:21:08
„A ten druhý způsob se mi tam vůbec nehodí.“
co se ti nehodí? že máš s největší pravděpodobností syntaktickou chybu v dotazu? nebo se ti nehodí, že by sis měl vypsat chybovou hlášku od mysql? ty chceš, abychom ti pomohli, tak nám to usnadni (tzn. dodej vygenerovanou podobu dotazu + chybovou hlášku) |
||
hladis Profil |
#24 · Zasláno: 29. 10. 2008, 16:25:51
nightfish
Promiň, špatně jsem to napsal. Chtěl jsem říct, že ho do kódu neumím nijak dosadit. |
||
Kajman_ Profil * |
#25 · Zasláno: 30. 10. 2008, 15:32:52
Zkuste
#php radky 26-28 $res=mysql_query($q="select count(*) from `".$db_table."` where `username`='$nick'") or print("Došlo k chybě v dotazu: ".$q."<br>".mysql_error()); if(!mysql_result($res,0)) { if(!mysql_query($q="INSERT INTO `".USERS."` (username,password) VALUES ('$nick', '$heslo')")) print("Došlo k chybě v dotazu: ".$q."<br>".mysql_error()); |
||
hladis Profil |
#26 · Zasláno: 30. 10. 2008, 16:13:47
Kajman_
Napíše to: Došlo k chybě v dotazu: select count(*) from `users` where `username`='123' No database selected Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/free/wu.cz/s/supr/root/www/reg.php on line 27 Došlo k chybě v dotazu: INSERT INTO `users` (username,password) VALUES ('123', '40bd001563085fc35165329ea1ff5c5ecbdbbeef') No database selected |
||
Měsíček Profil |
#27 · Zasláno: 30. 10. 2008, 19:51:23
Hladisi já vím, že by jsi to chtěl co nejrychleji, ale myslím, že bude pro Tebe nejlepší se opravdu naučit alespoň základy PHP/MySQL .., protože bez toho se neobejdeš ani při kopírování skriptů a oprav, které ti tady někdo dá.
|
||
Davex Profil |
#28 · Zasláno: 30. 10. 2008, 20:56:07 · Upravil/a: Davex
hladis
Domnívám se, že máš chybu v souboru db.php v řádku <?php $db_host = "mysql.wu.cz"; $db_user = "wu_supr"; $db_pass = "----"; $db_table = "users"; define("USERS", "users"); $spojenie = mysql_connect($db_host,$db_user,$db_pass); mysql_select_db($db_table,$spojenie); mysql_query("SET NAMES cp1250"); ?> Jak se jmenuje tvoje databáze? |
||
hladis Profil |
#29 · Zasláno: 31. 10. 2008, 12:48:22
Davex
Host: mysql.wu.cz User name: wu_supr Databáze: wu_supr Heslo: ------ |
||
nightfish Profil |
#30 · Zasláno: 31. 10. 2008, 12:51:12
„Databáze: wu_supr “
„$db_table = "users"; “ ten druhý řádek je tedy asi špatně, což? |
||
Téma pokračuje na další straně.
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0