Diskuze: MySQL
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 30 zpráv z 30.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
To znamená ? ja som tie
kódy nerobil takže sa dotoho veľmi nerozumiem.
a řádku $id = $zaznam['id'] ti chybí středník
$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.
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.
Teraz mi stránku nechce načítať. Nemáte niejaký normálny návod na tvorbu databázi na webzdarma ? táto nefunguje.
Zkus třeba tohle:
http://www.itnetwork.cz/…-a-modularne
ale na WZ fungují použitelně všechny databáze kromě MySQL.
Aha. Tak ja viacero databáz nepoznám to je premňa novinka.
A môžem prepojiť wz z databázou na endore ? Bude to fungovať ?
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.
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.
Jestli ti už funguje ten původní skript, tak je to docela neštěstí.
v podstate ani nevím co mi funguje Jen to nechce zapisovat do databáze pass a username
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'];
}
}
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.
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 !'>";
?>
Celé to smaž a ušetříš si práci Máš tam sql injekce, starý
ovladač k db, logiku pomíchanou s výstupem,...
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.
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í.
Proč je lepší přesměrovat a nvypisovat žádné HTML ? Rád se
přiučím
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í.
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?
na ten, jak jsi říkal, že zásadně se to nedává mezi tagy
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.
ok, trochu mě to právě zaskočilo, asi jsem ten komentář špatně pochopil.
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.
Zobrazeno 30 zpráv z 30.