Visualizzazione dei risultati da 1 a 6 su 6

Discussione: php & mail

  1. #1

    php & mail

    ciao ragazzi, ancora una volta mi trovo costretto a chiedere il vostro aiuto per risolvere l'ennesimo problema con il mio sito web...

    ho creato una pagina chiamata site_key.tpl
    di cui vi riporto il codice:
    Codice PHP:
    {include file='file:core/header.tpl'}

        
        <
    div class="main">

            {include 
    file='file:sidebars/left.tpl'}
     
            
            <
    div class="main-content">
            
                <
    h1 class="pagetitle">Points key</h1>
    {if 
    count($message.messages) > 0}
                <
    div class="{$message.type}">
                    <
    ul>
                {foreach 
    item=text from=$message.messages}
                        [*]{
    $text}
                {/foreach}
                    [/list]
                </
    div>
    {/if}
    {if 
    $user.is_admin}   

            <
    div class="column1-unit" align="center">
              <
    div class="contactform" align="center">
                <
    form method="post" action="{$script_url}?act=key">
                  <
    fieldset><legend> {$user.name}'s MALL POINTS DELIVERING SISTEM </legend>
                        

    Please enter here the key gonna active now:</p>
                                     

    <input type="text" name="act_key" id="act_key" class="bigfield" value="{$form_key}" tabindex="1" /></p>
                        

    Please enter here the point'
    s quantity:</p>
                                     

    <
    input type="text" name="points" id="points" class="bigfield" value="{$form_points}tabindex="1" /></p>    
                                                                                     

    Please enter here the donator's email:</p>
                                     

    <input type="text" name="mail" id="mail" class="bigfield" value="{$form_mail}" tabindex="1" /></p>
                        

    Please enter here the donator'
    s char name:</p>
                                     

    <
    input type="text" name="charname" id="charname" class="bigfield" value="{$form_charname}tabindex="1" /></p>
                         

    <
    input type="submit" id="submit" class="button" name="a_key" value="Submit"></p>
                 </
    fieldset>
                </
    form>
              </
    div>              
            </
    div>
                <
    div class="notice">
                    <
    ul>
                        [*]- 
    A Key only contains 16 Letters!
                        [*]- 
    Every Key can be used only once!
                        [*]- 
    You can obtain keys from events or by donating for the Server
                        
    [*]- If you got any problems useing this System please contact the team over the Contact form!
                    [/list]
                </
    div>
            </
    div>
    {else}                

            
                
                <
    h1 class="pagetitle">Login</h1>

                          <
    div class="contactform">
                    <
    form method="post" action="{$script_url}?act=login">
                        <
    input type="hidden" name="login" value="doit" />
                        

    <
    label for="username" class="left">Username:</label>
                            <
    input type="text" name="username" id="username" class="shortfield" value="{$form_username}tabindex="1" /></p>
                        

    <
    label for="password" class="left">Password:</label>
                            <
    input type="password" name="password" id="password" class="shortfield" value="" tabindex="2" autocomplete="off" /></p>
                        

    <
    input type="submit" name="submit" id="submit" class="button" value="Login" tabindex="3" /></p>
                        

    </
    p>
                    </
    form>
                </
    div>
                </
    div>              
    {/if}    
            {include 
    file='file:sidebars/right.tpl'}

        </
    div>

    {include 
    file='file:core/footer.tpl'
    come potete vedere ho creato semplicemente 4 righe di testo dove posso inserire alcuni dati quali "key,points,mail,charname"

    il codice php a cui questo file fa riferimento è nel file inc.key.php
    di cui vi riporto il contenuto:

    Codice PHP:
    <?php
        
    // Include needed files
        
    if (isset($_SESSION['aid']))
        {
            if (isset(
    $_POST['a_key'])) {

                
    $act_key        trim((isset($_POST['act_key']) ? $_POST['act_key'] : ''));
                
    $points        trim((isset($_POST['points']) ? $_POST['points'] : ''));
                
    $mail        trim((isset($_POST['mail']) ? $_POST['mail'] : ''));
                
    $charname        trim((isset($_POST['charname']) ? $_POST['charname'] : ''));

                
    $query doQuery("SELECT * FROM item_key WHERE act_key = '$act_key'"DATABASE_WEBSITE); 

                                                    if(
    mssql_num_rows($query) > 0
                                                                                               { 
                                                                                                             
    $oSmarty->assign('message',            array( 'type'        => 'error',
                                                
    'messages'    => array( 'KEY USED, TRY WITH A DIFFERENT ONE!' ) ) );
                                                                                                } 
                                                                     else 
                                                                               { 


                
    $actkey doQuery("INSERT INTO item_key (act_key,wasted,points,mail,charname) VALUES ('$act_key','0','$points','$mail','$charname')"DATABASE_WEBSITE);
                
                
                if(!
    $actkey
                            {
                                
    $oSmarty->assign('message',            array( 'type'        => 'error',
                                                
    'messages'    => array( 'Error key' ) ) );
                            }
                        else
                            {                
                                
    $oSmarty->assign('message',            array( 'type'        => 'ok',
                                                
    'messages'    => array( 'Your key has been succesful actived!' ) ) );
                            }
                                                                                  }
                }
        }
        else
        {
                                
    $oSmarty->assign('message',            array( 'type'        => 'error',
                                                
    'messages'    => array( 'Please log-in to acces this feature!.' ) ) );
        }
        

        
    // Build breadcrumb-navigation

        
    $breadcrumbs    = array();

        
    $breadcrumbs[]    = array( 'caption'    => 'Home',
                     
    'url'        => ''    );
        
    $breadcrumbs[]    = array( 'caption'    => 'Active Key',
                     
    'url'        => ''    );

        
    $oSmarty->assign('breadcrumbs',        $breadcrumbs);

        
    // Display page

        
    $oSmarty->display('file:pages/mall/site_key.tpl');

    ?>
    praticamente, con questo codice apparentemente funzionante, sono in grado di prendere i dati inseriti e rigistrarli in un database SQL, più precisamente nella database "website" alla tabella item_key !

    ora però vorrei implementare il codice aggiungendo due cose:

    prima cosa:
    vorrei che quando registro i file sul database mi inserisca anche una colonna con la data... devo aggiungere una colonna al database e questo non è un problema ma non so come gestire il formato della cella e come far scrivere in automatico data e ora senza doverla inserire manualmente...

    seconda cosa:
    vorrei implementare lo script in modo tale che, quando avviene la registrazione dei dati sul database venga anche automaticamente inviata una mail all'indirizzo che ho inserito con un semplice testo del tipo:
    "la tua activation key è: $key"

    il secondo punto è quello più importante per la gestione del sito...
    gia utilizzo l'invio di email per la conferma di registrazione quindi parte del codice è gia integrato infatti:
    nel file inc.config.php c'è:

    Codice PHP:
    ...
    $config['mail'] = array( 'mode' => 'smtp''use_ssl' => false'server' => 'smtp.email.it''port' => 25'email' => '******@email.it''username' => '*******''password' => '*******''use_auth' => 'yes' );
    ... 
    Confido nel vostro aiuto perchè non so più come procedere...
    Vi ringrazio anticipatamente per la vostra disponibilità
    Matteo

  2. #2
    Per la prima domanda ti consiglio di creare una colonna per numeri interi a 10 cifre. A questo punto ci registri dentro di volta in volta il numero ottenuto con la funzione time(). Quest'ultimo equivale al time stamp unix attuale. Il time stamp unix non è altro che il numero di secondi trascorsi dall'1 Gennaio 1970. Il grande vantaggio di quest'ultimo è che permette di compiere facilmente operazioni e paragoni tra date (ad esempio sapere da quanti giorni un utente è registrato, senza preoccuparsi di mesi e anni bisestili). Cosa più importante, sapendo il time stamp di una data, è facilissimo visualizzarla anche nel formato tradizionale, grazie alla funzione date, che prende come primo argomento una stringa, in cui puoi indicare il formato della data (ad esempio "d/m/y", che significa giorno/mese/anno). Come secondo argomento, invece, è sufficiente passare un time stamp; la funzione restituirà una stringa con la data esatta del time stamp inserito nel formato desiderato.

    Per il secondo punto, non preoccuparti troppo di configurazioni, varie: è sufficiente utilizzare la funzione mail(), strutturata nel seguente modo:

    mail($destinatario, $oggetto, $messaggio)

    Dove $destinatario è l'indirizzo e-mail a cui inviare il messaggio, ne tuo caso quello inserito dall'utente, $oggetto è l'oggetto della mail e $messaggio è il contenuto.
    Per quanto riguarda server e configurazioni varie dell'invio, dovrebbe pensare a tutto il php.ini.
    Se vuoi è anche possibile inserire il parametro facoltativo $headers, che contiene informazioni aggiuntive come mittente, codifica della mail, formato, ecc.

    Spero di esserti stato utile!

  3. #3
    Grazie per la risposta!

    ho inserito la data nel seguente modo:
    Codice PHP:
    <?php 
    //.... 
    $data_ins=time();
    $actkey doQuery("INSERT INTO item_key   (act_key,wasted,points,mail,charname,data_ins) VALUES ('$act_key','0','$points','$mail','$charname', $data_ins)"); 
    //..... 
    ?>
    e funziona perfettamente... anche se avrei preferito poterla leggere in un formato decente anche da SQL....

    per la mail invece... ho capito il concetto ma non riesco a tramutarlo in qualcosa di concreto e funzionante...

  4. #4
    In che senso?
    E' sufficiente aggiungere alla fine del tuo script:
    Codice PHP:
    <?php
    $key 
    "Valore di key";
    mail($mail"Activation Key""La tua activation key è: $key");
    ?>
    Semplice no?
    In pratica inserisci semplicemente i dati come se dovessi inviare la mail da un qualsiasi client.

  5. #5
    ok perfetto!
    il codice funziona...
    Ma c'è un fatto misterioso! ho fatto un paio di prove e ho notato che il mittente dell'email è un mio indirizzo email... dove lo ha preso???? io non voglio che le mail vengano inviate a nome mio!!!

    altra cosa... ho notato che ricevo email su indirizzi provider di posta come gmail.com senza problemi, con hotmail.com il messaggio viene considerato spam e invece su libero.it e email.it il messaggio non viene ricevuto!

    come è possibile???
    Grazie ancora per il prezioso aiuto!

  6. #6
    Un vero mistero!
    Prova così:
    Codice PHP:
    <?php
    $mittente 
    "indirizzo@visualizzato.it";
    $headers 'From: $mittente' "\r\n" .     'Reply-To: $mittente' "\r\n" .     'X-Mailer: PHP/' phpversion();
    $key "Valore di key";
    mail($mail"Activation Key""La tua activation key è: $key"$headers);
    ?>
    In questo modo la mail viene inviata a nome di "indirizzo@visualizzato.it", inoltre, indicando che la mail è inviata dinamicamente da php, si dovrebbe risolvere il problema spam e, nel caso di mail.it e libero, aggiare qualche filtro automatico (spero).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.