Visualizzazione risultati 1 fino 6 di 6

Discussione: errore script php?

  1. #1
    Guest

    Predefinito errore script php?

    All`indirizzo http://fdiodato.altervista.org/principale.htm ho un form per la newsletter. Il primo indirizzo che iscrivo non posso piu` cancellarlo, mentre dal secondo in poi tutto funziona regolarmente. Potete controllare dal pannello di amministrazione: http://fdiodato.altervista.org/ml/mailadmin.php. User: admin; password: password.
    Vi copio lo script del f
    ile mailist.php che e` quello per il subscribe e l`unsubscribe:


    Codice PHP:
    <?
    error_reporting
    (0);
    include(
    "config.php");

    function
    checkmail ($email)
    {
    global
    $listfile;
    $fd = fopen ($listfile, "r");
    $contents = fread ($fd, filesize ($listfile));
    fclose ($fd);

    if (@
    stristr($contents,$email))
    $valid = "invalid";
    if (
    eregi("^[_\.0-9a-z-]+@([0-9a-z][-0-9a-z\.]+)\.([a-z]{2,3}$)", $email) && !isset($valid))
    $valid = "valid";
    else
    $valid = "invalid";

    return
    $valid;
    }

    if (
    $action == "subscribe" && isset($email))
    {
    $valid = checkmail($email);
    if (
    $valid == "valid")
    {
    $fp = fopen($listfile, 'a+');
    flock($fp,2);
    fwrite($fp,"".strtolower($email).",");
    fclose($fp);
    header ("Location: ".$welcome."");
    exit;

    }
    else {
    header ("Location: ".$error."");
    exit;
    }
    }
    elseif (
    $action == "unsubscribe" && isset($email))
    {
    $fd = fopen ($listfile, "r");
    $contents = fread ($fd, filesize ($listfile));
    fclose ($fd);
    $allpeople = "";
    $entries = explode(",",$contents);
    for(
    $i=0;$i<count($entries);$i++)
    {
    if (
    strtolower($email) == strtolower($entries[$i]))
    $found = "yes";
    elseif (
    $entries[$i] != "")
    $allpeople .= "".$entries[$i].",";
    }
    if (
    $found == "yes")
    {
    $fp = fopen($listfile, 'w');
    fwrite($fp,$allpeople);
    fclose($fp);
    }
    header ("Location: ".$goodbye."");
    exit;

    }
    else
    header ("Location: ".$error."");
    exit;
    ?>
    Grazie tante.
    Francesco

  2. #2
    Guest

    Predefinito

    I changed your script a little bit to be able to test it, without changing the logic of it, and it works just fine. Are you sure the script you posted is the same you got running on your site?

    This is the (modified) script I tested:

    Codice PHP:
    <?php

    $listfile
    = "maillist.txt";

    function
    checkmail ($email)
    {
    global
    $listfile;
    $fd = fopen ($listfile, "r");
    $contents = fread ($fd, filesize ($listfile));
    fclose ($fd);

    if (@
    stristr($contents,$email))
    $valid = "invalid";
    if (
    eregi("^[_\.0-9a-z-]+@([0-9a-z][-0-9a-z\.]+)\.([a-z]{2,3}$)", $email) && !isset($valid))
    $valid = "valid";
    else
    $valid = "invalid";

    return
    $valid;
    }

    if (
    $action == "subscribe" && isset($email))
    {
    $valid = checkmail($email);
    if (
    $valid == "valid")
    {
    $fp = fopen($listfile, 'a+');
    flock($fp,2);
    fwrite($fp,"".strtolower($email).",");
    fclose($fp);
    }
    }
    elseif (
    $action == "unsubscribe" && isset($email))
    {
    $fd = fopen ($listfile, "r");
    $contents = fread ($fd, filesize ($listfile));
    fclose ($fd);
    $allpeople = "";
    $entries = explode(",",$contents);
    for(
    $i=0;$i<count($entries);$i++)
    {
    if (
    strtolower($email) == strtolower($entries[$i]))
    $found = "yes";
    elseif (
    $entries[$i] != "")
    $allpeople .= "".$entries[$i].",";
    }
    if (
    $found == "yes")
    {
    $fp = fopen($listfile, 'w');
    fwrite($fp,$allpeople);
    fclose($fp);
    }
    }
    ?>

    <html>
    <head>
    <title>Test</title>
    </head>

    <body>

    Indirizzi iscritti:<br>
    <br>
    <?php
    $fd
    = fopen ($listfile, "r");
    $contents = fread ($fd, filesize ($listfile));
    fclose ($fd);
    $entries = explode(",",$contents);
    for(
    $i=0;$i<count($entries);$i++)
    {
    echo
    $entries[$i]."<br>\n";
    }
    ?>
    <br>

    <form method=post action="index.php">
    <div class="posizione"><span lang="it">Iscriviti alla newsletter</span><br>
    <span lang="it">Inserisci il tuo indirizzo
    e-mail:</span><br>

    <span lang="it"><input type="name" name="email"><br>

    <input type="radio" name="action" value="subscribe" checked>Iscrivi
    <input type="radio" name="action" value="unsubscribe">Rimuovi<br>
    </span>
    <span lang="it">
    <input type=submit value=Invia></span><br>

    </form>

    </body>
    </html>

  3. #3
    Guest

    Predefinito

    Thank you. The script I posted is the same I got running on my site: no doubt about it. What could the problem be?
    Francesco

  4. #4
    Guest

    Predefinito

    Oops... troppi forum aperti... scusa per aver scritto in inglese.
    E non saprei perché non funziona, visto che il mio script funziona. Forse dovresti mettere qualche 'echo' di controllo per vedere esattamente che cosa fa' il tuo script.

  5. #5
    Guest

    Predefinito

    Purtroppo non sono all`altezza della situazione: non ne capisco niente!
    Francesco

  6. #6
    Guest

    Predefinito

    Credo di essermi ricordato come si e` verificato questo problema. In realta` anche io prima non avevo problemi, ma poi ho provato ad aggiungere manualmente gli indrizzi nel file di testo e a caricarli nell`ftp. Dopo che ho provato a fare questa cosa ho cominciato ad avere problemi...
    Francesco

Regole di scrittura

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