Autor | Zpráva | ||
---|---|---|---|
valocsay Profil * |
#1 · Zasláno: 8. 4. 2014, 14:54:13 · Upravil/a: valocsay
mám tento problém " Fatal error: Function name must be a string in D:\Programy\wamp\www\1\register.php on line 54"
takto to vyzerá <?Php Include "Header.Php" ?> <Html> <Head> </Head> <Body> <Div Style="position:absolute; width:550px; top:10%; height:40px; left:33%; backgrounf-color:blue; color:black"> <Form Id="regform" Action="" Method="post"> <Table> <Tr><Center><H1>Registrácia</H1></Center></Tr> <Tr><H3>základné údaje</H3></Tr> <Tr><Td>Krstné meno</Td><Td><Input Type="text" Name="meno"></Td></Tr> <Tr><Td>Priezvisko</Td><Td><Input Type="text" Name="priezvisko"></Td></Tr> <Tr><Td>email</Td><Td><Input Type="text" Name="email"></Td></Tr> <Tr><Td>email znovu</Td><Td><Input Type="text" Name="email-repeat"></Td></Tr> <Tr><Td><H3>Prihlasovacie údaje</H3></Td></Tr> <Tr><Td>Nick</Td><Td><Input Type="text" Name="nick"></Td></Tr> <Tr><Td>Heslo</Td><Td><Input Type="password" Name="pass"></Td></Tr> <Tr><Td>heslo znovu</Td><Td><Input Type="password" Name="pass-repeat"></Td></Tr> <Tr><Td><Input type="submit" name="regme" value="Zaregistrovať sa"></Td></Tr> </Table> <?PHP function isMail($what) { if(strstr($what, '@') && strstr($what, '.')){return true;}else{return false;} } if(isset($_POST['regme'])) { if($_POST['meno']) { if($_POST['priezvisko']) { if(isMail($_POST['email'])) { if($_POST['email'] == $_POST['email-repeat']) { if($_POST['pass']) { if($_POST['pass-repeat']) { if($_POST['pass'] == $_POST['pass-repeat']) { if($_POST['nick']) { if(strlen($_POST['nick']) >5 && strlen($_POST['nick']) <25) { if(strlen($_POST['pass']) >5 && strlen($_POST['pass']) <25) { include "config.php"; mysql_connect($MySQL_ip,$MySQL_user,$MySQL_pass); mysql_select_db($MySQL_name); $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'"); if(mysql_num_rows($_GET(q)) <1) { mysql_query("INSERT INTO users values(0'".$_POST['nick']."', '".$_POST['pass']."', '".$_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')"); echo "Registrácia prebehla úspešne.<meta http-equiv='refresh' content='2;url=index.php'>"; } else echo "Zadaný uživateľ už existuje."; } else echo "Heslo musí byť dlhší ako 5 znakov a kratší ako 25 znakov."; } else echo "Nick musí byť dlhší ako 5 znakov a kratší ako 25 znakov."; } else echo "Nezadal si nick."; } else echo "Heslá sa nezhodujú."; } else echo "Nezadal si heslo znovu."; } else echo "Nezadal si heslo."; } else echo "Emaily sa nezhodujú."; } else echo "Email je neplatný."; } else echo "Nezadal si priezvisko."; } else echo "Nezadal si krstné meno."; } ?> </Form> </Div> </Body> </Html> <?Php Include "Footer.Php" ?> pozaral som video jedného týpka a tomu to fungovalo mal tento kód: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Můj Web - Přihlášení</title> <style> a { color: red; text-decoration: none; } body { text-align: center; } #regarea th { font-weight: normal } #regarea th#nadpis { font-weight: bold; } #regarea td { text-align: right; } #regarea { width: 100%; } #regform { text-align: left; width: 350px; margin-left: auto; margin-right: auto; border: 1px solid red; } </style> </head> <body> <form id="regform" action="" method="post"> <table id="regarea"> <tr><th id="nadpis">Registrace</th></tr> <tr><th>Nick</th><td><input type="text" name="nick"></td></tr> <tr><th>Email</th><td><input type="text" name="email"></td></tr> <tr><th>Email znovu</th><td><input type="text" name="email-repeat"></td></tr> <tr><th>Heslo</th><td><input type="password" name="pass"></td></tr> <tr><th>Heslo znovu</th><td><input type="password" name="pass-repeat"></td></tr> <tr><th><input type="checkbox" name="rules"> Souhlasím s <a href="pravidla.php">pravidly</a>.</th><td><input type="submit" name="regme" value="Zaregistrovat se"></td></tr> </table> <?php function isMail($what) { if(strstr($what, '@') && strstr($what, '.')) {return true;}else{return false;} } if(isset($_POST['regme'])) { if(isset($_POST['rules'])) { if($_POST['nick'] && $_POST['email'] && $_POST['email-repeat'] && $_POST['pass'] && $_POST['pass-repeat']) { if($_POST['email'] == $_POST['email-repeat']) { if($_POST['pass'] == $_POST['pass-repeat']) { if(isMail($_POST['email'])) { if(strlen($_POST['nick']) > 5 && strlen($_POST['nick']) < 25) { if(strlen($_POST['pass']) > 5 && strlen($_POST['pass']) < 25) { include "config.php"; mysql_connect($MySQL_ip,$MySQL_user,$MySQL_pass); mysql_select_db($MySQL_name); $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'"); if(mysql_num_rows($q) == 0) { $pass = md5($_POST['pass']); mysql_query("INSERT INTO users values(0,'".$_POST['nick']."','".$pass."','".$_POST['email']."')"); echo "Registrace proběhla úspěšně.<meta http-equiv='refresh' content='2;url=login.php'>"; } else echo "Zadaný uživatel jíž existuje."; } else echo "Tvoje heslo je kratší než 5 znaků nebo delší než 25 znaků."; } else echo "Tvůj nick je kratší než 5 znaků nebo delší než 25 znaků."; } else echo "Neplatný email.."; } else echo "Hesla se neschodují.."; } else echo "Emaily se neschodují.."; } else echo "Nezdal jsi nick/email/heslo."; } else echo "Nesouhlasíš s pravidly? Nesouhlasíme s tvojí registrací.."; } ?> </form> </body> </html> podľa mňa sa to v ničom nelíši. Ale tento kód ide a ešte potrebujem poradiť s tým že mi to ani s tým druhým kódom nevytvorí užívateľa. config.php vyzerá takto: <?php $MySQL_ip = "localhost"; $MySQL_user = "root"; $MySQL_pass = ""; $MySQL_name = "test"; ?> <html> <head> <title>Ahoj</title> </head> <Body style=" background-image:URL('wallpaper.jpg'); background-repeat:no-repeat; background-attachment:fixed; background-position:center;"> <style> a { color: red; } H7 { color: red; } </style> <HR> <center> <a href="index.php">UVOD</a> <a href="cennik.php">Cennik</a> <a href="http://www.adridreal.sk/sk/search/go/?id_brokers=10">Miro</a> <a href="formular.php">furmular</a> </center> <HR> </html> <center> <div style="position:absolute; width:99%; bottom:2%; height:40px; backgrounf-color:blue; color:black"> <hr> <center> <H7>BY VALOCSAY</H7> </center> </div> </center> </body> </html> vážne neviem v čom tam mám chybu pozerám na videá a na ten kód už celý víkend. ak potrebujete ešte používam PSPad na edit, PHPMyAdmin na MySQL, WAMP SERVER, a ako server APACHE tu je scr môjho PHPMyAdmin [img]https://www.dropbox.com/s/9gd3bjzzwvrour2/Bez%20n%C3%A1zvu.png[/img] fotka je tu [img]https://dl.dropboxusercontent.com/u/89084892/Bez%20n%C3%A1zvu.png[/img] https://dl.dropboxusercontent.com/u/89084892/Bez%20n%C3%A1zvu.png sorry za tie dva linky čo nefungujú :) |
||
okolojsoucí Profil |
#2 · Zasláno: 8. 4. 2014, 15:27:40
Nevím proč jsem vkládáte tucet kódu pro identifikaci chyby v jednom souboru.
Zkoušel jsi vůbec zjistit co ta hláška signalizuje, než jsi sem napsal? Vypíchnu ti zde chybnou podmínku kterou máš. $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'"); if(mysql_num_rows($_GET(q)) <1) { mysql_query("INSERT INTO users values(0'".$_POST['nick']."', '".$_POST['pass']."', '".$_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')"); echo "Registrácia prebehla úspešne.<meta http-equiv='refresh' content='2;url=index.php'>"; } Chybu máš u označeného místa. Zkus popřemýšlet proč jsi tam tento typ proměnné dal, co to ve zkutečnosti má dělat a co funkce mysql_num_rows dělat má, a její parametry které se do ní vkládají.
Menší nápověda. V mysql_num_rows je jeden argument jehož popis zní dle php.net: „The result resource that is being evaluated. This result comes from a call to mysql_query().“ |
||
valocsay Profil * |
#3 · Zasláno: 8. 4. 2014, 16:32:59
okolojsoucí:
toto mu už ide dik za pomoc ale prosim ťa pomôžeš mi s tým druhým čo som tam napísal? ak sa ti to nechce celé pozerať tak aj keď mi ide registrácia tak mi to nehodí do databáze :P nerozumiem tomu :P dole som dal aj obrázok |
||
Tori Profil |
#4 · Zasláno: 8. 4. 2014, 16:51:05
Tady chybí čárka, v tom druhém kilometru kódu je.
mysql_query("INSERT INTO users values(0, '".$_POST['nick']."', '".$_POST['pass']."', '".$_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')"); |
||
valocsay Profil * |
#5 · Zasláno: 8. 4. 2014, 17:20:26 · Upravil/a: valocsay
include "config.php"; mysql_connect($MySQL_ip,$MySQL_user,$MySQL_pass); mysql_select_db($MySQL_name); $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'"); if(mysql_num_rows($q) == 0) { mysql_query("INSERT INTO users values(0, '".$_POST['nick']."', '".$_POST['pass']."', '". $_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')"); echo "Registrácia prebehla úspešne.<meta http-equiv='refresh' content='2;url=index.php'>"; nejde mi iba to zapísanie do databázi |
||
anonymníí Profil * |
#6 · Zasláno: 8. 4. 2014, 17:25:02
valocsay:
Ty dotazy proběhnou v pořádku? Co píše mysql_error ( echo mysql_error(); za každým z vykonaných dotazů)?
Proč vkládáš nulu, když je to pravděpodobně ID a auto inkrement? Proč neescapuješ data, nebojíš se, že se ti do databáze někdo nabourá (hledej escapování) Odesíláš formulíář metodou POST? Co vypíše echo "INSERT INTO users values(0, '".$_POST['nick']."', '".$_POST['pass']."', '". $_POST['email']."', '".$_POST['meno']."', '".$_POST['priezvisko']."')"; ? Je v proměnných po odeslání formuláře to, co čekáš (nejmenuje se některé políčko třeba jinak?)
A proč probůh ukládáš heslo v plain textu? šup s ním do nějakého hashe. |
||
Fisir Profil |
#7 · Zasláno: 8. 4. 2014, 17:25:33
Reaguji na valocsaye:
Spusť si ten dotaz v nějakém správci databází (phpMyAdmin, Adminer) a pošli výsledek (chybové hlášení). PHP rozšíření mysql_* je zastaralé, příště použij raději MySQLi a escapuj vstupní hodnoty.
|
||
valocsay Profil * |
#8 · Zasláno: 8. 4. 2014, 20:51:37 · Upravil/a: valocsay
už som vyriešil všetky problémy bol tam hlavný problém že to muselo byť takto :
$query = "INSERT INTO users(id, username, password, email, meno, priezvisko) VALUES ('', '$_POST[nick]', '$_POST[pass]', '$_POST[email]', '$_POST[meno]', '$_POST[priezvisko]'); ale teraz mi to robí tento problém ( ! ) Parse error: syntax error, unexpected end of file in D:\Programy\wamp\www\1\register.php on line 98 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <?Php Include "Header.Php" ?> <Html> <Head> </Head> <Body> <Div Style="position:absolute; width:550px; top:10%; height:40px; left:33%; backgrounf-color:blue; color:black"> <Form Id="regform" Action="" Method="post"> <Table> <Tr><Center><H1>Registrácia</H1></Center></Tr> <Tr><H3>základné údaje</H3></Tr> <Tr><Td>Krstné meno</Td><Td><Input Type="text" Name="meno"></Td></Tr> <Tr><Td>Priezvisko</Td><Td><Input Type="text" Name="priezvisko"></Td></Tr> <Tr><Td>email</Td><Td><Input Type="text" Name="email"></Td></Tr> <Tr><Td>email znovu</Td><Td><Input Type="text" Name="email-repeat"></Td></Tr> <Tr><Td><H3>Prihlasovacie údaje</H3></Td></Tr> <Tr><Td>Nick</Td><Td><Input Type="text" Name="nick"></Td></Tr> <Tr><Td>Heslo</Td><Td><Input Type="password" Name="pass"></Td></Tr> <Tr><Td>heslo znovu</Td><Td><Input Type="password" Name="pass-repeat"></Td></Tr> <Tr><Td><Input type="submit" name="regme" value="Zaregistrovať sa"></Td></Tr> </Table> <?PHP function isMail($what) { if(strstr($what, '@') && strstr($what, '.')){return true;}else{return false;} } if(isset($_POST['regme'])) { if($_POST['meno']) { if($_POST['priezvisko']) { if(isMail($_POST['email'])) { if($_POST['email'] == $_POST['email-repeat']) { if($_POST['pass']) { if($_POST['pass-repeat']) { if($_POST['pass'] == $_POST['pass-repeat']) { if($_POST['nick']) { if(strlen($_POST['nick']) >5 && strlen($_POST['nick']) <25) { if(strlen($_POST['pass']) >5 && strlen($_POST['pass']) <25) { include "config.php"; mysql_connect($MySQL_ip,$MySQL_user,$MySQL_pass); mysql_select_db($MySQL_name); $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'"); if(mysql_num_rows($q) == 0) { $query = "INSERT INTO users(id, username, password, email, meno, priezvisko) VALUES ('', '$_POST[nick]', '$_POST[pass]', '$_POST[email]', '$_POST[meno]', '$_POST[priezvisko]'); echo 'Registrácia prebehla úspešne'; <meta http-equiv='refresh' content='2;url=index.php'>; echo mysql_error(); } else echo 'Zadaný uživateľ už existuje.'; } else echo 'Heslo musí byť dlhší ako 5 znakov a kratší ako 25 znakov.'; } else echo 'Nick musí byť dlhší ako 5 znakov a kratší ako 25 znakov.'; } else echo 'Nezadal si nick.'; } else echo 'Heslá sa nezhodujú.'; } else echo 'Nezadal si heslo znovu.'; } else echo 'Nezadal si heslo.'; } else echo 'Emaily sa nezhodujú.'; } else echo 'Email je neplatný.'; } else echo 'Nezadal si priezvisko.'; } else echo 'Nezadal si krstné meno.'; } ?> </Form> </Div> </Body> </Html> <?PHP Include 'Footer.Php' ?> a prosím mohli by ste mi vysvetliť v čom mám ukladať tie heslá?? PARDON OSPRAVEDLŇUJEM SA ja som to nemal uzavreté tam hore :D |
||
okolojsoucí Profil |
#9 · Zasláno: 8. 4. 2014, 21:39:05
valocsay:
„a prosím mohli by ste mi vysvetliť v čom mám ukladať tie heslá??“ Nejlépe v šifrované podobě. Hlavně ne v md5 které dnes je jednoduše staré a jsou již databáze na součty a sha1 také není nejnovější. Můžeš sáhnout po funkci crypt ze které si počítá Wordpress hesla nebo po třídě která je dobře propracovaná bcrypt což je jen pro ty co nemají PHP 5.5, protože je zde bcrypt již implementován. „PARDON OSPRAVEDLŇUJEM SA ja som to nemal uzavreté tam hore :D“ To znamená že jsi svůj problém vyřešil? |
||
valocsay Profil * |
#10 · Zasláno: 8. 4. 2014, 21:41:15
skoro stále mi nejde ta databáza proste po registrácia sa mi to neuloží do databázy :(
|
||
okolojsoucí Profil |
#11 · Zasláno: 8. 4. 2014, 21:54:50
A jak zde ti bylo doporučeno sestavený dotaz pomocí PHPMyAdmin či jiného klienta ti vypíše jakou chybu?
|
||
valocsay Profil * |
#12 · Zasláno: 8. 4. 2014, 22:15:20 · Upravil/a: valocsay
dal som do PHP kódu "echo mysql_error()" bez " a vypiísalo mi to chybu tú som opravil a už mi to nepíše nič :P
ak myslíš toto |
||
valocsay Profil * |
#13 · Zasláno: 9. 4. 2014, 21:37:32
opravil som si ten kód znovu :D a teraz mi to píše tento problém
( ! ) Parse error: syntax error, unexpected 'mysql_connect' (T_STRING) in D:\Programy\wamp\www\1\register.php on line 51 kód je tu: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <?Php Include "Header.Php" ?> <Html> <Head> </Head> <Body> <Div Style="position:absolute; width:550px; top:10%; height:40px; left:33%; backgrounf-color:blue; color:black"> <Form Id="regform" Action="" Method="post"> <Table> <Tr><Center><H1>Registrácia</H1></Center></Tr> <Tr><H3>základné údaje</H3></Tr> <Tr><Td>Krstné meno</Td><Td><Input Type="text" Name="meno"></Td></Tr> <Tr><Td>Priezvisko</Td><Td><Input Type="text" Name="priezvisko"></Td></Tr> <Tr><Td>email</Td><Td><Input Type="text" Name="email"></Td></Tr> <Tr><Td>email znovu</Td><Td><Input Type="text" Name="email-repeat"></Td></Tr> <Tr><Td><H3>Prihlasovacie údaje</H3></Td></Tr> <Tr><Td>Nick</Td><Td><Input Type="text" Name="nick"></Td></Tr> <Tr><Td>Heslo</Td><Td><Input Type="password" Name="pass"></Td></Tr> <Tr><Td>heslo znovu</Td><Td><Input Type="password" Name="pass-repeat"></Td></Tr> <Tr><Td><Input type="submit" name="regme" value="Zaregistrovať sa"></Td></Tr> </Table> <?PHP function isMail($what) { if(strstr($what, '@') && strstr($what, '.')){return true;}else{return false;} } if(isset($_POST['regme'])) { if($_POST['meno']) { if($_POST['priezvisko']) { if(isMail($_POST['email'])) { if($_POST['email'] == $_POST['email-repeat']) { if($_POST['pass']) { if($_POST['pass-repeat']) { if($_POST['pass'] == $_POST['pass-repeat']) { if($_POST['nick']) { if(strlen($_POST['nick']) >5 && strlen($_POST['nick']) <25) { if(strlen($_POST['pass']) >5 && strlen($_POST['pass']) <25) { include "config.php" mysql_connect($mysql_ip,$mysql_user,$mysql_pass); mysql_select_db($MySQL_name); $q = mysql_query("SELECT * FROM users WHERE username='".$_POST['nick']."'") or die ("chyba"); if(mysql_num_rows($q) == 0) { $query = "INSERT INTO users(id, username, password, email, meno, priezvisko) VALUES ('', '$_POST[nick]', '$_POST[pass]', '$_POST[email]', '$_POST[meno]', '$_POST[priezvisko]')" or die ("chyba 2"); echo "Registrácia prebehla úspešne <meta http-equiv='refresh', content='2;url=index.php'>"; echo mysql_error(); } else echo 'Zadaný uživateľ už existuje.'; } else echo 'Heslo musí byť dlhší ako 5 znakov a kratší ako 25 znakov.'; } else echo 'Nick musí byť dlhší ako 5 znakov a kratší ako 25 znakov.'; } else echo 'Nezadal si nick.'; } else echo 'Heslá sa nezhodujú.'; } else echo 'Nezadal si heslo znovu.'; } else echo 'Nezadal si heslo.'; } else echo 'Emaily sa nezhodujú.'; } else echo 'Email je neplatný.'; } else echo 'Nezadal si priezvisko.'; } else echo 'Nezadal si krstné meno.'; } ?> </Form> </Div> </Body> </Html> <?PHP Include 'Footer.Php' ?> config: <?php $mysql_ip = "localhost"; $mysql_user = "root"; $mysql_pass = ""; $mysql_name = "test"; ?> nwm či je to v configu alebo registri :( |
||
Rfilip Profil |
#14 · Zasláno: 9. 4. 2014, 21:39:19
50 řádek register.php má být
include "config.php";
|
||
valocsay Profil * |
#15 · Zasláno: 9. 4. 2014, 21:41:48
v tom prípade mi to nejde :(
|
||
Rfilip Profil |
#16 · Zasláno: 9. 4. 2014, 21:42:51
valocsay:
„nejde“ To znamená co? |
||
valocsay Profil * |
#17 · Zasláno: 9. 4. 2014, 21:45:28 · Upravil/a: valocsay
nepošle to údaje do databáze proste to nezaregistruje
to my vážne nevie nikto poradiť?? :( |
||
Tori Profil |
#18 · Zasláno: 9. 4. 2014, 22:18:25
Protože se ani žádný dotaz neprovede, někde vám vypadlo volání funkce:
$query = "INSERT INTO users(id, username, password, email, meno, priezvisko) VALUES ('', '$_POST[nick]', '$_POST[pass]', '$_POST[email]', '$_POST[meno]', '$_POST[priezvisko]')"; mysql_query($query) or die ("chyba 2"); |
||
okolojsoucí Profil |
#19 · Zasláno: 9. 4. 2014, 22:19:19
valocsay:
„to my vážne nevie nikto poradiť?? :(“ Bez chybových hlášek, případně php, apache ne-li mysql logu to půjde dost obtížně. |
||
valocsay Profil * |
#20 · Zasláno: 9. 4. 2014, 22:22:01
ďakujem za pomoc už mi to funguje.
|
||
Časová prodleva: 10 let
|
0