PROBLEMA php continuazione chiarimenti

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
amici

ho aperto un thread qualche giorno fa su come strutturare un sito web in php.


Ora avendo eseguito i consigli datomi sono partito per sviluppare ciò che mi serve


praticamente però ho dei dubbi e dei problemi da risolvere ed essendo un novizio di questo linguaggio mi serve una mano

Vi spiego la mia struttura è questa

cartella progetto
--pagine web
--scripts
---js_scripts
---- jquery
---- mioscript.js
---php_scripts
---- dbconnect.php
--immagini
--main
---main.php
etc etc.

allora il mio main php contiene questo:

PHP:
<?php
/**
* Created by PhpStorm.
* User: Christian
* Date: 11/05/2017
* Time: 12:13
*/

spl_autoload_register(function ($class)
{
    require_once 'scripts/php_scripts/' . $class . '.php';

});
//session_start();
class main {




    function sec_session_start()
    {
        $session_name = 'sec_session_id'; // Imposta un nome di sessione
        $secure = false; // Imposta il parametro a true se vuoi usare il protocollo 'https'.
        $httponly = true; // Questo impedirà ad un javascript di essere in grado di accedere all'id di sessione.
        ini_set('session.use_only_cookies', 1); // Forza la sessione ad utilizzare solo i cookie.
        $cookieParams = session_get_cookie_params(); // Legge i parametri correnti relativi ai cookie.
        session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
        session_name($session_name); // Imposta il nome di sessione con quello prescelto all'inizio della funzione.
        session_start(); // Avvia la sessione php.
        session_regenerate_id(); // Rigenera la sessione e cancella quella creata in precedenza.

    }

    public static function sanitize($string, $filter = null)
    {
        switch ($filter) {
            case 'none':
                return $string;
                break;

            case 'email':
                return filter_var($string, FILTER_SANITIZE_EMAIL);
                break;

            case 'string':
                return filter_var($string, FILTER_SANITIZE_STRING);
                break;

            case 'int':
                return filter_var($string, FILTER_SANITIZE_NUMBER_INT);
                break;

            case 'url':
                return filter_var($string, FILTER_SANITIZE_URL);
                break;

            default:
                return filter_var($string, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
                break;

        }
    }


}



poi la mia classe dbconnect.php contiene questo

PHP:
<?php
class dbconnect
{
    private $_pdo;

    function __construct()
    {
        try {
            $hostname = "localhost";
            $dbname = "miodb";
            $user = "root";
            $pass = "123root";
            $this->_pdo = new PDO('mysql:host=' . $hostname . ';dbname=' . $dbname, $user, $pass);

        } catch (PDOException $e) {
            header("location: error.php"); //Se c'è un errore nella connessione fai il redirect
        }
    }

    public function query()
    {
        $sql = $this->_pdo->prepare('SELECT * FROM users');
        $sql->execute();
        $res = $sql->fetchAll();
        return $res;
    }



    public function login($email, $password)
    {
       echo '<script>alert("Mi sono loggato bella")</script>';
    }





}


e nella index php che è la mia pagina principale ho questo:

PHP:
<?php
require_once 'main/main.php';

$db = new dbconnect;

$main = new main;
//var_dump($db->query());
$dbwork = "";

$main->sec_session_start();

if (!empty($db->query()) || !$db->query() == false) {

    //$loginerror = var_dump($db->query());
    $dbwork = $db->query();
}
else{
    header("location: error.php");
}


if(!empty($_POST)) {
//if($_SERVER["REQUEST_METHOD"] == "POST"){
// username and password sent from form
    echo main::sanitize($_POST['username'], 'string');
    $username=$_POST['username'];
    $password=$_POST['password'];
    $db->login($username,$password);
    //echo '<script> hide_login(); </script>';


}else{
    header("location: error.php");

}



/*if (!empty($_POST)) {
    //Richiami la funzione login e fai il login



} else {
    //Redirect
    //header("location: error.php");
}*/
?>



allora ho cercato provando di impostare una simulazione di login per ora senza interfacciarlo a mysql ma stampando un banale alert.

problema è che se lascio la funzione con questo comando

if (!empty($_POST)) {


alla pressione di submit fa solo un refresh della pagina senza stampare l'alert presente nella login di dbconnect.php

mentre invece se lo sostituisco con questo comando

if($_SERVER["REQUEST_METHOD"] == "POST"){

esce l'alert in modo corretto ma poi mi fa il refresh della pagina e mi stampa 3 errori che vi riporto

Notice: Undefined index: username in C:\Users\Christian\Desktop\gamewebsitetemplate\index.php on line 28

Notice: Undefined index: username in C:\Users\Christian\Desktop\gamewebsitetemplate\index.php on line 29

Notice: Undefined index: password in C:\Users\Christian\Desktop\gamewebsitetemplate\index.php on line 30



Cosa sbaglio??

potete aiutarmi a capire i comandi?

perchè sto guardando un sacco di guide ma vedo mille cose diverse e non capisco quale sia la cosa giusta
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
La index.php stà nella root??
Inserisci nella index.php questo codice (all'inizio della pagina dopo il require), in modo da poter vedere gli errori:
PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Comunque ho testato il tuo codice e funziona tutto come previsto.

main.php
PHP:
<?php
//session_start();

spl_autoload_register(function ($class){
    require_once 'scripts/php_scripts/' . $class . '.php';
});

/**
*
*/
class main
{
    function sec_session_start()
    {
        $session_name = 'sec_session_id'; // Imposta un nome di sessione
        $secure = false; // Imposta il parametro a true se vuoi usare il protocollo 'https'.
        $httponly = true; // Questo impedirà ad un javascript di essere in grado di accedere all'id di sessione.
        ini_set('session.use_only_cookies', 1); // Forza la sessione ad utilizzare solo i cookie.
        $cookieParams = session_get_cookie_params(); // Legge i parametri correnti relativi ai cookie.
        session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
        session_name($session_name); // Imposta il nome di sessione con quello prescelto all'inizio della funzione.
        session_start(); // Avvia la sessione php.
        session_regenerate_id(); // Rigenera la sessione e cancella quella creata in precedenza.

    }

    public static function sanitize($string, $filter = null)
    {
        switch ($filter) {
            case 'none':
                return $string;
                break;

            case 'email':
                return filter_var($string, FILTER_SANITIZE_EMAIL);
                break;

            case 'string':
                return filter_var($string, FILTER_SANITIZE_STRING);
                break;

            case 'int':
                return filter_var($string, FILTER_SANITIZE_NUMBER_INT);
                break;

            case 'url':
                return filter_var($string, FILTER_SANITIZE_URL);
                break;

            default:
                return filter_var($string, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
                break;

        }
    }
}


?>


dbconnect.php
PHP:
<?php /**
*
*/
class dbconnect
{
     private $_pdo;

     function __construct()
     {
         try {
             $hostname = "localhost";
             $dbname = "xxx";
             $user = "xxx";
             $pass = "xxx";
             $this->_pdo = new PDO('mysql:host=' . $hostname . ';dbname=' . $dbname, $user, $pass);

         } catch (PDOException $e) {
             header("location: errore.php"); //Se c'è un errore nella connessione fai il redirect
         }
     }

     public function query()
     {
         $sql = $this->_pdo->prepare('SELECT * FROM users');
         $sql->execute();
         $res = $sql->fetchAll();
         return $res;
     }

     public function login($email, $password)
    {
       echo '<script>alert("Mi sono loggato bella")</script>';
    }
}
?>


index.php
PHP:
<?php
require_once 'core/main.php';

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$db = new dbconnect;
$db->query();

$main = new main;
$dbwork = "";
$main->sec_session_start();

if (!empty($db->query()) || !$db->query() == false) {

    //$loginerror = var_dump($db->query());
    $dbwork = $db->query();
}
else{
    header("location: error.php");
}

if(!empty($_POST)) {
//if($_SERVER["REQUEST_METHOD"] == "POST"){
// username and password sent from form
    echo main::sanitize($_POST['username'], 'string');
    $username=$_POST['username'];
    $password=$_POST['password'];
    $db->login($username,$password);
    //echo '<script> hide_login(); </script>';


} else {
    //header("location: error.php");
}

?>
<form action="" method="POST">
    <label for="username" style="font-family: foo; font-size: 12px;">Username or Email:</label><br><br>
    <input type="text" name="username" style="width:250px;"><br><br>
    <label for="password" style="font-family: foo; font-size: 12px;">Password:</label><br><br>
    <input type="password" name="password"  style="width:250px;"><br><br>
    <label for="remember" style="font-family: foo; font-size: 12px;">Remember me!</label>
    <input type="checkbox" name="ricorda" value="ricordapass" checked><br>
    <input type="submit" value="Login" style="width:150px; font-family: foo;">
    <input name="_token" value="" type="hidden">
</form>


alla pressione del pulsante login visualizza l'alert:
Schermata del 2017-05-16 10:30:06.png
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
a me invece non funziona...

tu lavori su linux e lo vedo io su windows.


probabilmente c'è qualcosa che non va in php storm

a me funziona solo se cambio la sintassi cosi

PHP:
if($_SERVER["REQUEST_METHOD"] == "POST") {
//if (!empty($_POST)) {
// username and password sent from form

    if(isset($_POST['username'])) {
        // check if the username has been set
        $username = $_POST['username'];
        echo main::sanitize($_POST['username'], 'string');
    }

    if(isset($_POST['password'])) {
        $password = $_POST['password'];
        echo main::sanitize($_POST['password'], 'string');
        //echo '<script> hide_login(); </script>';

    }

    $db->login($username, $password);


    //$_SESSION['login_user'] = $username;

    //echo '$_SESSION[\'login_user\']';

    //header("Location: loggedin.php");
    } else {
        //header("location: error.php");

    //}

}


cosi l'alert esce...
se invece metto if (!empty($_POST))

non esce mai l'alert
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
a me invece non funziona...

tu lavori su linux e lo vedo io su windows.


probabilmente c'è qualcosa che non va in php storm

a me funziona solo se cambio la sintassi cosi

PHP:
if($_SERVER["REQUEST_METHOD"] == "POST") {
//if (!empty($_POST)) {
// username and password sent from form

    if(isset($_POST['username'])) {
        // check if the username has been set
        $username = $_POST['username'];
        echo main::sanitize($_POST['username'], 'string');
    }

    if(isset($_POST['password'])) {
        $password = $_POST['password'];
        echo main::sanitize($_POST['password'], 'string');
        //echo '<script> hide_login(); </script>';

    }

    $db->login($username, $password);


    //$_SESSION['login_user'] = $username;

    //echo '$_SESSION[\'login_user\']';

    //header("Location: loggedin.php");
    } else {
        //header("location: error.php");

    //}

}


cosi l'alert esce...
se invece metto if (!empty($_POST))

non esce mai l'alert

Non dovrebbe essere un problema di OS, ma non si sa mai..

Aggiungi un var_dump della variabile $_POST prima dell'if
PHP:
var_dump($_POST);
if(!empty($_POST)) {
//if($_SERVER["REQUEST_METHOD"] == "POST"){
// username and password sent from form
    echo main::sanitize($_POST['username'], 'string');
    $username=$_POST['username'];
    $password=$_POST['password'];
    $db->login($username,$password);
    //echo '<script> hide_login(); </script>';
}

Al primo avvio della pagina dovresti avere un array vuoto
Schermata del 2017-05-16 16:12:48.png

dopo aver cliccato sul pulsante login invece:
Schermata del 2017-05-16 16:14:19.png
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
come posso adattare questo tutorial alle mie classi??


https://www.tutorialspoint.com/php/php_mysql_login.htm

Ti ho adattato la funzione di login:
PHP:
public function login($username, $password)
    {
        $sql = $this->_pdo->prepare('SELECT * FROM users WHERE username = :username');
        $sql->bindParam(':username', $username);
        $sql->execute();
        $res = $sql->fetchAll(PDO::FETCH_ASSOC);
        if ($sql->rowCount() === 1) {
            if (password_verify($password, $res[0]['password'])) {
                $_SESSION['login_user'] = $username;
                header("location: welcome.php");//A posto del redirect puoi anche ritornare TRUE/FALSE o $res
            } else {
                $res = "Your Password is invalid";
                return $res;
            }
        } else {
            $res = "Your Login Name is invalid";
            return $res;
        }
    }


nella pagina di login:
PHP:
if(!empty($_POST)) {
//if($_SERVER["REQUEST_METHOD"] == "POST"){
// username and password sent from form
    $username = main::sanitize($_POST['username'], 'string');
    $password=$_POST['password'];
    $login = $db->login($username,$password);
    echo '<script> hide_login(); </script>';
    echo $login;
}
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
ciao cdtux sempre gentile

allora parlo del post pre login

all'avvio ho this

Codice:
array(0) { }

ma quando premo login rimane sempre quello

guarda



non so davvero cosa può essere
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
Non si vede la foto/screenshot

Potrebbe anche essere un problema del form, puoi postarne il codice??
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
certo ecco qui la mia form

HTML:
<form action="" method="POST">
                                    <label for="user" style="font-family: foo; font-size: 12px; color:#FFD700;">Username or Email:</label><br><br>
                                    <input type="text" name="username" style="width:250px;"  />
                                      <br><br>

                                    <!-- value="<script>alert('alert');</script>"-->
                                    <label for="pass" style="font-family: foo; font-size: 12px;color:#FFD700;">Password:</label><br><br>
                                    <input type="password" name="password"  style="width:250px;"><br><br>
                                    <label for="remember" style="font-family: foo; font-size: 12px;color:#FFD700;">Remember me!</label>
                                    <input type="checkbox" name="ricorda" value="ricordapass" checked><br>
                                    <input type="submit" value="Login"  style="width:150px; font-family: foo;">
                                     <input name="_token" value="" type="hidden">
                                   
                                    </form>
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
ciao leggevo in rete che il comando + utile per una post

è questo

if($_SERVER["REQUEST_METHOD"] == "POST"){


ora ho inserito la tuo codice di login ma a me non funziona

da questo errore

Your Login Name is invalid


come faccio con phpstorm a fare debugging su windows??
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
ciao leggevo in rete che il comando + utile per una post

è questo

if($_SERVER["REQUEST_METHOD"] == "POST"){


ora ho inserito la tuo codice di login ma a me non funziona

da questo errore

Your Login Name is invalid


come faccio con phpstorm a fare debugging su windows??

La differenza tra if($_SERVER["REQUEST_METHOD"] == "POST") e if($_POST) è che con il primo verifiche se c'è una request di tipo POST, con il secondo verifichi se c'è una request di tipo POST che contiene dati.
Teoricamente sarebbe più corretto usare $_SERVER["REQUEST_METHOD"] == "POST", dato che ci potrebbe essere una request di tipo POST senza alcun dato. Personalmente preferisco il 2° metodo (salvo casi particolari) dato che generalmente mi serve controllare se nella request POST ci sono dati e non se è stata semplicemente fatta la request.

Il codice che ho postato sopra verifica se l'username è inserito nel database, se tu vuoi impostare il login utilizzando la mail (o entrambi) devi modificare il codice della query.
Prima di tutto puoi utilizzare il browser per verificare che i parametri siano ricevuti correttamente
Schermata del 2017-05-18 12:54:53.png
Per il debug dai un'occhiata qua
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
adesso volevo provarla con il solo username e poi optare per mettere un or email = :parametro

proverò a vedere come effettuare la login e vedere e i parametri sono corretti
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
ciao ho provato addirittura settando la register, e addirittura prendendo una demo già fatta

ma io da phpstorm non riesco a debuggare e vedere le variabili cosa contengono

ti posto la funzione register da me creata e la login

register
PHP:
public function register($date, $username, $password, $email){

        $sql = $this->_pdo->prepare('SELECT * FROM users WHERE username = :username or email= :username');
        $sql->bindParam(':username', $username);
        $sql->execute();
        $res = $sql->fetchAll(PDO::FETCH_ASSOC);
        if ($sql->rowCount() === 1) {
           $res = "Username or email registred yet";
           return $res;
        }else {

            $sql = $this->_pdo->prepare('Insert Into users (date_of_birth, username, password,email) VALUES ($date,$username,$password,$email)');
            $sql->bindParam(':username', $username);
            $sql->bindParam(':date_of_birth', $date);
            $sql->bindParam(':password', $password);
            $sql->bindParam(':email', $email);
            $sql->execute();
            $res = $sql->fetchAll(PDO::FETCH_ASSOC);
            $res = "Successfully Registrated";
            return $res;
            header("location: index.php");
        }
    }


poi la login

PHP:
public function login($username, $password)
    {
        $sql = $this->_pdo->prepare('SELECT * FROM users WHERE username = :username');
        $sql->bindParam(':username', $username);
        $sql->execute();
        $res = $sql->fetchAll(PDO::FETCH_ASSOC);
        if ($sql->rowCount() === 1) {
            if (password_verify($password, $res[0]['password'])) {
                $_SESSION['login_user'] = $username;
                header("location: loggedin.php");//A posto del redirect puoi anche ritornare TRUE/FALSE o $res
            } else {
                $res = "Your Password is invalid";
                return $res;
            }
        } else {
            $res = "Your Login Name is invalid";
            return $res;
        }
    }



poi nella pagina register ho fatto questi

PHP:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


require_once 'main/main.php';

$db = new dbconnect;

$main = new main;

$dbwork = "";

$main->sec_session_start();



var_dump($_POST);
$username = "";
$password = "";
$email = "";
$date = "";

//if(!empty($_POST)) {
if($_SERVER["REQUEST_METHOD"] == "POST"){

    if(isset($_POST['username'])) {
        // check if the username has been set
        $username = $_POST['username'];
        echo main::sanitize($_POST['username'], 'string');
    }

    if(isset($_POST['password'])) {
        $password = $_POST['password'];
        echo main::sanitize($_POST['password'], 'string');
        //echo '<script> hide_login(); </script>';

    }

    if(isset($_POST['email'])){
        $email = $_POST['email'];
        echo main::sanitize($_POST['email'], 'string');
    }

    $date = "1991-10-13 : 00:00:00";

    $register = $db->register($date,$username,$password,$email);

    echo $register;



nella pagina di login(cioè la mia index)

PHP:
$username = "";
$password = "";
$message = "";
$_SESSION['login_user'] = "";


var_dump($_POST);

/*login mandatomi dal tizio*/
//if(!empty($_POST)) {
if($_SERVER["REQUEST_METHOD"] == "POST"){

if(isset($_POST['username'])) {
        // check if the username has been set
        $username = $_POST['username'];
        echo main::sanitize($_POST['username'], 'string');
    }

    if(isset($_POST['password'])) {
        $password = $_POST['password'];
        echo main::sanitize($_POST['password'], 'string');
        //echo '<script> hide_login(); </script>';

    }

$login = $db->login($username,$password);

echo $login;
}


allora su register mi stampa user successfully registrated e fa la redirect ma nel db non fa nulla.

poi
su login invece stampa l'errore che lo username non è corretto.


terzo ho seguito la guida di debugging di php storm ma a me non va

ho scaricato la dll che serviva, poi io usando xampp il file php.ini ce l'ho sotto la directory C:/xampp/php l'ho inserito li e ho seguito il documento ma niente io non riesco a seguire i breakpoint che metto
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
Non uso phpstorm quindi non so, comunque devi installare anche xdebug per fare il debug.
In alternativa puoi utilizzare il browser per vedere i parametri e i var_dump per vedere il contenuto delle variabili.

Per il resto appena posso ci do un'occhiata..
 

Skills07

Head of Development
Staff Forum
Utente Èlite
35,435
11,501
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
ora l'ho messo xdebug mi risulta attivo fatto sta che dai breakpoints non passa mai..

scusa ma su browser come si fa??
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili