Visualizzazione risultati 1 fino 28 di 28

Discussione: accesso negato mysql

  1. #1
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Red face accesso negato mysql

    buona sera...sto provando per la prima volta ad accedere a mysql da form e mi da questo errore:

    Connessione fallita: accesso negato per l'utente 'noncecapisco'@'localhost' al database 'my_noncecapisco'.

    qualcuno mi puo' dire cortesemente dove sbaglio? grazie.

    Codice PHP:
    <?php

    $dati
    = $_POST['testo'];
    $mail = $_POST['email'];
    $file = $_POST['file'];


    $db_host = 'localhost';
    $db_user = 'noncecapisco';
    $db_pass = '...';
    $db_name = ' my_noncecapisco';

    $cn = new mysqli($db_host, $db_user, $db_pass, $db_name);


    if (
    $cn->connect_errno) {
    echo
    "Connessione fallita: ". $cn->connect_error . ".";
    exit();
    }


    if (!
    $cn->query($sql)) {
    echo
    "Errore della query: " . $cn->error . ".";
    }else{
    echo
    "Registrazione effettuata correttamente.";
    }


    $sql = "INSERT INTO dati utenti (testo, email, file) VALUES ("
    . "'" . $dati. "',"
    . "'" . $mail . "',"
    . "'" . $file . "',"

    ?>
    Ultima modifica di dreadnaut : 08-10-2023 alle ore 12.17.53 Motivo: + tag [php] attorno al codice

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Codice PHP:
    $db_host = 'localhost';
    $db_user = 'noncecapisco';
    $db_pass = '...';
    $db_name = ' my_noncecapisco';
    C'è uno spazio di troppo in ' my_noncecapisco'. Su AlterVista puoi anche lasciare la passoword vuota, perché accedi all'unico database disponibile.

    Codice PHP:
    $sql = "INSERT INTO dati utenti (testo, email, file) VALUES ("
    . "'" . $dati. "',"
    . "'" . $mail . "',"
    . "'" . $file . "',"
    Occhio ad infilare valori che arrivano dall'esterno dentro ad una query, rischi di accettare comandi pericolosi. Meglio usare i prepared statement del PHP.

    In altri casi, puoi semplificare la concatenazione di stringhe così (documentazione)
    Codice PHP:
    $messaggio = "Messaggio a proposito di '{$mail}' e '{$file}'";

  3. #3
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    buon giorno e buona domenica, grazie mille per la risposta, ho provato ma mi da errore nella query...

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

    Predefinito

    Provala così:

    Codice PHP:
    $sql = "INSERT INTO dati utenti (testo, email, file) VALUES ("
    . "'" . $dati. "',"
    . "'" . $mail . "',"
    . "'" . $file . "');"
    Ho rimosso l'ultima virgola e chiuso la parentesi tonda. La query generata sarebbe:
    Codice:
    INSERT INTO dati utenti (testo,  email, file) VALUES ('stringa_testo', 'stringa_email', 'stringa_file');
    Se ancora dovesse persistere l'errore, puoi mostrarci il messaggio di errore?

    Ti consiglio anche io di usare i prepared statement come indicato da Dreadnaut, o almeno ti suggerirei di aumentare il livello di sicurezza controllando i dati in ingresso con real_escape_string():

    Codice PHP:
    $sql = "INSERT INTO dati utenti (testo, email, file) VALUES ("
    . "'" . $mysqli->real_escape_string($dati) . "',"
    . "'" . $mysqli->real_escape_string($mail) . "',"
    . "'" . $mysqli->real_escape_string($file) . "');"
    In pratica, devi passare sempre i dai provenienti dai form nella real_escape_string() per evitare attacchi mysql injection, oppure usare i prepared statement.

    Ciao!
    Ultima modifica di alemoppo : 08-10-2023 alle ore 15.15.14

  5. #5
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    ciao alemoppo....buona domenica e grazie per l'aiuto senza prima farmi leggere tutto wikipedia..ah ah.. ho provato come hai scritto tu e mi dice semplicemente.... Errore della query: .

    NB: mi sa che ho sbagliato io a creare il database... ora creo la tabella "dati utente" e all'interno creo 3 campi (dati,email,file) giusto? grazie alemoppo.

    alemoppo scusa... ma nei campi che creo nella teballe i nomi devono essere variabili o semplicemente quello che rappresentano? ggrazie.
    Ultima modifica di noncecapisco : 08-10-2023 alle ore 15.37.19

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

    Predefinito

    In effetti c'è un problema nel nome della tabella: la tabella se non erro non può contenere uno spazio nel nome: quindi non può essere "dati utenti". Ipotizzo a questo punto che la tabella non esiste sul database, andrebbe quindi prima creata. Ti torna?

    La tabella puoi crearla con la CREATE TABLE, la query dovrebbe assomigliare a una cosa del tipo:
    Codice:
    CREATE TABLE `dati_utenti` (
      `id` INT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
      `testo` VARCHAR(100) NOT NULL,
      `email` VARCHAR(100) NOT NULL,
      `file` VARCHAR(100) NOT NULL,
      PRIMARY KEY  (`id`)
    );
    Questo codice, visto che va eseguito una sola volta, puoi eseguirlo "al volo" da phpMyAdmin nel campo "SQL" dopo aver cliccato sul nome del tuo database. Per eseguire la query, è sufficiente cliccare su "esegui".

    Quindi poi, modifica nella query dell'INSERT il nome della tabella e dovrebbe andare.

    n.b: ho inserito un campo in più chiamato "id" che ti può aiutare in futuro per gestire i dati: con quel campo, ad esempio, puoi collegare altre tabelle a determinate righe o comunque avere una condizione per selezionare una specifica riga evitando di operare in più righe quando non vorrai farlo. Riassunto: inserisci sempre in tutte le tabelle il campo ID di tipo auto_increment, non va comunque specificato quando fai la insert, perché essendo "auto_increment" mysql valorizzerà automaticamente quel campo. Per ora questa cosa è inutile, ma ti consiglio già di inserirlo adesso per aver meno problemi in futuro


    Citazione Originalmente inviato da noncecapisco Visualizza messaggio
    alemoppo scusa... ma nei campi che creo nella teballe i nomi devono essere variabili o semplicemente quello che rappresentano? ggrazie.
    I nomi sono dei "nomi" fissi, vedi l'esempio che ti ho fatto nel messaggio. Puoi non eseguirlo da PHP, quindi non vanno specificate variabili non essendo nemmeno in PHP. In pratica dici a mysql di crearti una tabella chiamata con il nome che gli passi e con quei campi: per ogni campo puoi impostare il tipo (che può essere stringa, numero, data, etc) e il nome del campo.

    Ciao!
    Ultima modifica di alemoppo : 08-10-2023 alle ore 15.45.13

  7. #7
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    perdonami...ma io sono dentro il Database: my_noncecapisco .. e sono dentro la tabella dati_utente , non posso farlo da qui... mi sta dicendo quanti campi creare...e' uguale no?

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

    Predefinito

    Sì, puoi usare anche la procedura di phpMyAdmin, ma fai prima a fare così:



    Ciao!

  9. #9
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    perfetto grazie....

    alemoppo scusa..un'ultima cosa e poi giuro non ti disturbo piu'...ora faccio tutto...ma ...questo significa che una volta creata la tabella con i campi, quando si spedisce dal form, io dentro i campi creati nella tabella avro'( il testo, l'email, e il file?)
    Ultima modifica di alemoppo : 08-10-2023 alle ore 16.15.52 Motivo: fusione messaggi consecutivi

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

    Predefinito

    Esatto! Prova a far tutto, poi secondo me capisci bene guardando da phpMyAdmin: potrai vedere tutte le tabelle e i loro contenuti.
    Ogni volta che si spedisce dal form, si creerà una nuova riga nella tabella creata con i dati inviati dal visitatore del sito.

    Citazione Originalmente inviato da noncecapisco Visualizza messaggio
    alemoppo scusa..un'ultima cosa e poi giuro non ti disturbo piu'
    Il forum è fatto per questo! non disturbi. Al più non ti rispondo io (ma potranno rispondere altri utenti). Tu se hai dubbi chiedi qualsiasi cosa, non c'è problema.



    Ciao!
    Ultima modifica di alemoppo : 08-10-2023 alle ore 16.09.38

  11. #11
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    perfetto..grazie mille alemoppo...

    ho fatto come hai detto tu ma... mi da un sacco di errori..

    Analisi statica:

    Sono stati trovati 4 errori durante l'analisi.

    Era atteso un nome di simbolo! (near "'id'" at position 34)
    Era attesa almeno la definizione di un campo. (near "'id'" at position 34)
    Inizio di statement inatteso. (near "4" at position 40)
    Tipo statement non riconosciuto. (near "UNSIGNEd" at position 43)
    Query SQL: Copia

    CREATE TABLE 'dati_utente' ( 'id' (4) UNSIGNEd NOT NULL AUTO_INCREMENT, 'testo' VARCHAR(100) NOTT NULL, 'email' VARCHAR(100) NOTT NULL, 'file' VARCHAR(100) NOTT NULL, PRIMARY KEY ('id') );

    Messaggio di MySQL: Documentazione

    #1064 - 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 ''dati_utente' (
    'id' (4) UNSIGNEd NOT NULL AUTO_INCREMENT,
    'testo' VAR' at line 1
    Ultima modifica di alemoppo : 08-10-2023 alle ore 16.50.34 Motivo: unione post consecutivi

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

    Predefinito

    Su Mysql non vanno usati i singoli apici che hai usato te, ma vanno usati proprio quelli che ho scritto prima (puoi fare copia-incolla). In realtà non sono obbligatori. Inoltre negli ultimi campi hai scritto "NOTT" invece di "NOT". Provala così:

    Codice:
    CREATE TABLE dati_utente ( id INT(4) UNSIGNEd NOT NULL AUTO_INCREMENT, testo VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL, file VARCHAR(100) NOT NULL, PRIMARY KEY (id) );
    Su Mysql ci sono molte cose da sapere, le imparerai pian piano quando serviranno. Per ora volevo solamente dirti che "VARCHAR(100)" è un tipo di dato dove puoi inserire al più 100 caratteri, credo siano sufficienti nel tuo caso. Purtroppo ti tocca la lettura della documentazione per capire tutti i vari tipi e come usarli al meglio Il capitolo 11.3 parla in particolare delle stringhe.

    Ciao!
    Ultima modifica di alemoppo : 08-10-2023 alle ore 16.43.37

  13. #13
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    ok...poi cosa devo spingere ? ottieni la query auto memorizzata o esegui?

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

    Predefinito

    Citazione Originalmente inviato da noncecapisco Visualizza messaggio
    ottieni la query auto memorizzata o esegui?
    "Esegui", vedi il punto 4 nella immagine precedente.

    Ciao!

  15. #15
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    ci mancherebbe... con quello che mi hai scritto oggi ti sei meritato il premio della universita' di harvard..

    EDIT:

    Errore della query: .
    Ultima modifica di alemoppo : 08-10-2023 alle ore 16.57.41 Motivo: unione messaggi

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

    Predefinito

    A me risulta corretta. Ho provato ora e me l'ha eseguita:



    Assicurati di usare il codice precedente, identico (ma anche il primo che ti avevo scritto con gli apici).

    Ciao!
    Ultima modifica di alemoppo : 08-10-2023 alle ore 16.58.58

  17. #17
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    noo... mi sono spiegato male..... la tabella con i campi me l'ha creata....ho fatto la prova da form e mi da quel errore.

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

    Predefinito

    Aaah, ok.

    Hai sostituito "dati utenti" con "dati_utente"? Se sì, prova ad aggiungere dopo la query (nel codice PHP):

    Codice PHP:
    echo $sql;
    (se hai redirect, eliminali temporaneamente per vedere cosa scrive nella query).

    Ciao!

  19. #19
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    redirect non ne ho..li ho tolti....

    // definisco la query di inserimento dati
    $sql = "INSERT INTO dati_utente (testo, email, file) VALUES ("
    . "'" . $dati. "',"
    . "'" . $mail . "',"
    . "'" . $file . "');"

    echo $sql;




    ?>
    Errore di analisi : errore di sintassi, 'echo' imprevisto (T_ECHO) in /membri/noncecapisco/upload2.php alla riga 36

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

    Predefinito

    In effetti manca il punto e virgola finale:
    Codice PHP:
    // definisco la query di inserimento dati
    $sql = "INSERT INTO dati_utente (testo, email, file) VALUES ("
    . "'" . $dati. "',"
    . "'" . $mail . "',"
    . "'" . $file . "');";

    echo
    $sql;
    EDIT:

    Ho notato adesso: la riga della query va prima di if (!$cn->query($sql)) {

    Codice PHP:
    con $sql = '<query>';
    Semplicemente crei una stringa di testo contenente la query. Poi questa la esegui solamente con $cn->query($sql). Quindi la stringa $sql va valorizzata prima.

    Ciao!
    Ultima modifica di alemoppo : 08-10-2023 alle ore 17.27.06

  21. #21
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    Errore della query: .INSERT INTO dati_utente (testo, email, file) VALUES ('forza e coraggio','fra_das@libero.it','');

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

    Predefinito

    Puoi ri-mostrare il codice PHP ora come è diventato? Forse non hai visto l'"EDIT" nel mio messaggio precedente.

    Ciao!
    Ultima modifica di alemoppo : 08-10-2023 alle ore 17.39.57

  23. #23
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    alemoppo ti giuro oggi mi sento in colpa...ti sto martorizzando...ti chiedo veramente scusa con il cuore..mi ero fatto un'idea diversa di te. e' solo che vorrei riuscire a vedere i dati inseriti nella tabella. allora io nel form ho : riempito la casella email, riempito la casella testo, e riempito la casella con il file, e ho spinto il pulsante per far eseguire il codice upload.php.... io il file l'ho inserito. guarda se vuoi provare ....


    http://noncecapisco.altervista.org/upload2/index2.php
    Ultima modifica di noncecapisco : 08-10-2023 alle ore 17.43.40

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

    Predefinito

    Ho editato anche il precedente messaggio, ti sto facendo far confusione io modificando i messaggi :D Leggi il #20, devi inserire $sql= .. prima di if (!$cn->query($sql)) {

    Rimane comunque il fatto che $_POST['file'] è vuoto, ma non dovrebbe essere un problema ai fini dell'esecuzione della query, credo.

    Ciao!

  25. #25
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    si ma io come faccio a vedere che i dati sono arrivati al database... i campi nel database sono tutti vuoti.. testo...email...il file.... come faccio?

  26. #26
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    funzionaaaaaaaaaaaaaaaaaaa ho capovolto il codice nel file upload.php si vede che gli dava interferenza.


    // definisco la query di inserimento dati
    $sql = "INSERT INTO dati_utente (testo, email, file) VALUES ("
    . "'" . $dati. "',"
    . "'" . $mail . "',"
    . "'" . $file . "');";
    // esecuzione della query

    if (!$cn->query($sql)) {
    echo "Errore della query: " . $cn->error . ".";
    }else{
    echo "Registrazione effettuata correttamente.";

    nella tabella ho: il testo,l'email. ma il file non ce'..per oggi,va bene cosi!ah ah... grazie ancora di cuore alemoppo.
    }

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

    Predefinito

    Ottimo che funziona.

    Citazione Originalmente inviato da noncecapisco Visualizza messaggio
    ho capovolto il codice nel file upload.php si vede che gli dava interferenza.
    Non si tratta di interferenza: il codice viene eseguito dall'alto al basso.

    Finché $sql non esiste o comunque non contiene la query, non puoi usarlo. Se lo usi, è normale che la query non vada a buon fine o comunque ci sia un errore.

    Ciao!

  28. #28
    noncecapisco non è connesso Utente Blog
    Data registrazione
    16-09-2023
    Messaggi
    387

    Predefinito

    grazie di tutto e buona serata

Regole di scrittura

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