Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Controllo esecuzione pagina singola

    Ciao a tutti,

    mi sono impantanato su un problema....ho una pagina in cui, dopo aver controllato l'attivazione di un utente, genero un codice casuale, lo scrivo sul db associandolo all'utente e genero un pdf con il codice e la mail.
    Il problema è come evitare che, per quell'utente (cioè per quella mail), venga generato piu di un codice (ad esempio, premendo aggiorna oppure usando il back del browser), oppure un utente piu sgamato copiando l'url generi piu codici...so che è una stupidata, ma non riesco ad individuare un metodo....
    grazie mille in anticipo!

  2. #2
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    puoi usare ajax.....

  3. #3
    cioè?... in che modo posso usare ajax?

  4. #4
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    posta un pò di codice ...

  5. #5
    Qui verifico l'attivazione dell'utente, se l'attivazione va a buon fine, redirect alla pagina genera-buono.php( che metto di seguito)

    codice:
    <?php
    	// richiamo il file di configurazione
    	require 'include/config/config.php';
     
    	// richiamo lo script responsabile della connessione a MySQL
    	require 'include/config/connect.php';
     $sql = "SELECT id,email FROM users WHERE key_control='$_GET[key]'";
    			$res = mysql_query($sql);
     
    			if($row = mysql_fetch_array($res))
    			{
    				$id = $row['id'];
    				$email = $row['email'];
    				$query = "UPDATE users SET ver=1,key_control='0' WHERE id='$row[id]'";
    				$resQ = mysql_query($sqlQ);
    				//echo "Il tuo account è ora attivato!";
    				header("location: genera-buono.php?email=$email");//redirect
    			
    			}
    			else
    			{
    				echo "Impossibile verificare l'account!";
    			}
    			
    ?>
    Ecco la pagina genera-buono.php, a cui passo come parametro l'indirizzo mail dell'utente appena attivato...


    codice:
    <?php
    
    function cbd_random_string($typeString, $intLength = 6) {
    
    	//if($typeString==1){ $validCharacters = "abcdefghijklmnopqrstuxyvwz0123456789ABCDEFGHIJKLMNOPQRSTUXYVWZ";}
    	if($typeString==1){ $validCharacters = "1234567890";}
    	/*if($typeString==3){ $validCharacters = "abcdefghijklmnopqrstuxyvwz";}
    	if($typeString==4){ $validCharacters = "ABCDEFGHIJKLMNOPQRSTUXYVWZ";}*/
    
    	$validCharNumber = strlen($validCharacters);
    	$result = "";
    	for ($i = 0; $i < $intLength; $i++) {
    		$index = mt_rand(0, $validCharNumber - 1);
    		$result .= $validCharacters[$index];
    	}
    	return $result;
    }
    
    //*** END FUNCTION cbd_random_string
    	$data = time();
    	$email = $_GET['email'];
    	$buono =  cbd_random_string(1);
    
    
    //genero il file pdf
    
    require_once('tcpdf/config/lang/eng.php');
    require_once('tcpdf/tcpdf.php');
    // Extend the TCPDF class to create custom Header and Footer
    class MYPDF extends TCPDF {
    
        //Page header
        public function Header() {
            // Logo
            $image_file = K_PATH_IMAGES.'logo_example.jpg';
            $this->Image($image_file, 10, 10, 0, '', 'JPG', '', 'T', false, 72, '', false, false, 0, false, false, false);
            // Set font
            $this->SetFont('helvetica', 'B', 20);
            // Title
            $this->Cell(0, 15, '', 0, false, 'C', 0, '', 0, false, 'M', 'M');
        }
    
        // Page footer
        public function Footer() {
            // Position at 15 mm from bottom
            $this->SetY(-15);
            // Set font
            $this->SetFont('helvetica', 'I', 8);
            // Page number
            $this->Cell(0, 10, 'Page '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
        }
    }
    
    // create new PDF document
    $pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
    
    // set document information
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor('Nicola Asuni');
    $pdf->SetTitle('TCPDF Example 003');
    $pdf->SetSubject('TCPDF Tutorial');
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    
    // set default header data
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
    
    // set default header data
    $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 061', PDF_HEADER_STRING);
    
    // set header and footer fonts
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
    
    // set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    
    //set margins
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
    
    //set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
    
    //set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    
    //set some language-dependent strings
    $pdf->setLanguageArray($l);
    
    // ---------------------------------------------------------
    
    // set font
    $pdf->SetFont('helvetica', '', 12);
    
    // add a page
    $pdf->AddPage();
    
    /* NOTE:
     * *********************************************************
     * You can load external XHTML using :
     *
     * $html = file_get_contents('/path/to/your/file.html');
     *
     * External CSS files will be automatically loaded.
     * Sometimes you need to fix the path of the external CSS.
     * *********************************************************
     */
    
    // define some HTML content with style
    $html = <<<EOF
    
    <style type="text/css">
        h1 {
            color: navy;
            font-family: times;
            font-size: 24pt;
            text-decoration: underline;
        }
        .testo{
    	font-family: helvetica;
    	font-size: 16px;
    	text-align: justify;
    	line-height: 18px;
        }
        
        table.first {
            color: #003300;
            font-family: helvetica;
            font-size: 8pt;
            border-left: 3px solid red;
            border-right: 3px solid #FF00FF;
            border-top: 3px solid green;
            border-bottom: 3px solid blue;
            background-color: #ccffcc;
        }
        td {
            border: 2px solid blue;
            background-color: #ffffee;
        }
        td.second {
            border: 2px dashed green;
        }
    	div.wrapper{
    		position:relative;
    	
    		margin-top:200px;
    		}
        div.contenuto {
    		position:relative;
    	margin-top:800px;
    	margin-left: 20px;
    	margin-bottom: 20px;
    	
        }
    	 div.contenuto1 {
    	margin-top:30px;
    	margin-left: 20px;
        }
    	.txtBuono
    	{
    		position:absolute;
    		top:450px;
    		left:300px;
    		color:red;
    		z-index:1000;
    	}
    	.testo
    	{
    		font-size:16px;
    	}
    </style>
    
    <div class="wrapper">
    
    
    
    
    
    
    
    
    
    
    
    
    
    <div class="contenuto">
    
    Gentile Cliente, grazie per esserti registrato nel nostro sito. In questo modo avrai l'opportunità 
     di ricevere la nostra newsletter, partecipare alle nostre promozioni e tanto altro ancora.
    
    Ti chiediamo di lasciare una tua opinione sui nostri prodotti scrivendo una recensione.
    
    Inoltre potrai accedere a  e conoscere gente con la tua stessa
     passione, scoprire le news dal mondo dell'integrazione e molto altro ancora.</p></div>
    <div class="contenuto1">
    
    
    MAIL: $email</p>
    
    
    
    
    CODICE PROMOZIONALE: $buono</p>
    </div>
    </div>
    
    
    
    
    
    EOF;
    
    
    
    // -- set new background ---
    
    // get the current page break margin
    $bMargin = $pdf->getBreakMargin();
    // get current auto-page-break mode
    $auto_page_break = $pdf->getAutoPageBreak();
    // disable auto-page-break
    $pdf->SetAutoPageBreak(false, 0);
    // set bacground image
    $img_file = K_PATH_IMAGES.'sfondoBuono.jpg';
    $pdf->Image($img_file, 10, 40, 190, 100, '', '', '', false, 72, '', false, false, 0);
    // restore auto-page-break status
    $pdf->SetAutoPageBreak($auto_page_break, $bMargin);
    // set the starting point for the page content
    $pdf->setPageMark();
    // output the HTML content
    $pdf->writeHTML($html, true, false, true, false, '');
    
    
    // reset pointer to the last page
    $pdf->lastPage();
    
    // ---------------------------------------------------------
    
    //Close and output PDF document
    $pdf->Output('example_061.pdf', 'I');
    
    
    		
    		
    			
    	$sqlCodice = "INSERT INTO buono_sconto (id_utente,numero,data_emissione) VALUES ('$id ','$buono','$data')";
    	$resCodice = mysql_query($sqlCodice);
    
    		
    			$content = "Benvenuto $_POST[username],\r\n";
    			$content .= "ecco il tuo buono sconto:\r\n\r\n";
    			$content .= $buono;
       			
    			mail($row['email'], "Iscrizione al sito...", $content, "From: Vs<users@users.it>");
    			
    			
    			
    ?>

  6. #6
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    ho il mal di testa...!!!

    una semplice interazione ajax modificherebbe il modo in cui hai strutturato il codice.
    Il redirect è la causa dei tuoi mali....
    Per non dilungare la cosa potresti eliminare questo:

    codice:
    header("location: genera-buono.php?email=$email");//redirect
    "il redirect è la causa dei tuoi mali"
    ed inserire nella prima condizione il codice della 2 pagina.
    Potrebbe essere un'alternativa......si potrebbe fare mooooolto meglio però..

  7. #7
    si, mi rendo conto che potrebbe essere molto più semplice ed efficente il codice, ma avrò tempo e modo di sgrezzarlo...in effetti se il codice di genera-buono.php lo incorporo in verifica utente il controllo è già bell'è che fatto dalla verifica utente, è questo quello che intendi?
    Continuo a non capire come integrare ajax...

  8. #8
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    qui non c'è ajax....
    l'avevo pensata come possibile soluzione.....certamente fattibile.
    Se non conosci ajax ti consiglio di dare un occhio alle guide molto esaustive:
    http://javascript.html.it/guide/leggi/95/guida-ajax/

  9. #9
    tranquillo, ajax lo conosco un pochetto...torno a non capire però come posso usare ajax in questo codice...ora la pagina verify user mi genera un pdf, ma non mi aggiorna più il db memorizzando che l'utente si è attivato(ora controllo perchè) e soprattutto resta il problema a monte...cioè una volta generato il codice ed il pdf, se faccio aggiorna continua a crearmi nuovi codici...e non deve...

  10. #10
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    ti restituisce un PRG?

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.