Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem ze skryptem subskrypcji.
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty forum
artss
Mam skrypcik do subskrypcji, który zapisuje maile w pliku txt.
Skrypt jest chyba stary, bo lokalnie wszytko mi śmiga, ale jak wgram na serwer już nie sad.gif

Co jest z nim nie tak?:

Kod
<?
if($email==""){
echo"Nie podano żadnego adresu!";
}
elseif (preg_match("/^([a-zA-Z][a-zA-Z0-9~!-()]+)@(([a-zA-Z0-9.-\_]+)?.([a-z]{2,5}))$/", $email, $regs)) {
$fp = fopen("subs.n", "a");
flock($fp, 2);
$wpis="$email\n";
fwrite($fp, $wpis);
flock($fp, 3);
fclose($fp);
echo "Adres e-mail: $email został dopisany do listy subskrypcji. Dziękujemy!";
}
else {
echo "Wpisany adres e-mail jest nieprawidłowy! P O P R A W ! ";
}
?>


Dzięki za pomoc!
Foxx
Rozumiem, że dane pochodzą z formularza.
Zmień wszystkie odwołania do danych z formularza:
  1. <?php
  2. // z:
  3. $email
  4. // na:
  5. $_POST['email']
  6. // a jeżeli wysyłasz formularz metodą get to na:
  7. $_GET['email']
  8. ?>


I tak analogicznie wszystko co pochodzi z formularza.
Poza tym sprawdź czy nie ma problemu z tworzeniem pliku z danymi na serwerze i czy są ustawione odpowiednie prawa bo może skrypt nie może zapisać danych do pliku.
Jeżeli wyświetlają się jakieś komunikaty to napisz jakie.
Foxx
Wklej więc formularz.
artss
zrobiłem jak napisałeś smile.gif

Kod
<?
if($_POST['email']==""){
echo"Nie podano żadnego adresu!";
}
elseif (preg_match("/^([a-zA-Z][a-zA-Z0-9~!-()]+)@(([a-zA-Z0-9.-\_]+)?.([a-z]{2,5}))$/", $_POST['email'], $regs)) {
$fp = fopen("subs.n", "a");
flock($fp, 2);
$wpis="\n";
fwrite($fp, $wpis);
flock($fp, 3);
fclose($fp);
echo "Adres e-mail: $email został dopisany do listy subskrypcji. Dziękujemy!";
}
else {
echo "Wpisany adres e-mail jest nieprawidłowy! P O P R A W ! ";
}
?>


Teraz komunikaty wszystkie są wyświetlane, niestety adresy nie zapisują się do pliku subs.n

formularz:

Kod
form action="sub.php" method="post">
        
<input type="text" name="email" size="10" maxlength="35" value="e-mail" class="newsler">
<input type="image" src="../img/dodaj.gif" name="send" class="dodaj">
Foxx
Ja bym obstawiał prawa dostępu. Przed fopen wpisz:
  1. <?php
  2. chmod("subs.n", 0777);
  3. ?>

Sprawdź czy wszystkie funkcje związane z zapisem do pliku zwracają to co powinny (true, etc).
artss
nic to nie daje sad.gif , w komunikacie, w którym jest napisane - Adres email ... została dodany(...) Brakuje adresu, który został dodany i adres dalej nie zostaje dopisany do pliku sad.gif

Wrzuciłem na serwer licznik:

Kod
<?PHP
  $licznik_file = "1.txt";
  
  $fp = fopen($licznik_file, "r+");
  $count = fgets($fp, 10);
  $count += 1;
  
  //zastąpienie starej zawartości
  fseek($fp, 0);
  fwrite($fp, $count, 10);
  fclose($fp);
  
  include("1.txt");
  ?>


i ten zlicza nawet bez ustawienia praw dla 1.txt.

kurcze ... sad.gif co to może być.
Foxx
A to co:
  1. <?php
  2. $wpis="\n";
  3. fwrite($fp, $wpis);
  4. ?>


questionmark.gif

A co do komunikatu to tam nadal jest $email zamiast $_POST['email']
artss
Cytat(Foxx @ 11.02.2009, 23:01:14 ) *
A to co:
Kod
   $wpis=\"\n\";
       fwrite($fp, $wpis);
       ?>

nie wiem co to jest sciana.gif

Jak dopisze: $_POST['email']
Kod
             echo "Adres e-mail: $_POST['email'] został dopisany do listy subskrypcji. Dziękujemy!"


wtedy mam taki błąd:

na serwerze:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /srv/home/l19312lf/public_html/sub.php on line 15

lokalnie:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\usr\krasnal\sub.php on line 15


Zmieniłem wpis na coś takiego:
Kod
<?
  $count="$_POST";
  fwrite($fp, $count);
  ?>


i teraz do pliku na serwerze zapisuje się "Array" , czyli to znak, że z prawami jest ok, tylko jak zrobić by żeby zamiast Array był zapisywany konkretny email ?

Foxx
  1. <?php
  2. $count = $_POST['email'];
  3. fwrite($fp, $count);
  4. ?>
artss
wiesz co straciłem już cierpliwość (brak postęppów)...
ale znalazłem w sieci skrypcik który śmiga na serwerze, tak wiec temat można zamknąć winksmiley.jpg

Wielkie dzięki Ci za pomoc!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.