Pagina 4 di 7 PrimoPrimo ... 23456 ... UltimoUltimo
Visualizzazione risultati 91 fino 120 di 184
Like Tree7Likes

Discussione: Login PHP non indirizza alla pagina privata

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

    Predefinito

    Questo è il login con le sessioni:

    Codice PHP:
    <?php
    session_start
    ();
    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['password'])) {
    die(
    "Codice meccanografico non inserito.");
    }



    $password =md5($_POST['password']);
    $result = mysqli_query($conn, "SELECT * FROM cod_mec WHERE password = '$password'");
    if (
    $result === false) {
    die(
    mysqli_error("Password errata"));
    }

    if (
    mysqli_num_rows($result) == 1) {
    $_SESSION['password'] = $_POST['password'];
    $_SESSION['id_utente'] = $row['id'];
    }else{
    echo
    "Codice meccanografico errato";
    }

    ?>
    E questo è l'errore che mi mostra:
    Notice: Undefined variable: row in /membri/relettronico/gestionesupplenze/cod_mec.php on line 31

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

    Predefinito

    E questo è l'errore che mi mostra:
    Notice: Undefined variable: row in /membri/relettronico/gestionesupplenze/cod_mec.php on line 31
    Il fatto che ti dica (traducendo da inglese ad italiano) Variabile non definita: row in [...]cod_mec.php on line 31 vuol dire... che la variabile $row nel file cod_mec.php alla riga 31 non è definita. Pensaci bene.


    Codice PHP:
    $password =md5($_POST['password']);
    $result = mysqli_query($conn, "SELECT * FROM cod_mec WHERE password = '$password'");
    Perché rinunciare alla bella architettura sicura e pulita basata su password_hash di cui abbiamo discusso qualche messaggio fa in favore di questo approccio non sicuro basato su md5?

    I suggerimenti che do più spesso:


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

    Predefinito

    Ahh ma quindi il problema è dovuto al fatto md5?

    Qui non ho messo il password_hash perché non è un login sicuro perché sarebbe il codice meccanografico delle scuole e quindi è pubblico perciò non ho messo protezioni il login serve solo perché gli impiccioni quando devono mettersi a cercare il codice si stufano e non entrano ma in realtà si può fare a meno però se serve il password_hash lo metto senza problemi.

    Ma se ho capito bene questo login guarda da phpmyadin qual è l'id_utente e prende i dati sotto lo stesso id_utente quindi non manda ad una pagina diversa semplicemente cambia i dati dello stesso file a seconda degli utenti. Quindi io nel SELECT FROM come faccio a fargli prendere in automatico i dati?

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

    Predefinito

    Avevo capito male, pensando che fosse lo stesso login discusso in precedenza, invece è un problema separato.

    Essendo il codice meccanografico pubblico non servono né password_hashmd5, quindi puoi togliere anche quest'ultimo.

    Quello che mi aveva tratto in inganno all'inizio è che hai chiamato password il codice meccanografico, il quale è un identificatore e non una password. Mi spiego meglio: un identificatore (detto chiave nel gergo delle basi di dati) è un'informazione (stringa, numero o altro) che consente di identificare univocamente un'entità. Gli identificatori non hanno nulla a che fare con la sicurezza di un accesso.
    Una password, invece, è un'informazione associata ad un'entità, nota solo al suo proprietario ed al server, che garantisce la sicurezza di un'autenticazione. A differenza degli identificatori, le password non sono per forza univoche: può capitare che due utenti, all'insaputa l'uno dell'altro, usino la stessa password.

    Ma se ho capito bene questo login guarda da phpmyadin
    No, PhpMyAdmin è un'applicazione per interagire con una base di dati, non una base di dati. Lo script preleva i dati dal server MySQL.

    qual è l'id_utente e prende i dati sotto lo stesso id_utente
    Non si può sapere dal codice che hai mostrato: c'è una SELECT * FROM cod_mec WHERE password = '$password' che preleva tutte le informazioni associate al codice meccanografico inserito. Tra queste vi è l'id di un utente?

    quindi non manda ad una pagina diversa
    Esatto, non ci sono redirezioni verso altre pagine.

    semplicemente cambia i dati dello stesso file a seconda degli utenti.
    Non proprio, quello script, se funzionasse, si limiterebbe ad impostare una variabile di sessione contenente il codice meccanografico, ed una con l'id di un qualche utente. Queste informazioni potranno essere usate successivamente per cambiare le informazioni mostrate in una pagina a seconda dell'utente che la visita.

    Quindi io nel SELECT FROM come faccio a fargli prendere in automatico i dati?
    Dipende da quali dati vuoi estrarre e da come sono strutturate le tabelle.

    Complessivamente ci sono molte cose che non mi sono chiare. Ad esempio, capisco che il login "non sia sicuro", ma questo significa che, se domani voglio autenticarmi come la scuola X, mi basta cercarne il codice pubblico e ottengo accesso completo, come se fossi io a rappresentare la scuola?
    E come si relazionano gli utenti con il codice meccanografico? Perché l'autenticazione tramite codice meccanografico dovrebbe comportare anche la lettura dei dati di un utente?

    I suggerimenti che do più spesso:


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

    Predefinito

    Praticamente professori e studenti possono guardare le supplenze e non possono fare altro quindi loro sanno il codice meccanografico e possono accedere senza problemi il codice meccanografico l'ho messo perché mettendo una specie di blocco gli studenti e i professori possono entrare mentre tu che non fai parte della scuola dovresti aprire una circolare o cercare nel sito il codice meccanografico e quindi lasci perdere e non guardi nulla uno per stare a cercare il codice deve essere proprio interessato è solo per lasciare i nomi un po più al chiuso non sono visibili direttamente ma non volevo fare un login perché poi nessuno lo guarda se deve anche ricordarsi tutto e bisognerebbe dare le credenziali ad ogni studente e docente invece il codice meccanografico lo trovano tutti sulle circolari io ho pensato cosi...
    Una volta loggato nella pagina di visualizzazione tramite codice meccanografico dovrebbe vedere le supplenze della sua scuola e quindi il select from dovrebbe prendere tramite id_utente delle sessioni le supplenze giuste

    Se vai nella mia home vai su "accedi alla piattaforma" metti come codice meccanografico "BG032" e vedi la pagina di visualizzazione

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

    Predefinito

    Capito, ma c'è un grosso problema di fondo.
    Clicco su "Accedi alla piattaforma" ed inserisco il codice meccanografico, grazie al quale identifico la mia scuola.
    Dici che, a questo punto, un'interrogazione alla base di dati dovrebbe restituirti l'id dell'utente. Ma di quale utente?

    Fin'ora non mi sono autenticato da nessuna parte, quindi nella sessione non ci può essere nessun id utente.
    Ho inserito solo il codice che identifica la scuola, potrei essere un utente qualsiasi, come fa il sistema a capire chi sono, quindi recuperare l'id corretto e fornirmi i risultati giusti?
    Potrei non essere nemmeno un utente registrato, sono solo un tizio qualunque che ha inserito il codice meccanografico di una scuola qualsiasi: in questo caso cosa dovrebbe accadere?

    Le alternative sono due:
    1. La lista delle supplenze è pubblicamente visibile a tutti, senza restrizioni: basta inserire il codice meccanografico e si ha accesso (in lettura) alle supplenze, non serve nessun utente o id utente
    2. La lista delle supplenze è visibile solo agli utenti autenticati; non serve il codice meccanografico: ad ogni utente viene mostrata la lista delle scuole a cui "ha accesso", cliccando su una scuola gli verrà mostrata la lista delle supplenze

    I suggerimenti che do più spesso:


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

    Predefinito

    In pratica le supplenze sono visibili a tutti anche uno del brasile può vedere le supplenze di una scuola se mette il codice meccanografico di una scuola non c'è nessuna restrizioni
    Io avevo pensato che dal sito della scuola ci sarebbe stato un link che portava al codice meccanografico e tramite il codice meccanografico della scuola il sito è in grado di capire che scuola sia e quindi di recuperare i dati giusti dalla tabella "supplenze" e mostrare nella tabella che vedi i dati giusti.
    Non è una sicurezza serve solo per il recupero dei dati tramite id_utente e al massimo limitare un po' l'accesso perché come ti ho detto i nomi non sono subito visibili se uno spione vuole guardare a tutti i costi si mette a cercare il codice meccanografico ma se uno è entrato e vede che ci vuole il codice meccanografico non lo cerca se ne frega ma non serve come sicurezza ma solo per recuperare i dati giusti

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

    Predefinito

    Io avevo pensato che la scuola si trova davanti al codice lo inserisce e la pagina di visualizzazione tramite l'id del codice inserito prende dalla tabella le supplenze giuste e le mostra se io di un'altra scuola entro con un altro codice il sito vede l'id_utente diverso e seleziona le supplenze della scuola2 se poi entro con un terzo codice tramite l'id_utente 3 vedrò le supplenze della scuola3 tutto qui.
    Poi nel login se guardi ce l'avatar di una scuola che dovrebbe cambiare a seconda del codice meccanografico sempre tramite id_utente.

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

    Predefinito

    tramite il codice meccanografico della scuola il sito è in grado di capire che scuola sia e quindi di recuperare i dati giusti dalla tabella "supplenze" e mostrare nella tabella che vedi i dati giusti.
    Fin qui tutto ok!

    Ma il resto ancora non torna: continui a parlare di un id_utente che non esiste (e non può esistere senza autenticazione):
    serve solo per il recupero dei dati tramite id_utente
    ...
    la pagina di visualizzazione tramite l'id del codice
    ...
    se io di un'altra scuola entro con un altro codice il sito vede l'id_utente diverso
    ...
    avatar di una scuola che dovrebbe cambiare a seconda del codice meccanografico sempre tramite id_utente.
    ... a meno che, ma questa è una libera interpretazione, quando parli di id_utente tu in realtà stia intendendo id della scuola, allora il discorso cambia completamente!

    I suggerimenti che do più spesso:


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

    Predefinito

    Io sto parlando di id_utente come se fosse un semplice id della scuola cioè scuola1=1 e tutti i dati sono nel db sotto una chiave =1 la scuola due prende i dati =2

    Ho una colonna chiamata id_utente con questi valori

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

    Predefinito

    Ah-ha! Allora sì che ha senso.

    Usa nomi sensati per gli identificatori, altrimenti per chi cerca di aiutarti è impossibile capire il tuo codice.
    Se una variabile (o colonna di una tabella) si chiama id_utente, mi aspetto che sia l'id di un utente, quindi che ci siano i concetti di utente e autenticazione. Mai e poi mai una persona che legge quel codice potrebbe capire che stai parlando di scuole!

    Ciò detto, il sistema che vuoi realizzare può essere riordinato per bene.
    Una tabella scuola simile a:
    Codice:
    id | codice_meccanografico | nome           | ... |
     1 |                 ABC01 | Liceo X        | ... |
     2 |                 XYZ07 | Scuola media X | ... |
    ed una tabella supplenza simile a :
    Codice:
    id | id_scuola | ... |
     1 |         1 | ... |
     2 |         1 | ... |
     3 |         2 | ... |
     4 |         1 | ... |
    Hai già una pagina con un form in cui inserire il codice meccanografico, bene!

    Quel form invierà i dati, tramite GET, ad una pagina che mostrerà la lista di supplenze per la scuola indicata, non servono sessioni. La pagina leggerà il codice meccanografico da $_GET, e lo userà per recuperare l'id della scuola, grazie al quale potrà recuperare la lista delle supplenze per quella scuola (eventualmente applicando dei "filtri", selezionando solo le supplenze confermate, oppure quelle all'interno di un intervallo di date).
    Molto probabilmente la lettura dell'id della scuola ed il recupero delle supplenze possono essere eseguite con un'unica interrogazione nella forma:
    Codice:
    SELECT * FROM scuola JOIN supplenza ON scuola.id = supplenza.id_scuola WHERE scuola.codice_meccanografico = '...'

    I suggerimenti che do più spesso:


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

    Predefinito

    Quindi sistemo le tabelle e cambio la query e il gioco è fatto perfetto!

    Poi da questa pagina se guardi in alto a destra ce un vero e proprio login che porta al backoffice dove il preside inserisce le supplenze li servono le supplenze giusto?
    E se guardi ho messo l'avatar della scuola come faccio a dire un l'avatar X è del liceo X mentre l'avatar Y della scuola media Y?

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

    Predefinito

    Poi da questa pagina se guardi in alto a destra ce un vero e proprio login che porta al backoffice dove il preside inserisce le supplenze li servono le supplenze giusto?
    Intendi le sessioni? Sì, lì ne hai bisogno

    E se guardi ho messo l'avatar della scuola come faccio a dire un l'avatar X è del liceo X mentre l'avatar Y della scuola media Y?
    Nella tabella scuola puoi aggiungere una colonna in cui inserire il percorso dell'immagine della scuola.

    I suggerimenti che do più spesso:


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

    Predefinito

    Il percorso delle immagini come li devo segnare?

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

    Predefinito

    A tua discrezione, di solito si usano i percorsi relativi.

    I suggerimenti che do più spesso:


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

    Predefinito

    Ma intendo dire
    gestionesupplenze/img/avatarliceoX.jpg? O in altro modo?

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

    Predefinito

    Un modo semplice è creare una cartella dedicata a contenere solo gli avatar delle scuole, ad esempio avatar, e memorizzare nella base di dati solo il nome del file.
    Nell'HTML che andrai a generare quindi avrai qualcosa di questo tipo:
    Codice PHP:
    echo '<img src="avatar/' . $row['image'] . '" alt="avatar">';
    Altrimenti puoi anche memorizzare l'intero percorso relativo, prestando attenzione però che questi percorsi si basano sulla cartella in cui lo script è in esecuzione.

    Un'altra scelta è il percorso assoluto nel file system, su AlterVista è qualcosa come /membri/relettronico/avatar/immagineX.jpg. Oppure il percorso assoluto come URL: http://relettronico/avatar/immaginesX.jpg.

    I suggerimenti che do più spesso:


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

    Predefinito

    Se uso il primo modo quindi nel db salvo solo liceoX.jpg? E poi nell'html metto quel php

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

    Predefinito

    In linea di massima sì.

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

    Predefinito

    Ma come faccio a mettere il codice meccanografico come GET se per acedere deve essere impostato come POST?

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

    Predefinito

    in questa query:

    SELECT * FROM scuola JOIN supplenza ON scuola.id = supplenza.id_scuola WHERE scuola.codice_meccanografico = '...' AND pubblico='1'

    dove ci sono i tre punti è da lasciare cosi?

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

    Predefinito

    Ma come faccio a mettere il codice meccanografico come GET se per acedere deve essere impostato come POST?
    E dove sta scritto che deve essere impostato come POST?
    È una scelta che devi fare tu, in questo contesto vedrei più ragionevole l'uso di GET, ma puoi anche decidere di usare POST. Oggettivamente non cambia molto.
    L'importante è che il form e la pagina di destinazione siano coerenti su cosa usare, ovvero entrambe GET o entrambe POST.

    SELECT * FROM scuola JOIN supplenza ON scuola.id = supplenza.id_scuola WHERE scuola.codice_meccanografico = '...' AND pubblico='1'
    Al posto dei tre puntini ci va il codice meccanografico
    Puoi usare i prepared statement in maniera analoga a quelli di qualche messaggio fa.

    I suggerimenti che do più spesso:


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

    Predefinito

    Ah quindi ci devo mettere $codice_meccanografico=.POST['cod_mec'];

    Ma per il login il form dove inserisco il codice meccanografico deve essere POST per inviare i dati sbaglio?

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

    Predefinito

    Se decidi di usare POST, come nell'assegnamento che hai mostrato, devi farlo sia nel form che nella pagina PHP.
    Nulla ti vieta di fare tutto con GET, a te la scelta. L'importante è che il form e la pagina PHP siano coerenti tra loro.

    I suggerimenti che do più spesso:


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

    Predefinito

    Ma scusa il POST manda dati mentre il GET li riceve perché vanno bene comunque?

    Se io metto il GET al form del codice non lo invia più alla pagina di login

  26. #116
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,173

    Predefinito

    (scusatemi ma non ho letto tutto: non so perché in questo caso serve GET).

    Comunque: se hai:
    Codice HTML:
    <form action="pagina.php" method="POST">
    <input type="text" name="testo">
    <input type="submit">
    </form>
    Preleverai $_POST['testo'].

    Se hai:
    Codice HTML:
    <form action="pagina.php" method="GET">
    <input type="text" name="testo">
    <input type="submit">
    </form>
    Preleverai $_GET['testo'].

    La pagina "pagina.php" nel caso di get verrà richiamata con:
    Codice:
    sito.av.org/pagina.php?testo=valore_scritto
    Ciao!
    Ultima modifica di alemoppo : 04-08-2018 alle ore 23.33.42

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

    Predefinito

    Ma scusa il POST manda dati mentre il GET li riceve perché vanno bene comunque?

    Se io metto il GET al form del codice non lo invia più alla pagina di login
    NO: sia GET che POST sono metodi per inviare i dati. Differiscono nel modo in cui li inviano: GET li "inserisce" nell'URL, mentre POST nel corpo del messaggio HTTP.

    Per il resto segui le indicazioni di alemoppo.

    I suggerimenti che do più spesso:


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

    Predefinito

    Ah quindi non mi cambia nulla a me usarne uno o l'altro quindi mi basta mettere GET a tutto

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

    Predefinito

    Ho messo i GET e prima della querh ho messo $cod_mec = $_GET['cod_mec'];
    Ma comunque non mi fa visualizzare le supplenze non estrae i dati dalla tabella

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

    Predefinito

    Molto probabilmente ci sono errori qua e là.
    Mostra il codice che hai scritto. Ricorda che puoi usare error_reporting(E_ALL); per visualizzare gli errori tu stesso.

    I suggerimenti che do più spesso:


Pagina 4 di 7 PrimoPrimo ... 23456 ... UltimoUltimo

Regole di scrittura

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