Visualizzazione risultati 1 fino 21 di 21

Discussione: Gestione db PhPMyAdmin

  1. #1
    Guest

    Predefinito Gestione db PhPMyAdmin

    Salve,
    vorrei creare una struttura nel mio sito che consentisse di effettuare una registrazione e successivamente il login.

    Le mie conoscenze di html e javascript mi hanno portato fino alla realizzazione della struttura (form) e di uno script che controlla vari elementi:

    • Password di conferma è uguale a quella data
    • Nick non è un numero
    • Email esiste


    Leggendo la guida di html.it di php ho capito come fare a far ricevere ad una pagina php i dati del form.

    Non so fare però nè a memorizzare questi dati nel database (lo deve fare in automatico php), nè poi, al momento del login, a verificare se i dati inseriti corrispondono a quelli di registrazione, e infine non so come fare a far sì che il sito sappia quando sei loggato o no, in modo che anche se uno conosce l'url di una pagina, ci può accedere solo essendo loggato :)

    Ho provato a leggere le guide su PhpMyAdmin postate in questo forum, ma sono molto vecchie e le cose sono cambiate...

    Avrei bisogno che qualcuno mi desse i codici da inserire (e spiegarmi come inserirli) per fare quello che desidero tanto

    Grazie

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Allora... se devi realizzare un applicativo sul tuo sito, phpMyAdmin "non ti serve" (o meglio, eventualmente può servirti solo per verificare che tutto vada a buon fine).

    La prima cosa che devi studiare è qualche fondamento di (My)SQL, il linguaggio con cui puoi interagire con il database attraverso le cosiddette query.

    La seconda, è studiarti per bene la libreria di funzioni in PHP che consentirà al tuo script di interfacciarsi al database, eseguendo le suddette query: http://www.php.net/manual/en/ref.mysql.php

    Spero di averti dato qualche dritta... stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    Guest

    Predefinito

    Ciao,
    grazie per la risposta rapida :)

    Per quanto riguarda mysql da domani mi metto a studiarlo...tanto sono 14 pagine quindi nn dovrei mettermi molto :D

    Invece per php, mi hai linkato un sito in inglese...solo che io non riesco a studiare sull'inglese :)

    Potresti segnalarmi cosa dovrei in specifico (oltre alla classica sintassi php) sapere per poter fare il lavoro che ti ho descritto?

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Piccolo prontuario per quanto riguarda l'interfacciamento in PHP: la prima cosa che dovrà fare il tuo script sarà connettersi al server MySQL e selezionare il database da utilizzare (l'unico a tua disposizione, nel caso di AV).

    Per eseguire una query, utilizza la funzione mysql_query(): a seconda della query passata, il risultato della funzione sarà diverso.

    Se la query prevede la restituzione di un set di record (ad esempio SELECT), dovrai esaminarlo un record alla volta, da cui potrai estrarre i singoli campi usando i loro nomi come chiavi dell'array risultante. Se non ti interessa così tanto, puoi sempre conoscere solamente il numero delle righe del recordset.

    Se invece la tua query non prevede alcun risultato, ti sarà restituito un valore booleano: TRUE indica che la query è stata eseguita correttamente, FALSE che si è verificato un errore. A proposito, puoi anche vedere cosa è andato storto... se invece è andato tutto bene, puoi conoscere quante righe sono state modificate.

    Come puoi vedere, ho insistito nel collegarti pagine prese dal sito "in inglese"... posso comprendere le tue difficoltà, ma prima o poi nella documentazione ufficiale di PHP dovrai sbatterci la testa: è sempre bene imparare ad usarla prima possibile. E poi quasi sempre si trovano esempi di codice belli e pronti da copiare...

    Ad ogni modo, se avessi ancora difficoltà, non esitare a postare sul forum...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    Guest

    Predefinito

    Guardato una guida di html.it sul php applicato al sql (fantastica XD) sono riuscito senza studiare niente a creare tutti i codici che mi consentono di accedere al db, aggiungervi una voce, disconnetersi.

    Il problema è che ho provato a lanciare il file php ma da' errore..

    Ecco il file php:
    http://fedescript.altervista.org/login.php

    Codice sorgente:
    Codice PHP:
    <?php

    // inclusione del file contenente la classe
    include "funzioni_mysql.php"
    // istanza della classe
    $data = new MysqlClass();
    // connessione a MySQL
    $data->connetti();

    // definizione delle variabili da passare alla funzione per l'inserimento dei dati
    $t = "test"; // nome della tabella
    $v = array ("admin",sha1("password")); // valori da inserire
    $r = "username_login,password_login"; // campi da popolare
    // chiamata alla funzione per l'inserimento dei dati
    $data->inserisci($t,$v,$r);
    // disconnessione
    $data->disconnetti();

    ?>
    Il file appena mostrato (anche se si chiama login) servirebbe per la registrazione, in questo caso dovrebeb aggiungere alla tabella test del mio db il nick admin abbinato alla password "password".

    Il file appena mostrato attinge dal file .php seguente:

    Codice PHP:
    <?php
    class MysqlClass
    {
    // parametri per la connessione al database
    private $nomehost = "localhost";
    private
    $nomeuser = "fedescript";
    private
    $password = "password";

    // controllo sulle connessioni attive
    private $attiva = false;

    // funzione per la connessione a MySQL
    public function connetti()
    {
    if(!
    $this->attiva)
    {
    $connessione = mysql_connect($this->nomehost,$this->nomeuser,$this->password);
    }else{
    return
    true;
    }
    }
    }

    // nome del database da selezionare
    private $nomedb = "my_fedescript";






    // funzione per la chiusura della connessione
    public function disconnetti()
    {
    if(
    $this->attiva)
    {
    if(
    mysql_close())
    {
    $this->attiva = false;
    return
    true;
    }else{
    return
    false;
    }
    }
    }

    //funzione per l'inserimento dei dati in tabella
    public function inserisci($t,$v,$r = null)
    {
    if(isset(
    $this->attiva))
    {
    $istruzione = 'INSERT INTO '.$t;
    if(
    $r != null)
    {
    $istruzione .= ' ('.$r.')';
    }
    Il file appena mostrato dovrebbe contenere le tre funzioni (connessione,scrittura,disconnessione) di cui ha bisogno il file login.php

    Sapreste indicarmi quale errore sto commettendo?
    Grazie
    Scusate per il disturbo

  6. #6
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Il file della classe sembra incompleto (o non l'hai copiato tutto?)... manca la parte della query in cui definisci i valori da inserire (probabilmente l'array $v) e, soprattutto, non esegui la query!

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  7. #7
    Guest

    Predefinito

    EDIT:

    Ho trovato un codice già fatto in internet
    Grazie ugualmente
    Ultima modifica di fedescript : 15-10-2010 alle ore 17.55.57

  8. #8
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ok... adesso è tutto più chiaro. La query in effetti la stai eseguendo, visto che chiami la funzione mysql_query(). Il fatto che poi la usi insieme a mysql_error() dovrebbe darti già qualche spiegazione...

    Mi pare che l'errore che stai facendo sia il fatto che chiudi le stringhe costanti tra i "double-quote" invece che tra i 'single-quote': purtroppo su MySQL non sono equivalenti...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  9. #9
    Guest

    Predefinito

    Ho creato il file registrazione.php con questa sintassi:
    Codice PHP:
    <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
    <
    tr>
    <
    form name="form1" method="post" action="registrazione_conv.php">
    <
    td>
    <
    table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
    <
    tr>
    <
    td colspan="3"><strong>Registrazione Nuovo Utente</strong></td>
    </
    tr>
    <
    tr>
    <
    td width="78">Username</td>
    <
    td width="6">:</td>
    <
    td width="294"><input name="myusername" type="text" id="myusername"></td>
    </
    tr>
    <
    tr>
    <
    td>Password</td>
    <
    td>:</td>
    <
    td><input name="mypassword" type="text" id="mypassword"></td>
    </
    tr>

    <
    tr>
    <
    td>Indirizzo E-mail</td>
    <
    td>:</td>
    <
    td><input name="mymail" type="text" id="mypassword"></td>
    </
    tr>
    <
    tr>
    <
    td>&nbsp;</td>
    <
    td>&nbsp;</td>
    <
    td><input type="submit" name="Submit" value="Registrati"></td>
    </
    tr>
    </
    table>
    </
    td>
    </
    form>
    </
    tr>
    </
    table>
    Il submit rimanda a registrazione_conv.php che ha questa sintassi:

    Codice PHP:
    <?php
    $link
    = mysql_connect ("localhost", "fedescript", "")
    or die (
    "Non riesco a connettermi");
    $result = mysql_query ("INSERT INTO `members` VALUES (2, $_POST['myusername'], '$_POST['mypassword']');")
    or die (
    "Query non valida");
    echo
    "Registrazione avvenuta correttamente";
    mysql_close($link);
    ?>
    Quello che deve fare il tutto (lascia perdere il campo e-mail) è quello di trasmettere i dati username e password al db in modo che crei una nuova riga.

    Solo che qualcosa non funziona...potresti dirmi dove sbaglio?
    (credo nella riga 4 del secondo listato)

    EDIT:

    Inoltre, come posso fare che quando si iscrive l'ottavo utente abbia id 8..il nono id 9 e così via?
    come posso ciò dire:
    -Guarda quante riga ha la tabella
    -L'id è uguale alle righe +1
    Ultima modifica di fedescript : 15-10-2010 alle ore 19.21.51

  10. #10
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ci sono due errori:
    - il primo, come già detto, è che le stringhe costanti in MySQL vanno racchiuse tra single quote
    - il secondo è nell'inserimento dei parametri in PHP: quando utilizzi un array (come nel caso di $_POST) è obbligatorio delimitare la variabile con le parentesi graffe

    In definitiva, dovresti correggere così il codice:
    Codice PHP:
    <?php
    $link
    = mysql_connect ("localhost", "fedescript", "")
    or die (
    "Non riesco a connettermi");
    $result = mysql_query ("INSERT INTO `members` VALUES (2, '{$_POST['myusername']}', '{$_POST['mypassword']}');")
    or die (
    "Query non valida");
    echo
    "Registrazione avvenuta correttamente";
    mysql_close($link);
    ?>
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  11. #11
    Guest

    Predefinito

    Ho copiato il nuovo codice ma continua a darmi errore...
    mi dice Query non valida...

    P.S.
    Inoltre (poi non scoccio più :D), come posso fare che quando si iscrive l'ottavo utente abbia id 8..il nono id 9 e così via?
    come posso ciò dire:
    -Guarda quante riga ha la tabella
    -L'id è uguale alle righe +1

  12. #12
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da fedescript Visualizza messaggio
    Ho copiato il nuovo codice ma continua a darmi errore...
    mi dice Query non valida...
    In casi come questo tornerebbe utile stampare il risultato di mysql_error() all'interno del die(): nella maggior parte dei casi basta leggere l'output per risolvere.

    Citazione Originalmente inviato da fedescript Visualizza messaggio
    P.S.
    Inoltre (poi non scoccio più :D), come posso fare che quando si iscrive l'ottavo utente abbia id 8..il nono id 9 e così via?
    come posso ciò dire:
    -Guarda quante riga ha la tabella
    -L'id è uguale alle righe +1
    Senza troppi meccanismi complicati, puoi dichiarare il campo id usando l'attributo AUTO_INCREMENT. Quando dovrai inserire un nuovo record nella tabella, semplicemente specifica NULL al posto del valore che dovrà assumere il campo (questo lo calcolerà, da solo, MySQL).

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  13. #13
    Guest

    Predefinito

    Ho impostato come mi hai detto tu :D
    Solo che - scusa :( - non so fare a mettere mysql_error() all'interno del die()
    potresti dirmi esattamente cosa devo mettere in sostituzione a "Query non valida"?

    Grazie mille
    e scusa ancora

  14. #14
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Semplicemente così:
    Codice PHP:
    mysql_query (...) or die ("Errore SQL : " . mysql_error ());
    Un altro suggerimento: ti consiglio di costruire la query su una variabile a parte, per poi utilizzare quella variabile come parametro di mysql_query(). In questo modo puoi anche stampare la query di cui non è riuscita l'esecuzione, così come è stata generata.
    Codice PHP:
    <?php
    $query
    = "...";

    $result = mysql_query ($query) or die ("Errore SQL : " . mysql_error() . "<br/>Query eseguita: $query");
    ?>
    Stammi bene...
    Ultima modifica di dementialsite : 15-10-2010 alle ore 21.27.31
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  15. #15
    Guest

    Thumbs up

    Grazie mille!
    Vedendo l'errore (mancava la dichiarazione del db) finalmente posso sia loggarmi che registrarmi :D

    Ora setto la registrazione per memorizzare anche la password e poi vedo come fare per mantenere le sessioni (o come usare i cookie).

    Mi sa che ci risentiremo presto :D

    Grazie mille

  16. #16
    Guest

    Smile

    Con la sintassi attuale:
    Codice PHP:
    <?php
    $link
    = mysql_connect ("localhost", "fedescript", "")
    or die (
    "Non riesco a connettermi");
    $db_name="my_fedescript"; // Database name
    mysql_select_db("$db_name")or die("cannot select DB");

    $result = mysql_query ("INSERT INTO `members` VALUES (NULL, '{$_POST['myusername']}', '{$_POST['mypassword']}', '{$_POST['mymail']}');")
    or die (
    "Errore SQL : " . mysql_error ());
    echo
    "Registrazione avvenuta correttamente";
    mysql_close($link);
    ?>
    mi crea un utente anche se ne esiste già uno con identichi dati (username e password).

    Per evitare mi è venuto in mente che potrei fare un ciclo for che passa gli eementi di un array che contiene i nick degli utenti...
    Solo che non so come identificare le righe del db.

    Potresti dirmi quale sintassi usare per ottenere il valore assegnato alla colonna username?

  17. #17
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Hai mai sentito parlare di chiavi primarie e chiavi candidate? Puoi definire il campo che non deve essere duplicato come chiave primaria (PRIMARY KEY) o come chiave candidata (UNIQUE) se hai già una chiave primaria.

    Tieni presente che in questo modo, in caso di duplicazioni l'inserimento non riuscirà "come da copione", ma la notifica sarà molto simile a quella prevista per quelli che, fino ad ora, erano solo errori di sintassi della query (leggi: un po' brutale).

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  18. #18
    Guest

    Predefinito

    Finalmente ora puoi:
    -Registrarti
    -Loggarti
    -Visitare diverse pagine mantenendo il login attivo
    -Eliminare Account

    Sono bravo eh
    Veramente grazie mille :)

    Ora però vorrei che ogni utente potesse creare in automatico una pagina.
    Cioè quando si registra:

    Username: tizio
    Password: pass

    Oltre a registrarlo nel db, vorrei che si creasse nella cartella già esistente http://fedescript.altervista.org/pagine_utenti/

    una pagina del tipo tizio.html

    Cercando in internet ho visto che è possibile evitare di creare per ogni utente una pagina utilizzando mysql ma non ci ho capito molto...

    Potresti indicarmi (postando anche il codice) come posso fare?
    Grazie

  19. #19
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    In pratica devi crearti una pagina, dinamica, che dato un determinato parametro ( il nome utente ), inviato via GET, stampi la pagina di questo determinato utente.

    Le informazioni da stampare le depositi nel db per poi recuperarle con lo script.

    Codice PHP:
    <?php
    /* connessione al db */

    $user = isset($_GET['user']) ? mysql_real_escape_string($user) : false;

    if(!
    $user) {
    die(
    'Devi specificare un nome utente!');
    }

    $query = mysql_query("SELECT * FROM utenti WHERE utente = '$user'");
    $result = mysql_fetch_array($query);

    echo
    'Benvenuto', $r['utente'];
    ?>
    Questo è un esempio.
    Supponendo che tu salvi questo file col nome utente.php, per visualizzare la pagina di un dato utente visiterai quella pagina ma impostando il parametro user ( di GET ):
    Codice:
    utente.php?user=tizio
    Se poi vuoi le pagine come: tizio.html devi riscrivere gli url con il mod_rewrite.

  20. #20
    Guest

    Predefinito

    Premesso che comunque non ho ben capito come dovrebbe essere fatta la tabella di sql, resta il fatto che con questo modo non posso creare una pagina complessa...

    Credevo esistessero modi migliori

    Dico quindi tutto quello che vorrei fare...
    Queste pagine dovrebbero essere poi modificabili dall'utente...

    Il processo dovrebbe essere questo:
    -Ci si registra (e fin quì ci sono), in automatico il sistema deve creare una pagina univoca che rappresenti l'utente. (non so come fare)

    L'utente può accedere alla pagina tramite login (so fare) che però deve essere accessibile solo da quell'utente, non da qualsiasi utente loggato (temo per questo serva sql).

    In più l'utente deve poter modificare facilmente la pagina personale.

    Lo so che è difficile, ma mi piacerebbe farlo..qualcuno può aiutarmi passo per passo?

  21. #21
    Guest

    Predefinito

    EDIT:
    Problema risolto
    Ultima modifica di fedescript : 16-10-2010 alle ore 21.14.52

Regole di scrittura

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