Visualizzazione risultati 1 fino 13 di 13

Discussione: Problema interazione php-mysql

  1. #1
    Guest

    Predefinito Problema interazione php-mysql

    Dunque, premesso che conosco veramente poco il PHP, avrei una domanda semplice semplice...

    1) Io ho una tabella chiamata "links" nel db (mysql), tabella che contiene diversi campi (non so il termine giusto ed è per questo che faccio l'esempio idiota): ovvero nome, descrizione, url, nome webmaster, id della categoria ecc....
    2) Inoltre ho un form in una determinata pagina denominata "aggiungi_link.php", attraverso il quale l'utente può richiedere l'iscrizione tra i link...

    Ora io voglio fare in modo che, una volta che l'utente ha compilato i campi in maniera corretta (questo l'ho già impostato), se l'url che ha inserito nel form esiste già nel db, tra i valori (testuali) della colonna "linkURL" nella tabella "links", venga stampato un messaggio che sarà una cosa del tipo: "questo link esiste già". Mentre se l'url non esiste ne db, tra i valori (testuali) della colonna "linkURL" nella tabella "links", venga inviata una mail a me con tutti i dati e, se la mail è stata spedita printare un messaggio con tutti i dati inseriti dall'utente nel form, mentre se per qualche problema assurdo o chenesoio la mail non è stata spedita, printare un'altra roba tipo: "problema assurdo, ripprovare più tardi".

    Detto questo, non è che voglio che qualcuno mi imposti lo script, perchè l'ho fatto quasi tutto, mi manca solo la parte dove interrogo il db per vedere se il testo inserito dall'utente nella voce URL (che equivarrebbe a $_POST['linkURL']), esiste o meno tra le righe della colonna "linkURL" della tabella "links". Ho prvato in vari modi ma non sono buono per queste interazione con mysql.

    Riporto quello che ho scritto, a costo di dovermi vergognare: questo è un estratto della pagina che viene interrogata dal form...

    Codice PHP:
    <?
    $url
    = $_POST['linkURL'];

    $colname_url = "1";
    if (isset(
    $_GET['linkid'])) {
    $colname_url = (get_magic_quotes_gpc()) ? $_GET['linkid'] : addslashes($_GET['linkid']);
    }
    mysql_select_db($database, $datiaccesso);
    $query_listaurl = sprintf("SELECT * FROM links WHERE linkURL = '$url'", $colname_url);
    $listaurl = mysql_query($query_listaurl, $globaldirectory) or die(mysql_error());
    $row_listaurl = mysql_fetch_assoc($listaurl);
    $totalRows_listaurl = mysql_num_rows($listaurl);

    if (
    $totalRows_listaurl >= 1) {
    print
    "Non puoi iscrivere questo url alla directory perchè è già presente...";
    } else {
    $date = date('d/m/Y');
    $ore = date("g:i a");
    $name = $_POST['name'];
    $titolo = $_POST['titolo'];
    $categoria = $row_elencocat['gruppoTitle'];
    $email = $_POST['email'];
    $descrizione = nl2br($_POST['descrizione']);
    $indirizzo = $_POST['url'];
    $mail_to = $email_amministratore;
    $mail_from = $email;
    $mail_subject = "All'Amministrazione ecc....";
    $mail_body = "qui ci scrivo le variabili ecc...";
    $mail_in_html = "MIME-Version: 1.0\r\n";
    $mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $mail_in_html .= "From: <$mail_from>";

    if (
    mail($mail_to, $mail_subject, $mail_body, $mail_in_html))
    {
    print
    "messaggio che è andato tutto ok, i vari dati postati attraverso le varibili definite sopra e vattelapesca...";
    }
    else
    {
    print
    "Messaggio tipo: non so cosa è successo ma la mail non è stata spedita..."
    }
    }
    ?>
    Perdonatemi!!!
    Ultima modifica di uracile : 14-01-2006 alle ore 20.37.50

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

    Predefinito

    Se il tuo problema è solo quello, per verificare la presenza di un dato puoi fare così:
    Codice PHP:
    $query = "SELECT * FROM links WHERE linkURL = '$url'";
    $result = mysql_query ($query, $datiaccesso) or die ("Query eseguita: $query " . mysql_error ());
    if (
    mysql_num_rows ($result) > 0)
    echo
    "Errore: il sito è già presente nel database!";
    else
    // qui ti fai i tuoi traffici via e-mail
    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

    Funge... era molto più semplice del casotto che stavo architettando io...

    Esaurientissimo!!! Ti ringrazio infinitamente dementialsite!!!

    Comunque il mio errore principle era quello che alla variabile $url assegnavo $_POST['linkURL'] invece di $_POST['url'] visto che il name del campo era appunto "url" e non "linkURL" che è invece il nome della colonna del db... Insomma era come se non stessi facendo un cippolo...

    Un altra cosa sola: se invece di processare nel db il valore della variabile $url e dare il responso negativo solo quando ne viene trovato uno identico, volessi dare il reponso negativo anche quando il valore non coincide ma comunque contenuto nel valore testuale di una riga? Mi spiego meglio: i valori postati "http://miosito.it", "http://miosito.it/" e "http://miosito.it/pagina.html" riconoscono comunque al loro interno il valore della variabile $url ma per ora mi vengono chiaramente riconosciuti come diversi... Quindi se un rompiballe si mette a fare giochetti del genere lo script risulta un po' più solido...

    Inoltre ci sarebbe anche il problema di "http://www.miosito.it" e "www.miosito.it" ecc...

    Grazie ancora... e perdonate di nuovo l'ignoranza... sappiate però che ci sto provando...

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Guarda qui.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

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

    Predefinito

    Forse non sarà la stessa cosa ma prova a formulare così la query:

    SELECT * FROM links WHERE url LIKE '%$url%'

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

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da funcool
    Guarda qui.
    Quindi? Come dovrei fare?
    Codice PHP:
    <?php
    $url
    = $_POST['url']
    mysql_select_db($database, $datiaccesso);
    $query = "SELECT * FROM links WHERE url = '$url'";
    $links = mysql_query($query, $datiaccesso) or die(mysql_error());
    $row_links = mysql_fetch_assoc($links);
    $totalRows_links = mysql_num_rows($links);

    if (
    $totalRows_links > 0) {
    print
    "l'url esiste già";
    } else {
    if (
    stristr(boooooooo) === FALSE) {
    echo
    '"booooooooooooo';
    }
    ?>
    Il fatto è credo che dovrei definire prima che formato deve avere l'url da accettare, quindi, attraverso non so cosa, selezionare almeno una sequenza di caratteri dall'url postato (ad esempio: http://--www--miosito--.--dominio.--.--it) e verificare se esistono tutti in fila nel db... Credo...

    Booo

    @dementialsite: ma se la formulo come: SELECT * FROM links WHERE url LIKE '%$url%', http://bubba.it e www.bubba.it vengono riconosciuti come due domini diversi... o no?

    Stammi bene anche tu...

  7. #7
    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 uracile
    ... @dementialsite: ma se la formulo come: SELECT * FROM links WHERE url LIKE '%$url%', http://bubba.it e www.bubba.it vengono riconosciuti come due domini diversi... o no? ...
    Se memorizzi opportunamente i dati, sì: quella query se tu memorizzi "http://www.miosito.it/" causerà fallimento quando nel modulo inserirai "www.miosito.it" oppure "miosito.it", ma non "http://miosito.it".
    Per fare un ulteriore filtro, prova con questo:
    Codice PHP:
    $url = $_POST["linkURL"];
    // filtra il dominio principale: da "http://www.miosito.it/" avrai "miosito.it"
    $url = str_replace ("http://", "", $url);
    $url = str_replace ("www.", "", $url);
    if (
    strrpos ($url, "/") == strlen ($url) - 1)
    $url = substr ($url, 0, strlen ($url) - 1);

    // cerca il dato principale
    $query = "SELECT * FROM links WHERE linkURL LIKE '%$url%'";
    $result = mysql_query ($query, $datiaccesso) or die ("Query eseguita: $query " . mysql_error ());
    if (
    mysql_num_rows ($result) > 0)
    echo
    "Errore: il sito è già presente nel database!";
    else
    // qui ti fai i tuoi traffici via e-mail
    Purtroppo anche qui c'è un punto debole (è un po' ostico da scoprire, ma se esistessero siti del tipo www.it avrai seri problemi a cercarlo), oltre al fatto che poi avrai il problema contrario: sapere come memorizzare i dati nella forma più generica possibile...

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

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da dementialsite
    Se memorizzi opportunamente i dati, sì: quella query se tu memorizzi "http://www.miosito.it/" causerà fallimento quando nel modulo inserirai "www.miosito.it" oppure "miosito.it", ma non "http://miosito.it".
    Per fare un ulteriore filtro, prova con questo:
    Codice PHP:
    $url = $_POST["linkURL"];
    // filtra il dominio principale: da "http://www.miosito.it/" avrai "miosito.it"
    $url = str_replace ("http://", "", $url);
    $url = str_replace ("www.", "", $url);
    if (
    strrpos ($url, "/") == strlen ($url) - 1)
    $url = substr ($url, 0, strlen ($url) - 1);

    // cerca il dato principale
    $query = "SELECT * FROM links WHERE linkURL LIKE '%$url%'";
    $result = mysql_query ($query, $datiaccesso) or die ("Query eseguita: $query " . mysql_error ());
    if (
    mysql_num_rows ($result) > 0)
    echo
    "Errore: il sito è già presente nel database!";
    else
    // qui ti fai i tuoi traffici via e-mail
    Purtroppo anche qui c'è un punto debole (è un po' ostico da scoprire, ma se esistessero siti del tipo www.it avrai seri problemi a cercarlo), oltre al fatto che poi avrai il problema contrario: sapere come memorizzare i dati nella forma più generica possibile...

    Stammi bene...
    Direi che è ottimo!!! Poi quancosa a mano dovrò pur fare... sennò che gusto c'è...
    Ultima cosa, poi la smetto di scassare... Quel filtro, ottimo, si potrebbe fare in modo che elimini anche i casi tipo http://miosito.it/index.html o htm o php, insomma index.+ qualcosa...

    Ciauz e grazie infinite!

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

    Predefinito

    Ti basta aggiungere delle righe tipo questa nella prima parte del codice, attenzione all'ordine in cui le scrivi perché ci possono essere dei casi "fuorvianti" (ad esempio, devi filtrare index.html PRIMA di index.htm, prova ad immaginare perché...):
    Codice PHP:
    $url = str_replace ("/index.html", "", $url);
    $url = str_replace ("/index.htm", "", $url);
    $url = str_replace ("/index.php", "", $url);
    $url = str_replace ("/index.asp", "", $url);
    $url = str_replace ("/index.jsp", "", $url);
    ...
    // eccetera
    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...

  10. #10
    Guest

    Predefinito

    Ancora grazie!!!

  11. #11
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    wee,da quanto tempo
    guardalo lui come si diletta col php
    ps.ma chi fin ha fatt??poi quel nuovo portale l'avete concluso??
    ciàà
    si si ,so off topic ma tanto il topic è finito :P
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da dementialsite
    Ti basta aggiungere delle righe tipo questa nella prima parte del codice, attenzione all'ordine in cui le scrivi perché ci possono essere dei casi "fuorvianti" (ad esempio, devi filtrare index.html PRIMA di index.htm, prova ad immaginare perché...):
    Codice PHP:
    $url = str_replace ("/index.html", "", $url);
    $url = str_replace ("/index.htm", "", $url);
    $url = str_replace ("/index.php", "", $url);
    $url = str_replace ("/index.asp", "", $url);
    $url = str_replace ("/index.jsp", "", $url);
    ...
    // eccetera
    Stammi bene...
    per una magiore sicurezza puoi anche fare cosi:
    Codice PHP:
    $url = preg_replace("#\/index\.(.*?)#is", '', $url);
    toglie /index.tutte_le_estenzioni

    ciao ^__^

  13. #13
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    del tipo www.it avrai seri problemi a cercarlo
    forse però se utilizza sto stratagemma:

    Codice:
    $link=......
    ......................................
    $query = "SELECT linkURL FROM links"; 
    
    $risultato = mysql_query($query, $database);
    
    while($bla = mysql_fetch_array($risultato)){
    
    $link1=$bla['linkURL'];
    
    if(stristr($link1, 'link') === TRUE) {
    
    echo"link esistente";
      }
    
    };
    credo che ora trovi anche valori di colonne del tipo:.it . com .org etc etc etc
    Ultima modifica di Xsescott : 19-01-2006 alle ore 17.29.58
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

Regole di scrittura

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