IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:28.10.2013 20:11

Ahojte, s klukama se chceme pustit do nějákého projektu... no řekněme, že je to celkem velký projekt :D A tak trochu se toho bojím, protože PHPčko se začínám učit. někde psali, že znalost C# mi pomůže, protože je to skoro to stejné... Tak doufám, že to výjde :)

Nicméně k věci ... Kde mám chybu v tomhle scriptu ?

<?php
        //PRIPOJENI DO DATABAZE
        mysql_connect("localhost","jmeno","heslo");
        mysql_select_db("trade");
        //DOSTAVAME UDAJE
        $name = $_GET["name"];
        $pass = $_GET["pass"];
        //TVORBA TABLE A VLOZENI UDAJU
        mysql_query("CREATE TABLE $name(id TEXT, pass TEXT)");
        mysql_query("INSERT INTO $name (id, pass) VALUES ($name, $pass");
        ?>
Odpovědět
28.10.2013 20:11
To co se zdá být nemožné, je vždy možné.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Demel
Kit:28.10.2013 20:23

V obou SQL dotazech máš místo jména tabulky proměnnou $name. Navíc tam máš SQL injection, takže ti kdokoli může tu databázi třeba smazat. V posledním dotazu ti chybí pravá závorka a apostrofy kolem odkazů na proměnné. Sloupec id se zpravidla dělá typu integer.

Nahoru Odpovědět
28.10.2013 20:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:28.10.2013 20:25

Dík moc... :)
Ono to, že mám místo jména tabulky proměnnou $name má svůj důvod :)

Editováno 28.10.2013 20:26
Nahoru Odpovědět
28.10.2013 20:25
To co se zdá být nemožné, je vždy možné.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:28.10.2013 20:27

Jsem už úplně bezradný, v každém druhém dotazu na fóru je SQL injekce. Asi na to napíšu nějaký článek, abychom je mohli rovnou odkazovat.

Nahoru Odpovědět
28.10.2013 20:27
New kid back on the block with a R.I.P
Avatar
Jan Demel
Tvůrce
Avatar
Odpovídá na David Hartinger
Jan Demel:28.10.2013 20:28

Jéé tak to promiň :/ Nechtěl jsem tě nazlobit :(

Nahoru Odpovědět
28.10.2013 20:28
To co se zdá být nemožné, je vždy možné.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Demel
Kit:28.10.2013 20:30

To je spíš k pláči než k usměvavému smajlíku.

Nahoru Odpovědět
28.10.2013 20:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:28.10.2013 20:32

Jako kdyby od sebe opisovali :)

Přitom stačí domyslet si, co se asi tak stane, když někdo do vstupních dat pošle obyčejný apostrof...

Nahoru Odpovědět
28.10.2013 20:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Demel
Kit:28.10.2013 20:34

Mne jsi s tím svým zrůdným skriptem také pěkně namíchl. Jako kdybys tady ty články, které pracně píšeme, vůbec nečetl. A ten tvůj druhý příspěvek byl tak sprostý, že jsem ho pro jistotu ihned smazal.

Nahoru Odpovědět
28.10.2013 20:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Michal Žůrek - misaz:28.10.2013 20:44

přijde mi že každý druhý na fóru je ale opravdu nečte. A není to jen na fóru o PHP a SQL.

 
Nahoru Odpovědět
28.10.2013 20:44
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:28.10.2013 20:50

Nejenže nečtou články, ale ani neznají netiketu. To je pak s nimi těžké.

Nahoru Odpovědět
28.10.2013 20:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na David Hartinger
Petr Nymsa:28.10.2013 20:57

Mě by spíše zajímalo, kde všichni berou, že se pouížvá mysql_query a o SQL injection ani nemluvě :)

Nahoru Odpovědět
28.10.2013 20:57
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Jan Demel
Tvůrce
Avatar
Jan Demel:28.10.2013 21:19

OK... Takže se všem omlouvám. Ale pořád jsem ten problém nevyřešil
Má jít o to, že se uživatel zaregistruje a vytvoří se mu vlastní tabulka, do které se zapíše jeho nick a password ...
Prosím poslal by jste mi tu někdo kod jak by to mělo být ?

Nahoru Odpovědět
28.10.2013 21:19
To co se zdá být nemožné, je vždy možné.
Avatar
Snorlax
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Snorlax:28.10.2013 22:02

taky mě zajímá jak dlouho potrvá než všichni budou používat PDO

Nahoru Odpovědět
28.10.2013 22:02
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Snorlax
Tvůrce
Avatar
Odpovídá na Jan Demel
Snorlax:28.10.2013 22:08

ne budeš mít tbl user kde budeš mít min. tyto 3 sloupce
id_user
nick
pass

(jména si udělej jak chceš)
id bude sloužit na identifikaci(budou to čísla 1,2,3,...). když budeš chtít smatat uživatele tak uděláš jen
DELETE FROM user WHERE id_user = '2'
každý bude mít VLASTNÍ id. proto tam pro jistotu nastav primární klíč. dále tam můžeš nastavit A_I (já to nepoužívám. moc to nemusim). no a pak tam zapíšeš nick a ZAŠIFROVANÝ heslo (třeba pomocí MD5)

$heslo = MD5($_POST['heslo']);

vytvářet pro každého uživatele tabulku je to nejšílenější co jsem kdy slyšel... to mě nikdy nenapadlo... dokážeš si představit jak by asi vypadala databáze třeba tady devbooku?

ještě nějaké otázky?

Nahoru Odpovědět
28.10.2013 22:08
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Odpovídá na Jan Demel
Neaktivní uživatel:28.10.2013 22:09

A proč by se měla vytvářet každému uživateli vlastní tabulka? To vůbec není potřeba.

Nahoru Odpovědět
28.10.2013 22:09
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Jan Demel
Kit:28.10.2013 22:09

To je jednoduché. Uděláš jednu tabulku, do které uložíš všechny uživatele.

Nahoru Odpovědět
28.10.2013 22:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Snorlax
Kit:28.10.2013 22:12

PDO se všichni naučí až tehdy, kdy už bude nahrazeno něčím novějším :)

Nahoru Odpovědět
28.10.2013 22:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kamil
Člen
Avatar
Odpovídá na Petr Nymsa
Kamil:28.10.2013 22:13

Bohužel, třeba já ze školy ... :/

 
Nahoru Odpovědět
28.10.2013 22:13
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Kamil
Kit:28.10.2013 22:16

My se už učíme PDO a práci s výjimkami :)

Nahoru Odpovědět
28.10.2013 22:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kamil
Člen
Avatar
Odpovídá na Kit
Kamil:28.10.2013 22:17

Mohu se zeptat, je tady někde na to PDO tutoriál? Přiznám se, ani nevím co to je. Typuji,že to bude něco s o objektama atd...

 
Nahoru Odpovědět
28.10.2013 22:17
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Kamil
Kit:28.10.2013 22:28

Už jsem to sem dnes dával:
http://www.itnetwork.cz/…-a-modularne
Asi budu muset ještě přidat nějaký díl.

Nahoru Odpovědět
28.10.2013 22:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kamil
Člen
Avatar
Kamil:28.10.2013 22:30

Děkuji, prostuduji to.

 
Nahoru Odpovědět
28.10.2013 22:30
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Kamil
Kit:28.10.2013 22:40

Koukám, že dnes bych to už napsal jinak. Přehledněji a s polovičním množstvím kódu.

Nahoru Odpovědět
28.10.2013 22:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Snorlax
Tvůrce
Avatar
Odpovídá na Kit
Snorlax:28.10.2013 23:07

ten pocit znám :D

Nahoru Odpovědět
28.10.2013 23:07
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 24 zpráv z 24.