Pagina 1 di 7 123 ... UltimoUltimo
Visualizzazione risultati 1 fino 30 di 184
Like Tree7Likes

Discussione: Login PHP non indirizza alla pagina privata

  1. #1
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito Login PHP non indirizza alla pagina privata

    Ho creato un script in PHP per il login e quando clicco sul bottone per il login si apre una pagina bianca ma non mi indirizza alla pagina privata neanche se le credenziali sono corrette

    Script php:
    <?php
    include('db_con.php');
    $username=$_POST['username'];
    $password=$_POST['password'];
    $login = mysqli_query ("SELECT * FROM users WHERE username = $username AND password = $password ");
    $result=mysql_fetch_array($login);
    // Check username and password match

    if (mysql_num_rows($result) == 1) {

    $_SESSION['username'] = $_POST['username'];


    header('Location: pannellodiamministrazione.php');
    }
    else {

    header('Location:Visualizzazionesupplenze.php');
    }

    ?>

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Stai mescolando mysql (che è deprecato) con mysqli, sarebbe strano se funzionasse.
    Stai memorizzando le password in chiaro, questo comporta problemi per la sicurezza.

    Ad occhio credo che il problema sia causato dagli errori PHP (probabilmente il mescolare mysql e mysqli) che bloccano l'esecuzione dello script.
    Usa
    Codice PHP:
    error_reportin(E_ALL);
    per visualizzare gli errori.

    I suggerimenti che do più spesso:


  3. #3
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Per la password avevo pensato di metterle in md5 ma prima volevo vedere se lo script funzionava.
    Ho cambiato tutti i "mysql" in mysqli e non è cambiato nulla e "error_reportin(E_ALL);" non ha dato nessun errore

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Per la password avevo pensato di metterle in md5
    Meglio, ma non ancora sicura. Usa password_hash. Questo va comunque bene farlo dopo aver fatto funzionare lo script.

    Ho cambiato tutti i "mysql" in mysqli e non è cambiato nulla e "error_reportin(E_ALL);" non ha dato nessun errore
    Colpa mia, errore di battitura nel codice:
    Codice PHP:
    error_reporting(E_ALL);
    "reporting" va scritto con la "g" alla fine...

    I suggerimenti che do più spesso:


  5. #5
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Ora funziona mi ha dato come errore deprecated i mysql presenti nel "db_con.php" e li ho già risolti portandoli a "mysqli" ora mi da questi altri due errori:

    Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in /membri/relettronico/prova/db_con.php on line 12

    Warning: mysqli_error() expects exactly 1 parameter, 0 given in /membri/relettronico/prova/db_con.php on line 19
    Database Connection failed :

    Grazie per le risposte e l'aiuto che mi stai dando

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Chiaro: non basta rinominare le funzioni mysql in mysqli, occorre passare lo i parametri corretti.
    Ad esempio, la vecchia mysql_query richiedeva solo il testo della query come parametro:
    Codice PHP:
    mysql_query("SELECT...");
    mentre a mysqli occorre passare sia la connessione che il testo della query:
    Codice PHP:
    mysqli_query($conn, "SELECT...");

    I suggerimenti che do più spesso:


  7. #7
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Questo è il nuovo codice (ho tolto l'ultimo indirizzamento perché sennò non da l'errore):

    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    define('DBHOST', 'localhost');
    define('DBUSER', 'relettronico');
    define('DBPASS', '');
    define('DBNAME', 'my_relettronico');

    $conn = mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME);



    if ( !
    $conn ) {
    die(
    "Connection failed : " . mysqli_error());
    }

    $username=$_POST['username'];
    $password=$_POST['password'];
    $login = mysqli_query ($conn, "SELECT * FROM users WHERE username = $username AND password = $password ");
    $result=mysqli_fetch_array($conn, $login);
    // Check username and password match

    if (mysqli_num_rows( $result == 1)) {

    $_SESSION['username'] = $_POST['username'];


    header('Location: pannellodiamministrazione.php');
    }
    e questi sono i nuovi errori:

    Notice: Undefined index: username in /membri/relettronico/prova/login.php on line 16

    Notice: Undefined index: password in /membri/relettronico/prova/login.php on line 17

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, object given in /membri/relettronico/prova/login.php on line 19

    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /membri/relettronico/prova/login.php on line 22

    Scusa per il disturbo ma non so proprio come fare

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Notice: Undefined index: username in /membri/relettronico/prova/login.php on line 16
    Notice: Undefined index: password in /membri/relettronico/prova/login.php on line 17
    Stai cercando di leggere da $_POST gli indici username e password, ma questi non sono definiti, ovvero il form non li ha inviati alla pagina. Dovresti verificare che il codice HTML del form sia corretto, ad esempio che l'attributo method sia POST e non GET, e che i campi i questione si chiamino esattamente username e password.

    Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, object given in /membri/relettronico/prova/login.php on line 19
    Dai sempre una controllata alla documentazione delle funzioni che usi: mysqli_query restituisce un record set, oppure false (che è un booleano) in caso di fallimento. Gli errori che ti vengono mostrati dicono che il tuo $result è un booleano, quindi la query era fallita, ma non te ne eri accorto perché non ne avevi controllato il valore di ritorno e la presenza di errori:
    Codice PHP:
    $login = mysqli_query ($conn, "SELECT * FROM users WHERE username = $username AND password = $password");
    if (!
    $login) {
    die(
    mysqli_error($conn));
    }
    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /membri/relettronico/prova/login.php on line 22
    Controlla bene quello che hai scritto:
    Codice PHP:
    mysqli_num_rows($result == 1)
    prima controlli se $result (che contiene il risultato di mysqli_fetch_array) è uguale ad 1. Gli unici risultati possibili sono true o false, in questo caso restituirà certamente false perché un record non è mai uguale a 1. Di conseguenza la tua chiamata è equivalente a
    Codice PHP:
    mysqli_num_rows(false)
    il quale produce l'errore di tipo che ti viene mostrato.

    Complessivamente presta attenzione anche ai nomi degli identificatori che usi. Ad esempio, $login non è un'informazione di autenticazione, è un record set, o result set, e quello che chiami $result non è un risultato, bensì una riga o record.

    Attenzione a quando inserisci delle stringe in una query, vanno racchiuse tra apici singoli o doppi.

    E cura sempre l'indentazione.

    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    define('DBHOST', 'localhost');
    define('DBUSER', 'relettronico');
    define('DBPASS', '');
    define('DBNAME', 'my_relettronico');

    // Connessione alla base di dati
    $conn = mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME);
    if (!
    $conn) {
    die(
    "Connection failed : " . mysqli_connect_error);
    }

    // Verifica che username e password siano stati ricevuti
    if (!isset($_POST['username'], $_POST['password'])) {
    die(
    "Missing username or password.");
    }


    $username = $_POST['username'];
    $password = $_POST['password'];
    $result = mysqli_query($conn, "SELECT * FROM users WHERE username = '$username' AND password = '$password'");
    if (
    $result === false) {
    die(
    mysqli_error($conn);
    }

    if (
    mysqli_num_rows($result) == 1) {
    $_SESSION['username'] = $_POST['username'];
    header('Location: pannellodiamministrazione.php');
    }

    I suggerimenti che do più spesso:


  9. #9
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Lo script php ora è apposto ma non riceve i dati

    Codice html dei form
    Codice HTML:
    <div id="id01" class="modal">
      
      <form class="modal-content animate" action="login.php">
        <div class="imgcontainer">
          <span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">&times;</span>
          <img src="img/agraria.png" alt="Avatar" class="avatar">
        </div>
    
        <div class="container">
          <label for="username"><b>Username</b></label>
          <input type="text" placeholder="Enter Username" name="username" method="POST" required>
    
          <label for="password"><b>Password</b></label>
          <input type="password" placeholder="Enter Password" name="password" method="POST" id="myInput" required>
          <font color="black"><input type="checkbox" onclick="myFunction()">Show Password </font>
          
          <button type="submit">Login</button>
          
        </div>

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    method="POST" è un attributo del form, non dei singoli campi.

  11. #11
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Grazie ora lo script funziona perfettamente e ho inserito anche password_hash()

    Su questo altro script ho cambiato anche i mysql con mysqli e con le indicazioni che mi hai dat fino ad ora sono riuscito a sistemarlo un po ma a quanto ho capito "INSERT INTO" non si usa cosi ma non riesco a trovare la sintassi giusta

    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    define('DBHOST', 'localhost');
    define('DBUSER', 'relettronico');
    define('DBPASS', '');
    define('DBNAME', 'my_relettronico');

    // Connessione alla base di dati
    $conn = mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME);
    if (!
    $conn) {
    die(
    "Connection failed : " . mysqli_connect_error);
    }

    $doc_ass = $_POST['doc_ass'];
    $data= $_POST['data'];

    $result =mysqli_query($conn, "INSERT INTO supplenze (doc_ass, data VALUES '$doc_ass', '$data')");
    if (
    $result === false) {
    die(
    mysqli_error($conn));
    }

    if (
    mysqli_num_rows($result) == 1) {
    echo(
    "<br>Inserimento avvenuto correttamente");
    } else{
    echo(
    "<br>Inserimento non eseguito");
    }
    ?>
    Grazie ancora ecomplimenti

  12. #12
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Codice:
    INSERT INTO supplenze (doc_ass, data) VALUES('$doc_ass', '$data')
    Prima di values vanno indicati i nomi delle colonne da popolare, tra parentesi.

    I suggerimenti che do più spesso:


  13. #13
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Le parentesi le ho gia sistemate io ora mi da l'errore come quello di prima che non trova i dati ho gia messo method e i nomi sono uguali e mi da anche questo errore:
    Column count doesn't match value count at row 1

  14. #14
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Quell'errore indica che stai chiedendo di inserire una riga con un certo numero di colonne, ad esempio 2, ma stai al tempo stesso fornendo un numero di colonne diverso, ad esempio 1 o 3.
    Credo possa essere una conseguenza del fatto che non gli arrivano gli elementi dentro a $_POST.

    Controlla bene il form anche se ti sembra corretto.

    C'è un modo assai rapido per vedere cosa una pagina sta ricevendo dentro a $_POST, a fini di debugging:
    Codice PHP:
    echo "<pre>";
    var_dump($_POST);
    echo
    "<pre>";

  15. #15
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    MI ha indicato questi errori :

    array(6) {
    ["doc_ass"]=>
    string(2) "tt"
    ["data"]=>
    string(10) "2018-07-13"
    ["ora"]=>
    string(1) "t"
    ["classe"]=>
    string(1) "t"
    ["materia"]=>
    string(1) "t"
    ["doc_sos"]=>
    string(1) "t"
    }
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't)' at line 1

  16. #16
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    A naso ti manca qualche apice da qualche parte.
    Se non riesci a trovare l'errore riporta pure il codice qui

    I suggerimenti che do più spesso:


  17. #17
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    A me sembra corretto... non saprei

    Codice HTML:
     <div id="id01" class="modal">
      
      			<form class="modal-content animate" action="input.php" method="POST">
        			
                    <div class="imgcontainer">
          				
                        <span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">&times;</span>
          				
        			</div>
        			<div class="container" method="POST">
                    
          				<label for="doc_ass"><b>doc_ass</b></label>
          			        <input type="text" placeholder="Inserire docente assente" name="doc_ass"> 
    
          				<label for="data"><b>data</b></label>
          				<input type="date" placeholder="Inserire data" name="data">
          				
                        <label for="ora"><b>ora</b></label>
          				<input type="text" placeholder="Inserire ora" name="ora" >
                        
                        <label for="classe"><b>classe</b></label>
          				<input type="text" placeholder="Inserire classe" name="classe" >
                        
                        <label for="materia"><b>materia</b></label>
          				<input type="text" placeholder="Inserire materia" name="materia" >
                        
                        <label for="doc_sos"><b>doc_sos</b></label>
          				<input type="text" placeholder="Inserire docente sostituto" name="doc_sos" >
          
          				<button type="submit">Inserisci</button>
          				
    			</div>
            </form>
    	</div>

    Codice PHP:
    <?php

    define
    ('DBHOST', 'localhost');
    define('DBUSER', 'relettronico');
    define('DBPASS', '');
    define('DBNAME', 'my_relettronico');

    // Connessione alla base di dati
    $conn = mysqli_connect(DBHOST,DBUSER,DBPASS,DBNAME);
    if (!
    $conn) {
    die(
    "Connection failed : " . mysqli_connect_error);
    }

    $doc_ass = $_POST['doc_ass'];
    $data= $_POST['data'];
    $ora= $_POST['ora'];
    $classe= $_POST['classe'];
    $materia= $_POST['materia'];
    $doc_sos= $_POST['doc_sos'];

    echo
    "<pre>";
    var_dump($_POST);
    echo
    "<pre>";

    $result =mysqli_query($conn, "INSERT INTO supplenze (doc_ass, data, ora, classe, materia, doc_sos ) VALUES ('$doc_ass', '$data', '$ora', '$classe', '$materia, '$doc_sos)");
    if (
    $result === false) {
    die(
    mysqli_error($conn));
    }

    if (
    mysqli_num_rows($result) == 1) {
    echo(
    "<br>Inserimento avvenuto correttamente");
    } else{
    echo(
    "<br>Inserimento non eseguito");
    }


    ?>

  18. #18
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Occhio al codice PHP:
    Codice PHP:
    $result =mysqli_query($conn, "INSERT INTO supplenze (doc_ass, data, ora, classe, materia, doc_sos) VALUES ('$doc_ass', '$data', '$ora', '$classe', '$materia, '$doc_sos)");
    ti manca un apice ' dopo $doc_sos:
    Codice PHP:
    $result =mysqli_query($conn, "INSERT INTO supplenze (doc_ass, data, ora, classe, materia, doc_sos) VALUES ('$doc_ass', '$data', '$ora', '$classe', '$materia, '$doc_sos')");

    I suggerimenti che do più spesso:


  19. #19
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Mi dispiace ma non è solo quello ora mi da lo stesso errore sql solo che alla fine dopo near ce '', ''

  20. #20
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Manca un apice anche dopo $materia
    Codice PHP:
    $result =mysqli_query($conn, "INSERT INTO supplenze (doc_ass, data, ora, classe, materia, doc_sos) VALUES ('$doc_ass', '$data', '$ora', '$classe', '$materia', '$doc_sos')");

    I suggerimenti che do più spesso:


  21. #21
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Ora mi dice che non è valido il tipo della data e probabilmente mi dirà la stessa cosa dell'ora. Nell'html ho dato a data il tipo date e l'ora l'ho lasciata text perché non ho trovato nulla per la data e nel database non ci sono gli stessi valori perché ora è sotto time non text mentre la data non saprei cosa cambia...

  22. #22
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Devi convertire data e ora nel formato che hai scelto nella tabella tramite PHP.

    I campi TIME devono essere in questo formato: HH:MM:SS. Per la data dipende da cosa hai usato, se la colonna è di tipo DATE il formato è YYYY-MM-DD.

    I suggerimenti che do più spesso:


  23. #23
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Ora mi da questi errori:

    ice: Undefined index: doc_ass in /membri/relettronico/gestionesupplenze/input.php on line 14

    Notice: Undefined index: data in /membri/relettronico/gestionesupplenze/input.php on line 15

    Notice: Undefined index: ora in /membri/relettronico/gestionesupplenze/input.php on line 16

    Notice: Undefined index: classe in /membri/relettronico/gestionesupplenze/input.php on line 17

    Notice: Undefined index: materia in /membri/relettronico/gestionesupplenze/input.php on line 18

    Notice: Undefined index: doc_sos in /membri/relettronico/gestionesupplenze/input.php on line 19
    array(0) {
    }


    Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /membri/relettronico/gestionesupplenze/input.php on line 31

  24. #24
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La pagina non sta ricevendo i dati dal form.

    I suggerimenti che do più spesso:


  25. #25
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Ho pubblicato il form html qualche messaggio prima prova a guardare se trovi qualche errore...grazie

  26. #26
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Il form sembra corretto, almeno quello mostrato qualche messaggio fa.
    Poiché l'errore è su tutti i campi passati, sembra probabile che il form non sia inviato o sia inviato tramite GET anziché POST.

    I suggerimenti che do più spesso:


  27. #27
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    Ma io l'ho messo come POST non GET... conosci altre soluzioni?... grazie

  28. #28
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    La soluzione dipende strettamente dal problema, finché quest'ultimo non è chiaro non si può fare nulla.
    Queste pagine sono già visibili online?

  29. #29
    relettronico non è connesso Utente giovane
    Data registrazione
    03-01-2016
    Messaggi
    97

    Predefinito

    No non sono ancora visibili

  30. #30
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Dunque non c'è molto da fare per capire cosa c'è che non va.

    Molto in generale, se i dati non arrivano vuol dire che il form non li invia correttamente. Nomi dei campi o metodo sbagliati sono le cause più comuni, escluse queste resta da controllare eventuale codice JavaScript.

    Bisognerebbe verificare se la richiesta POST parte con i parametri giusti. Alcuni browser (tra cui Google Chrome e credo anche Firefox) hanno strumenti che permettono di monitorare le richieste HTTP.

    I suggerimenti che do più spesso:


Pagina 1 di 7 123 ... UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •