NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Chyba

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Odpovídá na Ondřej Langr (andysekcze)
Ondřej Langr (andysekcze):29.5.2015 16:52

PS: potom to plánuju narvat do víc souborů ;)

Editováno 29.5.2015 16:54
Odpovědět
29.5.2015 16:52
I have a charger. I have Note 7. Umh I haven't Note7.
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Ondřej Langr (andysekcze)
Ondřej Štorc:29.5.2015 17:16

Mohl bys tu otázku napsat znova?

Nahoru Odpovědět
29.5.2015 17:16
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Ondřej Langr (andysekcze):29.5.2015 17:19

Pomohl by mi někdo vyřešit problém kde je chyba?

Nahoru Odpovědět
29.5.2015 17:19
I have a charger. I have Note 7. Umh I haven't Note7.
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Ondřej Langr (andysekcze)
Ondřej Štorc:29.5.2015 17:22

Ale kde? Ukaž kód a napiš co ti to dělá a co by to mělo dělat...

Nahoru Odpovědět
29.5.2015 17:22
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Ondřej Langr (andysekcze):29.5.2015 17:27
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="vzhled/styl.css" type="text/css">
<link rel="icon" href="vzhled/favicon.ico">
<title>Registrace</title>
</head>

<body class="registrace">
<?php
$jmeno = $_POST["jmeno"];
$heslo = $_POST["heslo"];
$hesloz = $_POST["heslo_znovu"];
$email = $_POST["email"];
$pohl = $_POST["pohl"];
$bydlsite = $_POST["bydliste"];
$den = $_POST["den"];
$mesic = $_POST["mesic"];
$rok = $_POST["rok"];
$vek = "'$den' . '$mesic' . '$rok'";
$trida = $_POST["trida"];
$gym = $_POST["gymnazium"];
$zs = $_POST["zaklskol"];
$jmenoskoly = $_POST["jmenskol"];
$skola = $_POST["skola"];
$pottlac = $_POST["registrivat"];
$potcheck = $_POST["poduziv"];
$errors = array();
if ($_POST["$pottlac && $potcheck"]) {
  if (empty($jmeno)) {
    $errors[] = "Nebylo vyplněno jméno!";
  }
  if (empty($heslo)) {
    $errors[] = "Nebylo vyplněno heslo!";
  }
  if (empty($hesloz)) {
    $errors[] = "Nebylo vyplněno kontrolní heslo!";
  }
  if (empty($email)) {
    $errors[] = "Nebyl vyplněn email!";
        if (empty($vek)) {
    $errors[] = "Nebyl vyplněn věk!";
  }
  if (empty($podcheck)) {
    $errors[] = "Nesouhlasíte s pravidly používání!";
  }

  if (empty($errors)) {
      if (strlen($jmeno) <= 8 AND strlen($jmeno) >= 50) {
      $errors[] = "Jméno obsahuje příliš málo znaků!";
    }
    if ($heslo !== $hesloz) {
      $errors[] = "Zadaná hesla se neshodují!";
    }
    if (strlen($heslo) >=6 && strlen($heslo) <= 32) {
      $errors[] = "Heslo musí obsahovat minimálně 6 a maximálně 32 znaků!";
    }

    if(empty($errors))
    {
      if($zaklskol && $gym){
        $errors[] = "Můžete zvolit pouze jednu možnost!";
      }

          if($gym == 9){
                $errors[] = "Pokud zvolíte Gymnázium, můžete zvolit pouze 1. až 8. ročník!";
          }

      if(empty($skola)){
        $errors[] = "Musíte zadat na kterou školu chodíte!";
          }

    }

    if (empty($errors)) {
        $hesloh = md5(sha1($heslo));
        include "config.php";
        mysql_query("INSERT INTO 'uzivatele' WHERE jmeno='$jmeno' heslo='$hesloh' email='$email' den='$den' mesic='$mesic' rok='$rok' bydliste='$bydliste' pohlavi='$pohl'  skola_druh='$skola' skola='$jmenoskoly' ");
    }
  }
}
?>
<h1 id="cbl">Registrace na ClassBooku.</h1>
<p>
<div class="registrace">
<table>
  <form action="<?php $PHP_SELF; ?>" method="POST" >
    <tr><td>Celé jméno: </td><td><input placeholder="Adam Novák" name="jmeno" type="text" /></td></tr>
    <tr><td>Heslo: </td><td><input type="password" name="heslo" /></td></tr>
    <tr><td>Heslo znovu: </td><td><input type="password" name="heslo_znovu" /></td></tr>
    <tr><td>E-mail: </td><td><input placeholder="[email protected]" type="text" name="email"  /></td></tr>
    <tr><td>Věk: </td><td><select aria-label="den" title="den" name="den" >
    <option value="1" selected="selected" required>01</option>
    <option value="2">02</option>
    <option value="3">03</option>
    <option value="4">04</option>
    <option value="5">05</option>
    <option value="6">06</option>
    <option value="7">07</option>
    <option value="8">08</option>
    <option value="9">09</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>
    <option value="27">27</option>
    <option value="28">28</option>
    <option value="29">29</option>
    <option value="30">30</option>
    <option value="31">31</option>
    </select><select aria-label="měsíc" title="měsíc" name="mesic" required>
    <option value="1" selected="selected">01</option>
    <option value="2">02</option>
    <option value="3">03</option>
    <option value="4">04</option>
    <option value="5">05</option>
    <option value="6">06</option>
    <option value="7">07</option>
    <option value="8">08</option>
    <option value="9">09</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    </select><select name="rok" title="rok" aria-label="rok" required>
    <option value="2015" selected="selected">2015</option>
    <option value="2014">2014</option>
    <option value="2013">2013</option>
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    <option value="2009">2009</option>
    <option value="2008">2008</option>
    <option value="2007">2007</option>
    <option value="2006">2006</option>
    <option value="2005">2005</option>
    <option value="2004">2004</option>
    <option value="2003">2003</option>
    <option value="2002">2002</option>
    <option value="2001">2001</option>
    <option value="2000">2000</option>
    <option value="1999">1999</option>
    <option value="1998">1998</option>
    <option value="1997">1997</option>
    <option value="1996">1996</option>
    <option value="1995">1995</option>
    <option value="1994">1994</option>
    <option value="1993">1993</option>
    <option value="1992">1992</option>
    <option value="1991">1991</option>
    <option value="1990">1990</option>
    <option value="1989">1989</option>
    <option value="1988">1988</option>
    <option value="1987">1987</option>
    <option value="1986">1986</option>
    <option value="1985">1985</option>
    <option value="1984">1984</option>
    <option value="1983">1983</option>
    <option value="1982">1982</option>
    <option value="1981">1981</option>
    <option value="1980">1980</option>
    <option value="1979">1979</option>
    <option value="1978">1978</option>
    <option value="1977">1977</option>
    <option value="1976">1976</option>
    <option value="1975">1975</option>
    <option value="1974">1974</option>
    <option value="1973">1973</option>
    <option value="1972">1972</option>
    <option value="1971">1971</option>
    <option value="1970">1970</option>
    <option value="1969">1969</option>
    <option value="1968">1968</option>
    <option value="1967">1967</option>
    <option value="1966">1966</option>
    <option value="1965">1965</option>
    <option value="1964">1964</option>
    <option value="1963">1963</option>
    <option value="1962">1962</option>
    <option value="1961">1961</option>
    <option value="1960">1960</option>
    <option value="1959">1959</option>
    <option value="1958">1958</option>
    <option value="1957">1957</option>
    <option value="1956">1956</option>
    <option value="1955">1955</option>
    <option value="1954">1454</option>
    <option value="1953">1953</option>
    <option value="1952">1952</option>
    <option value="1951">1951</option>
    <option value="1950">1950</option>
    <option value="1949">1949</option>
    <option value="1948">1948</option>
    <option value="1947">1947</option>
    <option value="1946">1946</option>
    <option value="1945">1945</option>
    <option value="1944">1944</option>
    <option value="1943">1943</option>
    <option value="1942">1942</option>
    <option value="1941">1941</option>
    <option value="1940">1940</option>
    <option value="Už nevím">Už nevím</option>
    </select></td></tr>
    <tr><td>Bydliště: </td><td><input name="bydliste" type="text" required /></td></tr>
    <tr><td>Jsem: </td><td><select aria-label="Pohlaví" title="Pohlaví" name="pohl" >
    <option value="Muž" selected="selected">Muž</option>
    <option value="žena">žena</option>
    <option value="Jiné">Jiné</option>
    <option value="Bůh">Bůh</option>
    </select></td></tr>
    <tr><td>Třída: </td><td><select aria-label="Třída" tittle="Třída" name="trida" >
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    </select></td></tr>
    <tr><td>Škola:     </td><td><select aria-label="Škola" label="Škola" name="skola">
    <option value="zaklskol" selected="selected">ZŠ</option>
    <option value="gymnazium">VG</option>
    </select><input type="text" name="jmenskol" /></td></tr>
    <tr><center><td colspan="2"><input  name="registrovat" type="submit" value="Registrovat" /></td></center></tr>
    <tr><td colspan="2">Registrací souhlasíte s <a style="color: 1E90FF; text-decoration:none;" href="poduziv.php">podmínkami používání.</a><input name="podpouziv" type="checkbox" alt="Prosím zaškrtněte toto pole." /></td></tr>
   </form>
</table>
</div>
</p>
</body>
</html>

řádek 247 prej chyba. mělo by to dělat: vložit uživatele do db se všema vyplněnýma polemi (pochopitelně) ;)

Nahoru Odpovědět
29.5.2015 17:27
I have a charger. I have Note 7. Umh I haven't Note7.
Avatar

Člen
Avatar
:29.5.2015 17:30

Nemuzes vkladat s podminkou WHERE... Vklada se VALUES(hodnoty k vlozeni)

 
Nahoru Odpovědět
29.5.2015 17:30
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Ondřej Langr (andysekcze)
Jan Lupčík:29.5.2015 18:17

Hele, víš, že jsi mohl ty roky a dny si dát do cyklu for a nemusel by jsi toho tolik vypisovat? :D

$rok = 2015;
for($i = 0; $i < 75; $i++)
{
    echo "<select value='" . $rok . "'>" . $rok . "</select>";
    $rok--;
}

Jinak jak píše [me|]1760[/me|] - musíš mít dotaz ve tvaru (při vkládání):

INSERT INTO tabulka(sloupec1, sloupec2, sloupec3) VALUES($promenna1, $promenna2, $promenna)

Btw. není zde ošetřena SQL injection stejně jako u tebe. A mysql_query jsou zastaralé. Koukni na zdejší tutoriály na PDO, kde vyřešíš i tu SQL injection. :)

Nahoru Odpovědět
29.5.2015 18:17
TruckersMP vývojář
Avatar

Člen
Avatar
:29.5.2015 18:18

Omlouvám se za doublepost, ale předtím jsem psal z mobilu, takže to teď trochu rozvinu... Správně to má být:

INSERT INTO 'uzivatele' VALUES(jmeno='$jmeno', heslo='$hesloh', email='$email', den='$den', mesic='$mesic', rok='$rok', bydliste='$bydliste', pohlavi='$pohl,' skola_druh='$skola', skola='$jmenoskoly')"

A rada pro tebe - používej PDO. Velmi dobře udělaný wrapper nalezneš zde na síti v tutoriálech MySQL pro začátečníky (teď přesně nevím, jak se to jmenuje, tak se omlouvám za případné chybky). Ovládat se ho naučíš za chvíli (Db::query, Db::querySingle, Db::queryOne, Db::queryAll) - vše najdeš v tutorialu, a určitě to stojí za bezpečnost, kterou tím získáš. Takhle můžu na tvůj web použít SQL injection (upravit dotaz).
//EDIT Kurňa, předběhl mě IT Man

Editováno 29.5.2015 18:19
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
29.5.2015 18:18
Avatar
Martin Konečný (pavelco1998):29.5.2015 18:28

Jsem rád, že alespoň použil něco z našich článků a kontroluje formulář tím hezčím způsobem :D

Nicméně bych ještě doporučil přečíst něco o SQL injection.

Nahoru Odpovědět
29.5.2015 18:28
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Ondřej Langr (andysekcze):29.5.2015 21:10

všem hrozně moc děkuji za pomoc... Nejradši bych označil všechny odpovědi jako řešení :)

Nahoru Odpovědět
29.5.2015 21:10
I have a charger. I have Note 7. Umh I haven't Note7.
Avatar

Člen
Avatar
Odpovídá na Ondřej Langr (andysekcze)
:29.5.2015 21:17

Ještě rada pro tebe - na ty roky si napiš v PHP cyklus. Bude to mnohem méně kódu, ale pro uživatele to samé :-)
//EDIT Aha, IT Man už ti to poradil... Měly by se tu dát mazat příspěvky...

Editováno 29.5.2015 21:18
 
Nahoru Odpovědět
29.5.2015 21:17
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na
Jan Lupčík:29.5.2015 21:24

Vždy ti vezmu myšlenku ... :D

I na ty dny. Tam stačí obyčejný $i, které můžeš jen vypsat i s tou hodnotou (stejné jako u roků, akorát u měsíců stačí jedna proměnná).

Nahoru Odpovědět
29.5.2015 21:24
TruckersMP vývojář
Avatar
Odpovídá na Jan Lupčík
Martin Konečný (pavelco1998):29.5.2015 22:00

Možná by bylo vhodnější nepsat aktuální rok staticky, aby to nemusel každý rok upravovat :D

$rok = (int) date("Y");
$min = $rok - 75;
for (; $rok >= $min; $rok--) {
  echo "<option value='{$rok}'>{$rok}</option>";
}
Nahoru Odpovědět
29.5.2015 22:00
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
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 13 zpráv z 13.