« 1 2 »
Autor Zpráva
hladis
Profil
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
-- vlastně to byla konstanta, promiň.
Měsíček
Profil
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
Měsíček
A jak to mám prosím tě opravit? Je to důležité, fakt moc to potřebuji.
nightfish
Profil
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
Z tohoto:

mysql_query("INSERT INTO `".users."` (username,password) VALUES ('$nick', '$heslo')");
uděláš tohle
mysql_query("INSERT INTO `".USERS."` (username,password) VALUES ('$nick', '$heslo')");
to samé i trochu níže .. mimochodem nightfish to už psal v tom předchozím tématu ;-)
hladis
Profil
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
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
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
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
nightfish
To nechápu, mohl by jsi to nějak trošku "vysvětlit"? Prosím, moc to potřebuji.
nightfish
Profil
tím jsem chtěl naznačit, že ta podmínka je špatně... nesmíš porovnávat na nerovnost, nýbrž na rovnost
hladis
Profil
nightfish
A jak bych to měl udělat?
nightfish
Profil
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
nightfish
Zkoušel jsem snad všechny typy jako třeba <,>,=,== ale pořád to nejde:(
Měsíček
Profil
To je na tom to nejhorší :( ... ty vlastně nevíš co potřebuješ.
hladis
Profil
Potřebuji, aby to porovnání bylo že heslo1 = heslo2. Nebo se mýlím?
Měsíček
Profil
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
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
Máš blbě syntaxi v mysql_query ;) .. hledej trochu sám :)

* A pro příště klauzule piš velkými písmeny.
nightfish
Profil
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
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
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
nightfish
Promiň, špatně jsem to napsal. Chtěl jsem říct, že ho do kódu neumím nijak dosadit.
Kajman_
Profil *
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
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
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
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
Davex

Host: mysql.wu.cz
User name: wu_supr
Databáze: wu_supr
Heslo: ------
nightfish
Profil
Databáze: wu_supr
$db_table = "users";
ten druhý řádek je tedy asi špatně, což?
« 1 2 »
Toto téma je uzamčeno. Odpověď nelze zaslat.

0