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
­Villagers
Člen
Avatar
­Villagers:28.10.2013 8:35

nazdarm potreboval by som poradiť z chybou veraj na line 20 (20 riadku) no ja tam žiadnu cjybu nevidím. Diki za radu.
Parse error: syntax error, unexpected T_VARIABLE in /3w/wz.sk/v/vi­llagers/test/ad­min.php on line 20

<?php
echo '<html lang="cs-cz">';
echo "<head>
      <meta charset='utf-8'>
      <link rel='stylesheet' href='admin.css' type='text/css'>
      <title>Administrace</title>
      </head>";


  $username = $_POST['username'];
  $password = $_POST['password'];
  $email = $_POST['email'];
  $ip = $_SERVER['REMOTE_ADDR'];
  $validation = $_POST['validation'];
  $submit = $_POST['submit'];
  $dotaz = mysql_query("SELECT * FROM users WHERE username='$username', password='$password', email='$email', validation='3', ip='$ip' ;");
            while($zaznam = mysql_fetch_array($dotaz))
            {
              $id = $zaznam['id']
              $username = $zaznam['username'];
              $email = $zaznam['email'];
              $ip = $zaznam['ip'];

              echo "Uzivatelske meno <strong>$username</strong>";
              echo "E-mailova adresa <i>$email</i>";
              echo "Vaše ip <i>$ip</i>";



            }

  include ('connect.php');

    if($submit) {


    }
    else {

    header("Location: admin.php");

    }
 
Odpovědět
28.10.2013 8:35
Avatar
Kit
Tvůrce
Avatar
Odpovídá na ­Villagers
Kit:28.10.2013 8:49

Chybí ti tam středník.

Nahoru Odpovědět
28.10.2013 8:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
­Villagers
Člen
Avatar
Odpovídá na Kit
­Villagers:28.10.2013 9:08

To znamená ? :) ja som tie kódy nerobil takže sa dotoho veľmi nerozumiem.

 
Nahoru Odpovědět
28.10.2013 9:08
Avatar
Odpovídá na ­Villagers
Michal Žůrek - misaz:28.10.2013 9:12

a řádku $id = $zaznam['id'] ti chybí středník

 
Nahoru Odpovědět
28.10.2013 9:12
Avatar
Kit
Tvůrce
Avatar
Odpovídá na ­Villagers
Kit:28.10.2013 9:17
              $id = $zaznam['id']
// Tady ti chybí ten středník----^

To znamená, že bys ten program neměl používat, protože je úplně špatně. Používá POST tam, kde má být GET. Je děravý jak řešeto. Má SQL injection i XSS injection. Nemá šifrovaná hesla v databázi. Používá zastaralý přístup k databázi, který v dalších verzích PHP již nebude podporován.

Editováno 28.10.2013 9:17
Nahoru Odpovědět
28.10.2013 9:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 9:21

no tieto kody som nerobil ja ale programátor ktorí tu už pridal dve články kde mu tiež nefungujú kódy na mojej stránke kde sa snažíme vytvoriť databázu.

 
Nahoru Odpovědět
28.10.2013 9:21
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 9:25

Teraz mi stránku nechce načítať. Nemáte niejaký normálny návod na tvorbu databázi na webzdarma ? táto nefunguje.

 
Nahoru Odpovědět
28.10.2013 9:25
Avatar
Kit
Tvůrce
Avatar
Odpovídá na ­Villagers
Kit:28.10.2013 9:32

Zkus třeba tohle:
http://www.itnetwork.cz/…-a-modularne
ale na WZ fungují použitelně všechny databáze kromě MySQL.

Nahoru Odpovědět
28.10.2013 9:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 9:36

Aha. Tak ja viacero databáz nepoznám to je premňa novinka.

 
Nahoru Odpovědět
28.10.2013 9:36
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 9:38

A môžem prepojiť wz z databázou na endore ? Bude to fungovať ?

 
Nahoru Odpovědět
28.10.2013 9:38
Avatar
Kit
Tvůrce
Avatar
Odpovídá na ­Villagers
Kit:28.10.2013 9:42

Teoreticky by to sice šlo, ale o spolehlivosti by sis mohl nechat zdát. Nejde to však propojit přímo, pouze přes nějaké RESTapi. Nedělal bych to.

Na WZ mám dobré zkušenosti s databází SQLite.

Nahoru Odpovědět
28.10.2013 9:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 9:50

Takže už mi to ide. Zapisuje to užívateľov do databázy aj ked tam je nejaký bug a zapisuje mi to len ip,id,validation a email.

 
Nahoru Odpovědět
28.10.2013 9:50
Avatar
Kit
Tvůrce
Avatar
Odpovídá na ­Villagers
Kit:28.10.2013 9:55

Jestli ti už funguje ten původní skript, tak je to docela neštěstí.

Nahoru Odpovědět
28.10.2013 9:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 9:57

v podstate ani nevím co mi funguje :) Jen to nechce zapisovat do databáze pass a username

 
Nahoru Odpovědět
28.10.2013 9:57
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 10:00

oukej vkladám další kod ktorí tiež nefunguje: login.

<?
session_start();
?>
<?
echo "<html lang='cz-cs'>";
echo "<head>
      <title>Prihlásiť</title>
      <meta charset='UTF-8'>
      <link rel='stylesheet' href='styles.css'>";

  $id = $_POST['id'];
  $submit = $_POST['submit'];

echo "<form action='login.php' methnod='POST'>
      Uživatelké jméno: <input type='text' name='username' title='Meno'><br>
      Heslo: <input typpe='password' name='password' title='Heslo'><br>
            <input type='submit' name='submit' value='Login'>";

  if($submit)
  {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $query = mysql_num_rows($dotaz);
    $dotaz = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password' ;");
            while($zaznam = mysql_fetch_array($dotaz))
            {
              $username = $zaznam['username'];
              $password = $zaznam['password'];
              $email = $zaznam['email'];
              $validation = $zaznam['validation'];

             }


  }
 
Nahoru Odpovědět
28.10.2013 10:00
Avatar

Člen
Avatar
:28.10.2013 10:40

Dává ti to metodou GET, protože tam máš

methnod='POST'

máš tam N navíc...mělo by to být takhle

method='POST'
Editováno 28.10.2013 10:41
 
Nahoru Odpovědět
28.10.2013 10:40
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:28.10.2013 10:47

Na SELECTy se stejně má používat GET, takže by to mělo být jedno. Jenom by to měl i zpracovat jako GET.

Nahoru Odpovědět
28.10.2013 10:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 12:42

Takže. Index je tak pekne blbý že nevie spracovávať a nevie rozlíšiť registráciu a login. Zase dávam do vedomia že som to nerobil ja. Ked vyplním registráciu, do databázy mi vloží len email. Ked vyplním login a stlačím registrovať sa, do databázy sa zapíše username aj pass. Takže kód nevie čo má kjde spracovať. Mohli by ste mi to prosím nejak rozdeliť ? Osobitný kód na login a osobitný kód na registráciu. Je tam vlasnte blbé spojenie. kód indexu:

<?php
session_start();
echo '<head>
      <title>Villligers Online</title>
      <meta charset="UTF-8">
      </head>';
  include ("connect.php");
  $id = $_POST['id'];
  $username = $_POST['username'];
  $password = $_POST['password'];
  $email = $_POST['email'];
  $ip = $_SERVER['REMOTE_ADDR'];
  $validation = $_POST['validation'];
  $submit = $_POST['submit'];



  echo '<form action "index.php" method="POST">
        Uživateské jméno:<input type="text" name="username" title="Sem zadejte Uživatelské jméno, které se Vám bude zobrazovat v profilu"><br>
        Heslo: <input type="password" name="password" title="Sem zadejte heslo, které si zapamatujete" ><br>
        Email: <input type="text" name="email" title="Sem zadejte Váš e-mail, na který budete dostávat informace o tom, co se děje na webu"><br>

              <input type="submit" name="submit" value="Registrovat se do hry !"><br>';


  if ($submit) {
  echo "<p style='color:green'>Bol si úspešne registrovaný.</p><br>";
  echo "Uživ. jméno : $username <br>";
  echo "Heslo : <i>Vaše tahné heslo</i><br>";
  echo "Email: $email<br>";

  }
  else
      echo "<p style='color:green'>Vitaj vo Villagers</p>";

$zapis = mysql_query("INSERT INTO users SET username='$username', password='$password', email='$email', validation='1', ip='$ip' ;");

echo "<form action='login.php?id=$id' method='POST'>
      Uživatelké jméno: <input type='text' name='username'><br>
      Heslo: <input typpe='password' name='password'><br>
            <input type='submit' name='submit' value='Přihlásit se !'>";



?>
 
Nahoru Odpovědět
28.10.2013 12:42
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na ­Villagers
Petr Nymsa:28.10.2013 12:44

Celé to smaž a ušetříš si práci :) Máš tam sql injekce, starý ovladač k db, logiku pomíchanou s výstupem,...

Nahoru Odpovědět
28.10.2013 12:44
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 12:45

Vlastním hru Villagers na ktorej mám ochvíľu 30 hráčov no a celú bez databáze. Tak stím treba niečo robiť aby hra pracovala sama.

 
Nahoru Odpovědět
28.10.2013 12:45
Avatar
Kit
Tvůrce
Avatar
Odpovídá na ­Villagers
Kit:28.10.2013 12:45

Pamatuj si jedno základní pravidlo: Pokud zapisuješ do databáze, nikdy nevypisuj žádné HTML. Ani hlavičky, vůbec nic. Pouze udělej přesměrování.

Nahoru Odpovědět
28.10.2013 12:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
­Villagers
Člen
Avatar
­Villagers:28.10.2013 12:46

Myslíš tady ?

 
Nahoru Odpovědět
28.10.2013 12:46
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Kit
Petr Nymsa:28.10.2013 13:05

Proč je lepší přesměrovat a nvypisovat žádné HTML ? Rád se přiučím :)

Nahoru Odpovědět
28.10.2013 13:05
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Petr Nymsa
Kit:28.10.2013 13:14

Aby uživatel nemohl stisknutím F5 odeslat data znovu a aby se to neukládalo do historie browseru. Také je nutné v MVC nějak přesměrovat controller do vieweru a protože spolu nemají (kromě modelu) žádnou vazbu, tak je to jedno z nejjednodušších řešení.

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

ale když chci ten element nastylovat a chci, aby se toi zobrazilo v tom nastylovaným elementu, tak to přece musím dát do toho tagu, nebo snad ne?

 
Nahoru Odpovědět
28.10.2013 13:37
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:28.10.2013 14:10

Jakého tagu? Na který příspěvek reaguješ?

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

na ten, jak jsi říkal, že zásadně se to nedává mezi tagy

Editováno 28.10.2013 14:17
 
Nahoru Odpovědět
28.10.2013 14:16
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:28.10.2013 14:30

To jsem nikde nenapsal. Pouze "nikdy nevypisuj žádné HTML". Žádné tagy jsem nezmiňoval a když není HTML ani text, tak ani není co stylovat.

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

ok, trochu mě to právě zaskočilo, asi jsem ten komentář špatně pochopil.

 
Nahoru Odpovědět
28.10.2013 14:41
Avatar
Kit
Tvůrce
Avatar
Odpovídá na albertpatera
Kit:28.10.2013 14:50

To nic, v tomhle se hodně často chybuje. Kdekdo vypíše hlavičku HTML a pak teprve začne testovat, zda mu náhodou něco nepřišlo přes POST. Když pak chce třeba odeslat cookie, tak už nemůže. Stejně se z té stránky nic nezobrazí, takže je zbytečné ji vytvářet.

Nahoru Odpovědět
28.10.2013 14:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 30 zpráv z 30.