[RISOLTO]problematica login php

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Chry1991
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 461
Iscrizione: giovedì 23 maggio 2013, 20:20
Desktop: Linux Mint 16.04
Distribuzione: Linux Mint 16.04 Xubuntu 16.04
Sesso: Maschile

[RISOLTO]problematica login php

Messaggio da Chry1991 »

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:

Codice: Seleziona tutto

<?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

Codice: Seleziona tutto

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

Codice: Seleziona tutto

<?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 on gamewebsitetemplate\index.php on line 28

Notice: Undefined index: username on gamewebsitetemplate\index.php on line 29

Notice: Undefined index: password on 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


premetto che uso php storm come ide
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: TommyB1992 e 12 ospiti