Problema mailing list

  • Creatore Discussione Creatore Discussione youngz
  • Data di inizio Data di inizio

youngz

Nuovo Utente
20 Apr 2010
3
0
0
Salve a tutti,sono nuovo di qui :) E inizio subito con un problema.Il mio problema si riscontra in uno script in php per una mailing list, spiego meglio:
questo file prende da un txt esterno una lista di email e permette di inviare a quest'ultime il necessario.

il codice è il seguente:
PHP:
          <center> 
<? 
// Some variables; 
// Your emails list file; 
$filelist = "testo.txt"; 
// Email headers that subscribed users see 
// when you send them an email; 
$adminmail = "[email protected]"; 
$emailheaders = "From: " . $adminmail . "\nReply-To: " . $adminmail; 
// By default we display entries; 
if (!isset($mode)) 
   $mode = "unknown"; 
    
// Since all administration is in one file, 
// we choose what to to do now; 
switch ($mode) { 
       case "create": createList(); break; 
       case "display": displayEntries($filelist); break; 
       case "add": addEntry($email); break; 
       case "edit": displayEditForm($id); break; 
       case "doEdit": editEntry($email, $oldvalue); break; 
       case "delete": deleteEntry($id); break; 
       case "send": sendNews($subject, $message); break; 
       default: 
       if (file_exists($filelist)) { 
          displayEntries(); displayAddEntryForm(); 
       } 

} 



/* THIS IS THE PART WHERE WE CREATE A MAILING LIST FILE AUTOMATICALLY */ 
/* IGNORE IT IF YOU HAVE CREATED IT MANUALLY (NOTHING WILL BE DISPLAYED */ 
if (!file_exists($filelist)) { 
   echo "<h2>Please, make sure you have 777 permissions for current 
   directory to create the mailing list file and click the button or 
    create it manually and set 666 permissions on it</h2>"; 
     
   echo "<form name=createFile action=adminemail.php method=post>"; 
   echo "<input type=submit name=mode value=create mailing list file>"; 
   echo "</form>"; 
   exit; 
} 

function createList() { 
         $fp = fopen($GLOBALS["filelist"], "w"); 
         if ($fp) { 
            echo "<h2>Mailing list creata con successo!</h2>"; 
            echo "<b>" . $GLOBALS["filelist"] . "</b>"; 
            echo "<meta http-equiv='Refresh' content='1; URL=adminemail.php'>"; 
            exit; 
         } 
         else 
            echo "Errore!"; 
} 
/**************************************************************************/ 


// Sends news to subscribers; 
function sendNews($subject, $message) { 
         $filecontents = file($GLOBALS["filelist"]); 
         for ($i=0;$i<sizeof($filecontents);$i++) { 
             $a = mail($filecontents[$i], $subject, stripslashes($message), $GLOBALS["emailheaders"]); 
             if (!$a) 
                exit; 
         } 
         echo "Spam sent! <img src="http://forum.mrwebmaster.it/images/smilies/blink.gif" border="0" alt="">"; 
         echo "<meta http-equiv='Refresh' content='1; URL=adminemail.php'>"; 
         exit; 
} 

// Displays the form to add emails to list; 
function displayAddEntryForm() { 
         echo "<h1>Aggiungi email alla mailing list:</h1>"; 
         echo "<form name=addEntry action=adminemail.php method=get>"; 
         echo "<input type=text name=email>"; 
         echo "<input type=hidden name=mode value=add>"; 
         echo "<input type=submit name=submit value=add>"; 
         echo "</form>"; 
} 

// Adds emails to list; 
function addEntry($email) { 
         $fp = fopen($GLOBALS["filelist"], "a"); 
         $emailsize = strlen($email . "\n"); 
         $fw = fwrite($fp, $email . "\n", $emailsize); 
         if ($fw) { 
            echo "<h2><div align=center>Email aggiunta con successo!</div></h2>"; 
            echo "<meta http-equiv='Refresh' content='1; URL=adminemail.php'>"; 
            exit; 
         } 
         else 
            echo "Errore!"; 
} 

// Displays emails from list; 
// by default it display last 10 emails; 
function displayEntries() { 
         echo "Mostra le ultime emal della mailing list: <a href=adminemail.php?limit=10>10 emails</a> || 
         <a href=adminemail.php?limit=20>20 emails</a> || 
         <a href=adminemail.php?limit=50>50 emails</a> || 
         <a href=adminemail.php?showall=>Mostra tutto</a><p> "; 
         $filecontents = file($GLOBALS["filelist"]); 
         if (isset($GLOBALS["limit"])) 
            $limit = $GLOBALS["limit"]; 
         if ((!isset($GLOBALS["limit"])) and (!isset($GLOBALS["showall"]))) 
            $limit=10; 
         if (isset($GLOBALS["showall"])) { 
            for ($i=sizeof($filecontents)-1;$i>=0;$i--) { 
                echo $filecontents[$i] . " <a href=adminemail.php?mode=edit&id=" . 
                $filecontents[$i] . ">Modifica</a> || <a href=adminemail.php?mode=delete&id=" . 
                $filecontents[$i] . ">Cancella</a><br>"; 
            } 
         } 
        elseif (isset($limit)) { 
                $count = 1; 
                for ($i=sizeof($filecontents)-1;$count<=$limit;$i--) { 
                echo $filecontents[$i] . " <a href=adminemail.php?mode=edit&id=" . 
                $filecontents[$i] . ">Modifica</a> || <a href=adminemail.php?mode=delete&id=" . 
                $filecontents[$i] . ">Cancella</a><br>"; 
                $count++; 
            } 
        } 


} 

// Displays the form to edit an email; 
function displayEditForm($id) { 
         echo "<h1>Modifica Email:</h1>"; 
         echo "<form name=editForm action=adminemail.php method=get>"; 
         echo "<input type=text name=email value=" . $id . ">"; 
         echo "<input type=hidden name=oldvalue value=" . $id . ">"; 
         echo "<input type=hidden name=mode value=doEdit>"; 
         echo "<input type=submit name=submit value=update>"; 
         echo "</form>"; 
         exit; 
} 

// Edits an email and writes the updated file; 
function editEntry($email, $oldvalue) { 
         $filecontents = file($GLOBALS["filelist"]); 
         for ($i=0;$i<sizeof($filecontents);$i++) { 
             if (chop($filecontents[$i]) == $oldvalue) { 
                $filecontents[$i] = $email . "\n"; 
                $fp = fopen($GLOBALS["filelist"], "w+"); 
                for ($a=0;$a<sizeof($filecontents);$a++) { 
                    $emailsize = strlen($filecontents[$a] . "\n"); 
                    $fw = fwrite($fp, $filecontents[$a], $emailsize); 
                } 
                echo "<h2><div align=center>Modifica avvenuta con successo!</div></h2>"; 
                echo "<meta http-equiv='Refresh' content='1; URL=adminemail.php'>"; 
                exit; 
             } 
         } 
} 

// Deletes an email and writes an updated file; 
function deleteEntry($id) { 
         $filecontents = file($GLOBALS["filelist"]); 
         for ($i=0;$i<sizeof($filecontents);$i++) { 
             if (chop($filecontents[$i]) == $id) { 
                $filecontents[$i] = ""; 
                $fp = fopen($GLOBALS["filelist"], "w+"); 
                for ($a=0;$a<sizeof($filecontents);$a++) { 
                    $emailsize = strlen($filecontents[$a]); 
                    $fw = fwrite($fp, $filecontents[$a], $emailsize); 
                } 
                echo "<h2><div align=center>Cancellazione avvenuta con successo!</div></h2>"; 
                echo "<meta http-equiv='Refresh' content='1; URL=adminemail.php'>"; 
                exit; 
                 
             } 
         } 
} 

?> 
<h2>Inserisci qui il testo che vuoi mandare a tutte le email:</h2> 
<form name=sendEmail action=adminemail.php method=post> 
Oggetto:<br><input type=text name=subject><br> 
Messaggio:<br><textarea name=message rows=10 cols=50></textarea><br> 
<input type=submit name=mode value=send> 
</form> 
<a href="./index.html"><h2>TORNA AL SITO</h2></a> 
</center>

quando provo a cliccare su i vari file come modifica etc non mi entra nella pagina ma mi aggiunge a fine url semplicemente una roba di questo tipo: "blabla.php?mode=edit&[email protected]".

Invece questo in un altro dominio (altervista) funziona perfettamente. Quindi ho pensato che fosse un problema di permessi, ma ho notato che la scrittura su file è abilitata in quanto una roba come questa:

PHP:
<?php 
$stringa=$_POST['email']."\n"; 
$scrivi_file=fopen("testo.txt","a+"); 
fputs($scrivi_file,$stringa); 
fclose($scrivi_file); 
?>

Scrive tranquillamente su file.

Non riesco a spiegarmi cosa può essere. Aiutatemi pls :)
 
Nel codice ci sono istruzioni del tipo: $id=$_POST['id']; oppure $id=$_GET['id'];?
Potrebbe essere questo. I due form che hanno method=get in realtà potrebbero necessitare del method=post (questo spiega perché ti si cambia la url). Con configurazioni diverse di php questo potrebbe non fare differenza per altervista (in entrambi i casi inizializzerebbe in automatico la variabile $id con il contenuto di $_POST/GET['id'], sull'altro sito invece occorrerebbe aggiungere l'istruzione di assegnazione).
Non dovrebbe essere un problema di versione di php.
 
controlla se nel form viene effettivamente incluso il valore relativo al campo id
 
Il campo id c'era, cmq ho risolto riscrivendolo da zero, anzi mi è venuto anche meglio :)
Grazie della disponibilità!
 

Discussioni simili