Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem ze skryptem subskrypcji.
artss
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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!

Ten post edytował artss 11.02.2009, 21:37:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Foxx
post
Post #2





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
artss
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


Komunikatem za każdym razem jest: Nie podano żadnego adresu! nie zależnie czy to jest prawdą czy nie. Zawsze jet ten komunikat. Co do praw, są dobrze nadane.
Go to the top of the page
+Quote Post
Foxx
post
Post #4





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Wklej więc formularz.
Go to the top of the page
+Quote Post
artss
post
Post #5





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


zrobiłem jak napisałeś (IMG:http://forum.php.pl/style_emoticons/default/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">
Go to the top of the page
+Quote Post
Foxx
post
Post #6





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


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).

Ten post edytował Foxx 11.02.2009, 22:27:31
Go to the top of the page
+Quote Post
artss
post
Post #7





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


nic to nie daje (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 ... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) co to może być.

Ten post edytował artss 11.02.2009, 22:59:01
Go to the top of the page
+Quote Post
Foxx
post
Post #8





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


A to co:
  1. <?php
  2. $wpis="\n";
  3. fwrite($fp, $wpis);
  4. ?>


(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

A co do komunikatu to tam nadal jest $email zamiast $_POST['email']
Go to the top of the page
+Quote Post
artss
post
Post #9





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


Cytat(Foxx @ 11.02.2009, 23:01:14 ) *
A to co:
Kod
   $wpis=\"\n\";
       fwrite($fp, $wpis);
       ?>

nie wiem co to jest (IMG:http://forum.php.pl/style_emoticons/default/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 ?



Ten post edytował artss 12.02.2009, 09:14:06
Go to the top of the page
+Quote Post
Foxx
post
Post #10





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $count = $_POST['email'];
  3. fwrite($fp, $count);
  4. ?>


Ten post edytował Foxx 12.02.2009, 12:55:58
Go to the top of the page
+Quote Post
artss
post
Post #11





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 11.02.2009

Ostrzeżenie: (0%)
-----


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ąć (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Wielkie dzięki Ci za pomoc!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:14