Diskuze: MySQL

Ostatní jazyky SQL SQL a databáze MySQL

Avatar
­Villagers
Člen
Avatar
­Villagers:

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
Redaktor
Avatar
Odpovídá na ­Villagers
Kit:

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:

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):

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

Nahoru Odpovědět 28.10.2013 9:12
Nesnáším {}, proto se jim vyhýbám.
Avatar
Kit
Redaktor
Avatar
Odpovídá na ­Villagers
Kit:
              $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:

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:

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
Redaktor
Avatar
Odpovídá na ­Villagers
Kit:

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:

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:

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

 
Nahoru Odpovědět 28.10.2013 9:38
Avatar
Kit
Redaktor
Avatar
Odpovídá na ­Villagers
Kit:

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:

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
Redaktor
Avatar
Odpovídá na ­Villagers
Kit:

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:

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:

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
Hammy350
Člen
Avatar
Hammy350:

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
Redaktor
Avatar
Odpovídá na Hammy350
Kit:

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:

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
Redaktor
Avatar
Odpovídá na ­Villagers
Petr Nymsa:

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:

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
Redaktor
Avatar
Odpovídá na ­Villagers
Kit:

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:

Myslíš tady ?

 
Nahoru Odpovědět 28.10.2013 12:46
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Kit
Petr Nymsa:

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
Redaktor
Avatar
Odpovídá na Petr Nymsa
Kit:

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  +1 28.10.2013 13:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Kit
albertpatera:

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
Redaktor
Avatar
Odpovídá na albertpatera
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
albertpatera:

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
Redaktor
Avatar
Odpovídá na albertpatera
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
albertpatera:

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
Redaktor
Avatar
Odpovídá na albertpatera
Kit:

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.