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
Tano7
Člen
Avatar
Tano7:19.7.2019 4:58

Ahoj. :-) ;-)
Dělám na registračním formuláři. Pro nové uživatele je registrace jméno, email a heslo.
Pro stávající jen jméno a heslo.
Databázi "practice" a tabulku "user" v MySQL mám vytvořenou správně.
Mám vytvořené a naprogramované soubory: registration.php, login.php, server.php, index.php, errors.php
Testuji na WAMPserveru. Cesty dobře nastavené.
Funguje jen login.php

Při přechodu z login.php na registration.php hlásí chybu "Parse error: syntax error, unexpected '}' in C:\wamp64\www\re­gistrace\server­.php on line 25"
Chybu nedokážu odstranit ze souboru server.php z 25. řádku:
if(empty($user­name)) {array_push ($errors, "Zadejte uživatelské jméno / Username is required")};
Prosím o pomoc. Díky! ;-)

Zdroják server.php:


<?php

session_start();

$username = "";
$email = "";

$errors = array();

$db = mysqli_connec­t('localhost', 'root', '', 'practice') or die("Nelze se připojit k databázi / Could not connect to database");

//registrace uzivatele

$username = mysqli_real_es­cape_string($db, $_POST['userna­me']);
$email = mysqli_real_es­cape_string($db, $_POST['email']);
$password1 = mysqli_real_es­cape_string($db, $_POST['passwor­d1']);
$password2 = mysqli_real_es­cape_string($db, $_POST['passwor­d2']);

//validace formuláře, overeni vstupnich udaju

if(empty($user­name)) {array_push ($errors, "Zadejte uživatelské jméno / Username is required")};
if(empty($email)) {array_push($e­rrors, "Zadejte email / Email is required")};
if(empty($pas­sword1)) {array_push($e­rrors, "Zadejte heslo / Password is required")};
if($password1 != $password2) {array_push($e­rrors, "Hesla se neshodují / Passwords do not match")};

$user_check_query = "SELECT * FROM user WHERE username= '$username' OR email = '$email' LIMIT 1";
$result = mysqli_query($db, $user_check_query);
$user = mysqli_fetch_as­soc($result);

if($user){
if($user['user­name'] === $username){
array_push($errors, "Uživatelské jméno již existuje / Username already exists");
}

if($user['email'] === $email){
array_push($errors, "Toto e-mailové ID již existuje / This email id already exists registered username");
}
}

if(count($errors) == 0){
$password = md5($password1);
print $password;
$query = * INSERT INTO user (username, email, password)
VALUES ('$username', '$email', '$password');
mysqli_query($db, $query);
$_SESSION['user­name'] = $username;
$_SESSION['suc­cess'] = "Nyní jste přihlášen / You are now logged in";
header('location: index.php');
}
}

if(isset($_POS­T['login_user'])){

$username = mysqli_real_es­cape_string($db, $_POST)['user­name']);
$password = mysqli_real_es­cape_string($db, $_POST)['passwor­d']);

if(empty($user­name)){

array_push($errors, "Je vyžadováno uživatelské jméno / Username is required")
}
if(empty($pas­sword)){

array_push($errors, "Je vyžadováno heslo / Password is required")
}

if(count($errors) == 0){

$password = md5($password);

$query = "SELECT * FROM user WHERE username = '$username' AND password = '$password' ";
$results = mysqli_query($db, $query);

if(mysqli_num_row­s($results)) {

$_SESSION['user­name'] = $username;
$_SESSION['suc­cess'] = "Jste úpěšně přihlášen / Logged in successfully";
header('location: index.php');
} else {
array_push($errors, "Nesprávná kombinace uživatelského jména a hesla. Prosím zkuste to znovu. / Wrong username/password combination. Please try again.")
}
}

Zkusil jsem: Nevím si rady :-(

Chci docílit: Funkčnosti registrace.

Odpovědět
19.7.2019 4:58
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Odpovídá na Tano7
Tomáš Novotný:19.7.2019 6:34

Ahoj,
problém bude na konci řádku.. ";" ukončuje příkaz tj. array_push, složené závorky ohraničují blok většinou více příkazů.. ty jsi ukončil blok příkazů aniž bys ukončil array_push

if(empty($username)) {array_push ($errors, "Zadejte uživatelské jméno / Username is required");}
Nahoru Odpovědět
19.7.2019 6:34
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Tano7
Člen
Avatar
Odpovídá na Tomáš Novotný
Tano7:20.7.2019 22:38

Ahoj, vidím, že jsi profík.

Díky za radu, bylo to v závorkách, misto ) hranata ]
správně je:
"if(empty($user­name)) [array_push ($errors, "Zadejte uživatelské jméno / Username is required")];
Odladil jsem ostatni errory a zbývá poslední:
:-( Parse error: syntax error, unexpected end of file in C:\wamp64\www\re­gistrace\server­.php on line 85
Zkoušel jsem to v poslednim radku ukončit vším možným ) } ] ?>
a nic nefunguje :-(

Prosím o pomoc... díky mooc :-)

<?php

session_start();
//inicializace proměnných

$username = "";
$email = "";

$errors = array(); // error v poli

// spojeni s databazi

$db = mysqli_connec­t('localhost', 'root', '', 'practice') or die("Nelze se připojit k databázi / Could not connect to database");

//registrace uzivatele

$username = mysqli_real_es­cape_string($db, $_POST['userna­me']);
$email = mysqli_real_es­cape_string($db, $_POST['email']);
$password1 = mysqli_real_es­cape_string($db, $_POST['passwor­d1']);
$password2 = mysqli_real_es­cape_string($db, $_POST['passwor­d2']);

//validace formuláře, overeni vstupnich udaju
//jestlize promenna "username" je prazdna(empty), uzivatel nezadal jmeno, vypis promennou $errors s textem "Zadejte uživatelské jméno/ Username is required"

if(empty($user­name)) [array_push ($errors, "Zadejte uživatelské jméno / Username is required")];
if(empty($email)) [array_push($e­rrors, "Zadejte email / Email is required")];
if(empty($pas­sword1)) [array_push($e­rrors, "Zadejte heslo / Password is required")];
if($password1 != $password2) [array_push($e­rrors, "Hesla se neshodují / Passwords do not match")];

// zkontrolujte existujícího uživatele se stejným uzivatelem, jestli se shoduji
$user_check_query = "SELECT * FROM user WHERE username= '$username' OR email = '$email' LIMIT 1"; //$user_check_query kontrola pripojeni k databazi
$result = mysqli_query($db, $user_check_query); //mysqli_fetch_as­soc () vrátí řádky z počtu záznamů dostupných v databázi jako asociativní pole
$user = mysqli_fetch_as­soc($result);

if($user){ //jestlize v jmeno uzivatele je jiz v databazi, === pokud je rovno, vypis hlasku "Uživatelské jméno již existuje / Username already exists"
if($user['user­name'] === $username){
array_push($errors, "Uživatelské jméno již existuje / Username already exists");
}

if($user['email'] === $email){
array_push($errors, "Toto e-mailové ID již existuje / This email id already exists registered username");
}
}

//Zaregistrujte uživatele bez chyb / Register the userif no errors
if(count($errors) == 0){
$password = md5($password1); //toto heslo se zašifruje, vlozi do tabulky "user" hodnoty pro username, email, passport
print $password; //query je dotaz
$query = "INSERT INTO user (username, email, password)";
VALUES ('$username', '$email', '$password');
mysqli_query($db, $query);
$_SESSION['user­name'] = $username; //Session (relace)představuje permanentní síťové spojení mezi klientem a serverem, zahrnující výměnu paketů, do Cookies se ukladaji
$_SESSION['suc­cess'] = "Nyní jste přihlášen / You are now logged in";
header('location: index.php'); //header - Odeslání nezpracované HTTP hlavičky. napr. header ( "Location: http://www.example.com/" )
}

//Přrihlášení uživatele / Login user

if(isset($_POS­T['login_user'])){

$username = mysqli_real_es­cape_string($db, $_POST)['user­name'];
$password = mysqli_real_es­cape_string($db, $_POST)['passwor­d'];

if(empty($user­name)) [array_push($e­rrors, "Je vyžadováno uživatelské jméno / Username is required")];

if(empty($pas­sword)) [array_push($e­rrors, "Je vyžadováno heslo / Password is required")];
}

if(count($errors) == 0) { //count - Spočítá prvky v poli, případně v objektu

$password = md5($password); //md5 - zasifruj heslo

$query = "SELECT * FROM user WHERE username = '$username' AND password = '$password'"; //dotaz> vyber vsechno z tabulky z nazvem user kdyz username-jmeno uzivatele je shodne z jeho heslem
$results = mysqli_query($db, $query); //results - vysledek

if (mysqli_num_row­s($results)) {

$_SESSION['user­name'] = $username;
$_SESSION['suc­cess'] = "Jste úpěšně přihlášen / Logged in successfully";
header('location: index.php');
} else[(array_push($e­rrors,
"Nesprávná kombinace uživatelského jména a hesla. Prosím zkuste to znovu.
/ Wrong username/password combination. Please try again."))];
radek 85

Nahoru Odpovědět
20.7.2019 22:38
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Odpovídá na Tano7
Neaktivní uživatel:20.7.2019 22:58

Ahoj, příště odesílej kód jako kód (když dáš </>). Dále jsem si všiml že hesla hashuješ pomocí funkce MD5, což je dost nebezpečná funkce a neměla by se používat pro hesla. Pro hesla se používá např. bcrypt, který je implementovaný ve funkci password_hash a ověřuje se pomocí password_verify.
https://www.php.net/…ord-hash.php
https://www.php.net/…d-verify.php

Nahoru Odpovědět
20.7.2019 22:58
Neaktivní uživatelský účet
Avatar
Odpovídá na Tano7
Matúš Olejník:20.7.2019 23:08

Ahoj, nerobím v php, ale ako si prišiel na to, že tam má byť hranatá zátvorka a ako si prišiel na to, že je to správne? :D

https://www.itnetwork.cz/…inky-if-else

Nahoru Odpovědět
20.7.2019 23:08
/* I am not sure why this works but it fixes the problem */
Avatar
Pavel Vácha
Člen
Avatar
Pavel Vácha:20.7.2019 23:14

Zkus takhle.

<?php
session_start();
//inicializace proměnných
$username = "";
$email    = "";
$errors   = array(); // error v poli
// spojeni s databazi
$db = mysqli_connect('localhost', 'root', '', 'practice') or die("Nelze se připojit k databázi / Could not connect to database");
//registrace uzivatele
$username  = mysqli_real_escape_string($db, $_POST['username']);
$email     = mysqli_real_escape_string($db, $_POST['email']);
$password1 = mysqli_real_escape_string($db, $_POST['password1']);
$password2 = mysqli_real_escape_string($db, $_POST['password2']);
//validace formuláře, overeni vstupnich udaju
//jestlize promenna "username" je prazdna(empty), uzivatel nezadal jmeno, vypis promennou $errors s textem "Zadejte uživatelské jméno/ Username is required"
if (empty($username))
    array_push($errors, "Zadejte uživatelské jméno / Username is required");
if (empty($email))
    array_push($errors, "Zadejte email / Email is required");
if (empty($password1))
    array_push($errors, "Zadejte heslo / Password is required");
if ($password1 != $password2)
    array_push($errors, "Hesla se neshodují / Passwords do not match");
// zkontrolujte existujícího uživatele se stejným uzivatelem, jestli se shoduji
$user_check_query = "SELECT * FROM user WHERE username= '$username' OR email = '$email' LIMIT 1"; //$user_check_query kontrola pripojeni k databazi
$result           = mysqli_query($db, $user_check_query); //mysqli_fetch_assoc () vrátí řádky z počtu záznamů dostupných v databázi jako asociativní pole
$user             = mysqli_fetch_assoc($result);
if ($user) { //jestlize v jmeno uzivatele je jiz v databazi, === pokud je rovno, vypis hlasku "Uživatelské jméno již existuje / Username already exists"
    if ($user['username'] === $username) {
        array_push($errors, "Uživatelské jméno již existuje / Username already exists");
    }
    if ($user['email'] === $email) {
        array_push($errors, "Toto e-mailové ID již existuje / This email id already exists registered username");
    }
}
//Zaregistrujte uživatele bez chyb / Register the userif no errors
if (count($errors) == 0) {
    $password = md5($password1); //toto heslo se zašifruje, vlozi do tabulky "user" hodnoty pro username, email, passport
    print $password; //query je dotaz
    $query = "INSERT INTO user (username, email, password)";
    VALUES('$username', '$email', '$password');
    mysqli_query($db, $query);
    $_SESSION['username'] = $username; //Session (relace)představuje permanentní síťové spojení mezi klientem a serverem, zahrnující výměnu paketů, do Cookies se ukladaji
    $_SESSION['success']  = "Nyní jste přihlášen / You are now logged in";
    header('location: index.php'); //header - Odeslání nezpracované HTTP hlavičky. napr. header ( "Location: http://www.example.com/" )
}
//Přrihlášení uživatele / Login user
if (isset($_POST['login_user'])) {
    $username = mysqli_real_escape_string($db, $_POST['username']);
    $password = mysqli_real_escape_string($db, $_POST['password']);
    if (empty($username))
        array_push($errors, "Je vyžadováno uživatelské jméno / Username is required");
    if (empty($password))
        array_push($errors, "Je vyžadováno heslo / Password is required");
}
if (count($errors) == 0) { //count - Spočítá prvky v poli, případně v objektu
    $password = md5($password); //md5 - zasifruj heslo
    $query    = "SELECT * FROM user WHERE username = '$username' AND password = '$password'"; //dotaz> vyber vsechno z tabulky z nazvem user kdyz username-jmeno uzivatele je shodne z jeho heslem
    $results  = mysqli_query($db, $query); //results - vysledek
    if (mysqli_num_rows($results)) {
        $_SESSION['username'] = $username;
        $_SESSION['success']  = "Jste úpěšně přihlášen / Logged in successfully";
        header('location: index.php');
    } else {
        array_push($errors, "Nesprávná kombinace uživatelského jména a hesla. Prosím zkuste to znovu.
/ Wrong username/password combination. Please try again.");
    }
}
 
Nahoru Odpovědět
20.7.2019 23:14
Avatar
Tano7
Člen
Avatar
Tano7:21.7.2019 1:31

Díky moc všem za zkušené rady :-)
Zkoušel jsem tyto možnosti a výsledek:
Správně:
if(empty($user­name)) [array_push ($errors, "Zadejte uživatelské jméno / Username is required")];
if(empty($user­name)) array_push ($errors, "Zadejte uživatelské jméno / Username is required");

Špatně:
if(empty($user­name)) {array_push ($errors, "Zadejte uživatelské jméno / Username is required")};
**
Díky Matěj**i za password_hash, použil jsem
$password = BCRYPT($passwor­d1);
$password = BCRYPT($password);
Ještě verify musím nějak přidat.

Díky Pavle, použil jsem Tvůj kód a uzavřelo se to, už né chyba na posledním řádku 85. ;-)
server.php hlásí v něm chyby na řádcích 10,11,12,13 :-(

<?php
session_start();
//inicializace proměnných
$username = "";
$email = "";
$errors = array();  // error v poli
// spojeni s databazi
$db = mysqli_connect('localhost', 'root', '', 'practice') or die("Nelze se připojit k databázi / Could not connect to database");
//registrace uzivatele
$username = mysqli_real_escape_string($db, $_POST['username']);
$email = mysqli_real_escape_string($db, $_POST['email']);
$password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
$password_2 = mysqli_real_escape_string($db, $_POST['password_2']);
//validace formuláře, overeni vstupnich udaju
//jestlize promenna "username" je prazdna(empty), uzivatel nezadal jmeno, vypis promennou $errors s textem "Zadejte uživatelské jméno/ Username is required"

if(empty($username)) array_push ($errors, "Zadejte uživatelské jméno / Username is required");
if(empty($email))
    array_push($errors, "Zadejte email / Email is required");
if(empty($password_1))
    array_push($errors, "Zadejte heslo / Password is required");
if($password_1 != $password_2)
    array_push($errors, "Hesla se neshodují / Passwords do not match");
// zkontrolujte existujícího uživatele se stejným uzivatelem, jestli se shoduji
$user_check_query = "SELECT * FROM user WHERE username= '$username' OR email = '$email' LIMIT 1";  //$user_check_query  kontrola pripojeni k databazi
$result = mysqli_query($db, $user_check_query);  //mysqli_fetch_assoc () vrátí řádky z počtu záznamů dostupných v databázi jako asociativní pole
$user = mysqli_fetch_assoc($result);
if($user){   //jestlize v jmeno uzivatele je jiz v databazi, === pokud je rovno, vypis hlasku "Uživatelské jméno již existuje / Username already exists"
    if($user['username'] === $username){
        array_push($errors, "Uživatelské jméno již existuje / Username already exists");
    }
    if($user['email'] === $email){
        array_push($errors, "Toto e-mailové ID již existuje / This email id already exists registered username");
    }
}
//Zaregistrujte uživatele bez chyb / Register the userif no errors
if(count($errors) == 0){
    $password = BCRYPT($password_1);  //toto heslo se zašifruje, vlozi do tabulky "user" hodnoty pro username, email, passport
    print $password;  //query je dotaz
    $query = "INSERT INTO user (username, email, password)";
    VALUES ('$username', '$email', '$password');
    mysqli_query($db, $query);
    $_SESSION['username'] = $username;  //Session (relace)představuje permanentní síťové spojení mezi klientem a serverem, zahrnující výměnu paketů, do Cookies se ukladaji
    $_SESSION['success'] = "Nyní jste přihlášen / You are now logged in";
    header('location: index.php');  //header - Odeslání nezpracované HTTP hlavičky. napr. header ( "Location: www.neco_cz" )
}
//Přrihlášení uživatele / Login user
if (isset($_POST['login_user'])) {
    $username = mysqli_real_escape_string($db, $_POST)['username'];
    $password = mysqli_real_escape_string($db, $_POST)['password'];
    if(empty($username))
        array_push($errors, "Je vyžadováno uživatelské jméno / Username is required");
    if(empty($password))
        array_push($errors, "Je vyžadováno heslo / Password is required");
}
if(count($errors) == 0) {   //count - Spočítá prvky v poli, případně v objektu
    $password = BCRYPT($password);  // zasifruj heslo
    $query = "SELECT * FROM user WHERE username = '$username' AND password = '$password'";   //dotaz> vyber vsechno z tabulky z nazvem user kdyz username-jmeno uzivatele je shodne z jeho heslem
    $results = mysqli_query($db, $query);  //results - vysledek
    if (mysqli_num_rows($results)) {
        $_SESSION['username'] = $username;
        $_SESSION['success'] = "Jste úpěšně přihlášen / Logged in successfully";
        header('location: index.php');
    } else {
        array_push($errors, "Nesprávná kombinace uživatelského jména a hesla. Prosím zkuste to znovu.
         / Wrong username/password combination. Please try again.");
    }
}
Nahoru Odpovědět
21.7.2019 1:31
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Tano7
Člen
Avatar
Odpovídá na Pavel Vácha
Tano7:21.7.2019 2:57

Pavle, posílám ten login.php, dikes.

<!DOCTYPE html>
<!--
 Created by PhpStorm
 User: Vít Šoukal
 Date: 18.07.2019
  -->
<html>
<head>
    <meta charset="UTF-8">
    <title>Login UK</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
<div class="container">
    <div class="header">
        <picture>
            <img src="UK_logo.png" alt="logo UK">
        </picture>
        <p>
        <h2>Přihlásit se / Log in</h2>
        </p>
    </div>

    <form action="login.php" method="POST">

        <div>
            <label for="username" >Jméno / Username </label>
            <input type="text" name="username" required>
        </div>

        <p>
        <div>
            <label for="password" >Heslo / Password </label>
            <input type="password" name="password1" required>
        </div>
        </p>

        <p>
            <button type="submit" name="login_user"> Přihlásit se / Log in  </button>
        <p> Nejste uživatelem? / Not a user? <a href="registration.php">
        <p> <b> Registrujte se zde / Register Here </b></a>
        </p>
        <div>
            ═════════════════════════════════ <p>
                <label> Naprogramoval v PHP, MySQL: Vít Šoukal / 2019 <p>
                [email protected]
                </label>
            </p>
        </div>

    </form>

</body>
</html>
Nahoru Odpovědět
21.7.2019 2:57
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na Tano7
Jaroslav Smrž:21.7.2019 9:51

Na první pohled chybu nevidím, ale neuvažuješ spíš o přepsání aplikace na ovladač PDO? Odpadlo by ti spousty problémů s ošetřením. Mysql_li se dnes již nepoužívá. Přikládám kód třídy connection pro připojení k databázi a názornou ukázku jak připojení volat.

<?php

Class Connection
{
// Nastaveni PDO a prihlasovaci udaje k DB
    private $server = "mysql:host=localhost;dbname=nazevDB";
    private $username = "root";
    private $password = "";
    private $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,);
    protected $conn;

//Otevreni spojeni
    public function open()
        {
                try
                {
                $this->conn = new PDO($this->server, $this->username, $this->password, $this->options);
                return $this->conn;
                }
                catch (PDOException $e)
                {
                 echo "Ooops... Spojení nelze navázat: " . $e->getMessage();
                }
        }
//Ukonceni spojeni
    public function close()
        {
        $this->conn = null;
        }
}

Ukázka volání připojení:

<?php
include_once('cesta/connection.php');

$database = new Connection();
$db = $database->open();
try
{
        $sql = "SELECT * FROM tabulka WHERE podminka='podminka'";
                foreach ($db->query($sql) as $row)
                {
                ?>
                <table>
                    <tr>
                        <td><?php echo $row['napr_uzivatel_jmeno']; ?></td>
                        <td><?php echo $row['napr_uzivatel_role']; ?></td>
                    </tr>
                </table>
                <?php
                }
}
catch (PDOException $e)
{
        echo "Oooops! Našel se problém s připojením k databázi: " . $e->getMessage();
}
$database->close();
?>
Nahoru Odpovědět
21.7.2019 9:51
/* Life runs on code */
Avatar
Tano7
Člen
Avatar
Odpovídá na Jaroslav Smrž
Tano7:21.7.2019 19:59

Díky, to jsem nevěděl, jsem začátečník, i když kdysi jsem to zkoušel,ale chce to pravidelně studovat.Už jsem se do toho obul naplno.
vytvořil jsem tedy server.php a dal cestu k databazi "practice"

<?php

Class Connection //ulozit jako server.php
{
// Nastaveni PDO a prihlasovaci udaje k DB PHP Data Objects = je to objektové rozhraní databází pro PHP
    private $server = "mysql:host=localhost;dbname=practice";  //nazev me databaze je "practice"
    private $username = "root";
    private $password = "";
    private $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,);
    protected $conn;

//Otevreni spojeni
    public function open()
    {
        try
        {
            $this->conn = new PDO($this->server, $this->username, $this->password, $this->options);
            return $this->conn;
        }
        catch (PDOException $e)
        {
            echo "Ooops... Spojení nelze navázat: " . $e->getMessage();
        }
    }
//Ukonceni spojeni
    public function close()
    {
        $this->conn = null;
    }
}

a do registration.php To je ma cesta "localhost/re­gistrace/server­.php" Jedna tabulka "user" se sloupci: id, username, email, password, ale v kodu PHPStorm hlasi chybu řádek 8 "$database = practice Connection(); "

Taky nevim, jak oddělit php od HTML a provázat vzájemě soubor registration.php

Prosím o pomoc, díky :-)

<?php
include_once('localhost/registrace/server.php');  //include_once('localhost/registrace/server.php');
//to je ma cesta localhost/registrace/server.php, kde volam DB SQL pres PDO

//include_once('cesta/connection.php');
//ulozit jako registration.php

$database = practice Connection();  //nazev databaze je "practice" a tabulky "user"
$db = $database->open();
try
{
    //$sql = "SELECT * FROM tabulka WHERE podminka='podminka'";
    $sql = "SELECT * FROM user WHERE username='username'";
    foreach ($db->query($sql) as $row)
    {
        ?>
        <table>
            <tr>
                <td><?php echo $row['user']; ?></td>    //$row['napr_uzivatel_jmeno']
                <td><?php echo $row['email']; ?></td>
                                          </tr>
        </table>
        <?php
    }
}
catch (PDOException $e)
{
    echo "Oooops! Našel se problém s připojením k databázi: " . $e->getMessage();
}
$database->close();
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Registrace</title>
     <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
<div class="container">
    <div style="width: 40%; margin: 20 auto;">
    <!-- <div class="header"> -->
           <picture>
        <img src="UK_logo.png" width = "" height = "" alt="logo UK">
    </picture>
    <p>
    <h2>R E G I S T R A C E</h2>
    </p>

<form action="registration.php" method="post">

    <?php
    include('errors.php')
    ?>


    <div>
        <label for="username" >Jméno / Username  </label>
        <input type="text" name="username" required>  <!-- required = povinny udaj-->
    </div>

    <div>
        <p>
        <label for="email" >E-mail  </label>
        <input type="email" name="email" required>
        </p>
    </div>

    <div>
        <p>
        <label for="password" >Heslo / Password  </label>
        <input type="password" name="password1" required>
        </p>
    </div>

    <div>
        <p>
        <label for="password" >Potvrď heslo / Confirm Password  </label>
        <input type="password" name="password2" required>
    </p>
</div>

    <div>
        <p>
    <button type="submit" name="reg_user"> Odeslat / Send   </button>
        </p>
        </div>

    <div>
        <p>
     Jste již uživatelem? / Already a user? <a href="login.php">
        </p>
    </div>

           <a> <b> Přihlásit se / Log in </b></a>

</form>
</body>
</html>
Nahoru Odpovědět
21.7.2019 19:59
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na Tano7
Jaroslav Smrž:21.7.2019 20:42

Jéééé, všechno špatně.

  • Kód pro volání třídy Connection se vkládá (v tvém případě) až do těla html tam, kde to potřebuješ. Jako názornou ukázku tam máš tu html tabulku
  • Cestu k souboru Connection.php zapisuj na localhostu dle složek s tím, že kořenová je ta, ve které máš index.php (např. App/Assets/con­nection.php)
  • Dále máš chybu v syntaxi!!!** $database = practice Connection();** , musí být vytvoření instance $database = new Connection();

V tvém případě registračního formuláře tam stejně nic volat nemusíš. Na to ti stačí jen html, form action a method. Až v obslužném souboru budeš potřebovat pracovat s databází. Je vidět, že se v tom vůbec nevyznáš, měl bys začít od úplných základů, ale stejně ti sem dám příklad:

<?php

include_once('connection.php');

if (isset($_POST['uloz'])) {
    $database = new Connection();
    $db = $database->open();
    try {
        //příprava dotazu
        $stmt = $db->prepare("INSERT INTO tabulka (jmeno) VALUES (:jmeno)");
        //provedení dotazu s hláškou o úspěchu či neúspěchu
        $_SESSION['message'] = ( $stmt->execute(array(':jmeno' => $_POST['jmeno'])) ) ? 'Záznam úspěšně přidán' : 'Něco je špatně, záznam nelze přidat';
    } catch (PDOException $e) {
        $_SESSION['message'] = $e->getMessage();
    }
    $database->close();
} else {
    $_SESSION['message'] = 'Nejprve vyplňte formulář';
}

header('location: index.php');
?>
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
21.7.2019 20:42
/* Life runs on code */
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Jaroslav Smrž:21.7.2019 22:26

Jinak zde krásně vidíš výhody PDO ovladače a jeho metod. V dotazu se nemusíš o nic starat díky metodě prepare. PDO si hodnoty samo ošetří a dosadí. Další metoda execute provede samotný výkon. PDOException je samotná vyjímka a getMessage ji vypíše (předá).

Nahoru Odpovědět
21.7.2019 22:26
/* Life runs on code */
Avatar
Tano7
Člen
Avatar
Tano7:22.7.2019 0:01

Díky. Jdu pokračovat v kurzech postupně. :-)

Nahoru Odpovědět
22.7.2019 0:01
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na Tano7
Jaroslav Smrž:22.7.2019 6:28

Namáš za co. Jestli ti ještě mohu poradit, tak asi začni u procedurálního programování (html i php dohromady v jednom souboru). Je tu kurz na tvorbu jednoduchého redakčního systému v PHP . Tam se celkem dobře naučíš práci s databází za použití wrapperu. Příklad, který jsem ti sem dával je objektový a na objektové programování se vrhni, až plně porozumíš základním principům, ať v tom nemáš zmatek. Na začátcích je těch informací vždycky hodně. Přeji mnoho zdaru a trpělivosti :)

Editováno 22.7.2019 6:29
Nahoru Odpovědět
22.7.2019 6:28
/* Life runs on code */
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:22.7.2019 11:25

Samozrejme souhlas, kod obalovat do funkci a ne psat primo radky. Ale uz bych to zrovna tridil do vetsich soucasti class, OOP.
Jak tam pouzivas to echo, tak to preci muzes ulozit do promene a to echo pouzit az v casti html.

    foreach ($db->query($sql) as $row)
    {
        ?>
        <table>
            <tr>
                <td><?php echo $row['user']; ?></td>    //$row['napr_uzivatel_jmeno']
                <td><?php echo $row['email']; ?></td>
                                          </tr>
        </table>
        <?php
    }

----
$table1 = '';
    foreach ($db->query($sql) as $row)
    {
        $table1 .= '
        <table> --- a taky by mozna bylo fajn, kdby jsi uvnitr cyklu mel jen tagy tr, td, zkoukni si pak html kod, jaky vytvoris a porovnej s jakpsatweb.cz
            <tr>
                <td>'.$row['user'].'</td>    <!--$row['napr_uzivatel_jmeno']-->
                <td>'.$row['email'].'</td>
                                          </tr>
        </table>
        ';
    }
...<body>...
<?php echo $table1; ?>
Editováno 22.7.2019 11:27
 
Nahoru Odpovědět
22.7.2019 11:25
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 15 zpráv z 15.