Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    il codice viene eseguito tre volte!

    ciao a tutti, ho un problema con un form che reindirizza a una pagina la quale provvede a inserire un nuovo evento a calendario e a notificare a un determinato gruppo di utenti l'esistenza di questo evento.
    Purtroppo a volte capita che pur cliccando una sola volta sul 'submit' del form questa pagina viene eseguita 3 volte ovvero crea 3 volte lo stesso evento inviando quindi anche 3 email a tutti gli utenti.
    come mai?
    qui sotto la pagina che viene eseguita 3 volte.

    Codice PHP:
    <?php
    if (!isset($_SESSION)) {
      
    session_start();
    }
    $MM_authorizedUsers "2,1";
    $MM_donotCheckaccess "false";
     
    // *** Restrict Access To Page: Grant or deny access to this page
    function isAuthorized($strUsers$strGroups$UserName$UserGroup) { 
      
    // For security, start by assuming the visitor is NOT authorized. 
      
    $isValid False
     
      
    // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
      // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
      
    if (!empty($UserName)) { 
        
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
        // Parse the strings into arrays. 
        
    $arrUsers Explode(","$strUsers); 
        
    $arrGroups Explode(","$strGroups); 
        if (
    in_array($UserName$arrUsers)) { 
          
    $isValid true
        } 
        
    // Or, you may restrict access to only certain users based on their username. 
        
    if (in_array($UserGroup$arrGroups)) { 
          
    $isValid true
        } 
        if ((
    $strUsers == "") && false) { 
          
    $isValid true
        } 
      } 
      return 
    $isValid
    }
     
    $MM_restrictGoTo "../index.php";
    if (!((isset(
    $_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers$_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
      
    $MM_qsChar "?";
      
    $MM_referrer $_SERVER['PHP_SELF'];
      if (
    strpos($MM_restrictGoTo"?")) $MM_qsChar "&";
      if (isset(
    $_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0
      
    $MM_referrer .= "?" $_SERVER['QUERY_STRING'];
      
    $MM_restrictGoTo $MM_restrictGoTo$MM_qsChar "accesscheck=" urlencode($MM_referrer);
      
    header("Location: "$MM_restrictGoTo); 
      exit;
    }
    ?>
    <?
    require("config.php");
    require(
    "./lang/lang.admin." LANGUAGE_CODE ".php");
    require(
    "functions.php");
     
                    switch (
    $HTTP_GET_VARS['flag']) {
                                   case 
    "add" :
                                                   
    submitEventData();
                                                   break;
                                   case 
    "edit":
                                                   
    $id = (int) $HTTP_GET_VARS['id'];
                                                   
    $cd = (int) $HTTP_GET_VARS['cd'];
                                                   if (!empty(
    $id))
                                                                   
    submitEventData($id);
                                                   else
                                                                   
    $lang['accesswarning'];
                                                   break;
                                   case 
    "delete":
                                                   
    $month               = (int) $HTTP_GET_VARS['month'];
                                                   
    $year    = (int) $HTTP_GET_VARS['year'];
                                                   
    $id          = (int) $HTTP_GET_VARS['id'];
                                                  
                                                   if (!(empty(
    $id) && empty($month) && empty($year)))
                                                                   
    deleteEvent($id$month$year);
                                                   else
                                                                   
    $lang['accesswarning'];
                                                   break;
                                   default:
                                                   
    $lang['accesswarning'];
                    }
     
     
    // recupera valori impostati nel form e aggiorna evento o creane uno nuovo se non esistente
    function submitEventData ($id="")
    {
                    global 
    $lang$HTTP_POST_VARS;
                   
                    
    $uid                       $HTTP_POST_VARS['uid'];
                    
    $title                     addslashes($HTTP_POST_VARS['title']);
                    
    $textemail          addslashes($HTTP_POST_VARS['textemail']);
                    
    $res        addslashes($HTTP_POST_VARS['res']);
                    
    $text                     addslashes($HTTP_POST_VARS['text']);
                    
    $month                               $HTTP_POST_VARS['month'];
                    
    $day                      $HTTP_POST_VARS['day'];
                    
    $year                    $HTTP_POST_VARS['year'];
                    
    $shour                 $HTTP_POST_VARS['start_hour'];
                    
    $sminute            $HTTP_POST_VARS['start_min'];
                    
    $s_ampm           $HTTP_POST_VARS['start_am_pm'];
                    
    $ehour                                $HTTP_POST_VARS['end_hour'];
                    
    $eminute            $HTTP_POST_VARS['end_min'];
                    
    $e_ampm           $HTTP_POST_VARS['end_am_pm'];
                    
    $priv       $HTTP_POST_VARS['priv'];
                    
    $iscriz     $HTTP_POST_VARS['iscriz'];
                   
                    if (
    $shour == && $sminute == && $s_ampm == 0) {
                                   
    $starttime "55:55:55";
                    } else {
                                   if (
    $s_ampm == && $shour != 12$shour $shour 12;
                                   if (
    $s_ampm == && $shour == 12$shour 0;
                                   
    $starttime "$shour:$sminute";
                    }
                   
                    if (
    $ehour == && $eminute == && $e_ampm == 0) {
                                   
    $endtime "55:55:55";
                    } else {
                                   if (
    $e_ampm == && $ehour != 12$ehour $ehour 12;
                                   if (
    $e_ampm == && $ehour == 12$ehour 0;
                                    
    $endtime "$ehour:$eminute:00";
                    }
                   
                    if (
    $id) {
                                   
    $sql "UPDATE " DB_TABLE_PREFIX "mssgs SET uid='$uid', m='$month', d='$day', y='$year', ";
                                   
    $sql .= "start_time='$starttime', end_time='$endtime', title='$title', textemail='$textemail', res='$res', text='$text', priv='$priv', iscriz='$iscriz'";
                                   
    $sql .= "WHERE id=$id";
                                   
    $result $lang['updated'];
                    } else {
                                   
    $sql "INSERT INTO " DB_TABLE_PREFIX "mssgs SET uid='$uid', m='$month', d='$day', y='$year', ";
                                   
    $sql .= "start_time='$starttime', end_time='$endtime', title='$title', textemail='$textemail', res='$res', text='$text', priv='$priv', iscriz='$iscriz'";
                                   
    $result $lang['added'];
                    }
                   
                    
    mysql_connect(DB_HOSTDB_USERDB_PASS) or die(mysql_error());
                    
    mysql_select_db(DB_NAME) or die(mysql_error());
                   
                    
    mysql_query($sql) or die(mysql_error());
                   
     
    if (!
    function_exists("GetSQLValueString")) {
    function 
    GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
    {
      if (
    PHP_VERSION 6) {
        
    $theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
      }
     
      
    $theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch (
    $theType) {
        case 
    "text":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
    "long":
        case 
    "int":
          
    $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
    "double":
          
    $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
          break;
        case 
    "date":
          
    $theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
    "defined":
          
    $theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      }
      return 
    $theValue;
    }
    }
     
    ?>
                    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                    <html>
                    <head>
                                   <link rel="stylesheet" type="text/css" href="css/popwin.css">
                                   <script language="JavaScript">
                                                   opener.location = "index.php?chiave=asdfjlkae&month=<?= $month ?>&year=<?= $year ?>";
                                                   window.setTimeout('window.close()', 1000);
                                   </script>
                    </head>
                    <body>
                   
                    <div align=\"center\" class=\"display_txt\"><?= stripslashes($title?> <?= $result ?></div>
                   
                    </body>
                    </html>
        <?php
    // se cd maggiore di 1 allora mando email a tutti quanti con nuovo evento creato
    if($_GET['cd'] && $_GET['cd'] > 0) {
    require(
    "../class.phpmailer.php");
    // recupero ultimo evento creato
    $server mysql_connect(DB_HOSTDB_USERDB_PASS) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
    $query_maxeventi "SELECT id FROM calendar_mssgs WHERE title = '$title' ORDER BY id DESC LIMIT 0,1";
    $maxeventi mysql_query($query_maxeventi$server) or die(mysql_error());
    $row_maxeventi mysql_fetch_assoc($maxeventi);
    $totalRows_maxeventi mysql_num_rows($maxeventi);
    mysql_select_db($database_server$server);
    //seleziono destinatari tra coloro che hanno deciso di ricevere le email
    $query_presente "SELECT uid, email FROM calendar_users WHERE invitoeventi = 1";
    $presente mysql_query($query_presente$server) or die(mysql_error());
    $totalRows_presente mysql_num_rows($presente);
     
    while (
    $row_presente mysql_fetch_assoc($presente)) {
                   
    $destinatario $row_presente['email']; 
                   
    $mail = new PHPMailer();
     
    $mail->SetLanguage("it","./");
     
    $mail->IsSendmail();                                   // send via SMTP
     
    $mail->Host     "mail.xxxxxxxxxx.it"// SMTP servers
     
    $mail->SMTPAuth true;     // turn on SMTP authentication
     
    $mail->Username "segreteria@xxxxxxxxxx.it";  // SMTP username
     
    $mail->Password "xxxxx"// SMTP password
     
    $mail->From     "segreteria@xxxxxxxxxx.it";
     
    $mail->FromName "Xxxxx Xxxxx CAI Xxxxx ";
     
    $mail->AddReplyTo("xxxxxsv@googlegroups.com""Mailing List Xxxxx Xxxxx CAI Xxxxx"); // indicates ReplyTo headers
     
    $mail->AddAddress($destinatario);
     
    $mail->WordWrap 100;                              // set word wrap
     
    $mail->IsHTML(false);                               // send as HTML
     
    $mail->Subject $title." per il giorno $day/$month/$year alle ore $starttime";
     
    $colname_Recordset1 "-1";
    if (isset(
    $destinatario)) {
      
    $colname_Recordset1 $destinatario;
    }
    $query_Recordset1 sprintf("SELECT uid, username, fname, lname, hash FROM calendar_users WHERE username = %s"GetSQLValueString($colname_Recordset1"text"));
    $Recordset1 mysql_query($query_Recordset1$server) or die(mysql_error());
    $row_Recordset1 mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 mysql_num_rows($Recordset1);
     
    $mail->Body "Sei stato invitato dal Xxxxx Xxxxx CAI Xxxxx  a questo evento: ".$title." per il giorno "."$day/$month/$year"."<br><br>".
     
    $mail->AltBody  =  "$textemail<br><br>"."COMUNICA AGLI ALTRI SOCI la tua presenza cliccando <a
    href=\"http://www.xxxxxxxxxx.it/areasoci/presente.php?id="
    .$row_Recordset1['hash']."&evento=".$row_maxeventi['id']."&presenza=1\"> QUI </a>"."altrimenti clicca su <a href=\"http://www.xxxxxxxxxx.it/areasoci/presente.php?id=".$row_Recordset1['hash']."&evento=".$row_maxeventi['id']."&presenza=0\"> purtroppo/forse NON ci sar&ograve; </a>";
     
    $mail->Send();
     
    }
    }
     
    ?>
    <?           
    }
     
    function 
    deleteEvent($id$m$y)
    {
                    
    mysql_connect(DB_HOSTDB_USERDB_PASS) or die(mysql_error());
                    
    mysql_select_db(DB_NAME) or die(mysql_error());
                   
                    
    $sql "DELETE FROM " DB_TABLE_PREFIX "mssgs WHERE id = $id";
                    
    $result mysql_query($sql) or die(mysql_error());
                   
                    
    header("Location: index.php?month=$m&year=$y&chiave=asdfjlkae");
    }
    ?>

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Troppo codice e al momento non ho tempo da dedicarci per capire tutto ciò che succede, ma una cosa che salta subito all'occhio (che non ha a che fare col problema) è questa:
    Codice PHP:
    if (!isset($_SESSION)) {
      
    session_start();

    l'if è inutile, l'isset sarà sempre falso, finché non si esegue il session_start() la variabile $_SESSION per lo script non è accessibie e quindi non esiste.
    Metti il session_start() e basta.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Troppo codice e al momento non ho tempo da dedicarci per capire tutto ciò che succede, ma una cosa che salta subito all'occhio (che non ha a che fare col problema) è questa:
    Codice PHP:
    if (!isset($_SESSION)) {
      
    session_start();

    l'if è inutile, l'isset sarà sempre falso, finché non si esegue il session_start() la variabile $_SESSION per lo script non è accessibie e quindi non esiste.
    Metti il session_start() e basta.
    potrebbe essere questo l'origine dei problemi?
    ho trovato questo in un forum, in merito all'isset sessione:
    "The check will allow you to keep your current session active even if it's a loop back submission application where you plan to reuse the form if data is typed incorrectly or have additional checks and balances within your program before proceeding to the next program."

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non so se sia la causa, ma io lo toglierei senza pensarci nemmeno mezzo secondo.
    Lascia solo session_start()

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.