Witam, nie jestem biegły w php. znam jedynie podstawy, stąd szukam pomocy na tym forum.
Mam formularz wysylajacy zgloszenia, dziala poprawnie jednak potrzebna jest mała modyfikacja.
Otóż obecnie formularz wysyła maile i zapisuje w pliku kurs1.txt licznik + 1 aż do momentu wyslania 20 maili.
Po wyslaniu 20 maili formularz informuje o braku wolnych miejsc.
Modyfikacja polega na tym, aby formularz sprawdzał plik kurs1.txt i wyswietlal jego stan na stronie w postaci:
POZOSTAŁO 40 MIEJSC
Stan pliku kurs1.txt powinien wynosic 40 i z kazdym wyslanym mailem zmieniac sie o - 1
Po wysłaniu maila, powinien wyswietlic sie komunikat:
POZOSTAŁO 39 MIEJSC i tak do zera
po wyzerowaniu licznika, powinien pojawic sie komunikat o braku wolnych miejsc.
Prosta sprawa dla kogoś z biegłą znajomością PHP przypuszczam że 5 minut roboty, dla mnie to z całą pewnością kilka dni główkowania. Z góry serdecznie dziękuję za pomoc.
<?
//na poczatku sprawdzimy ile ma licznik - zeby nie sprawdzac juz dalej po 2 razy tego samego
// czy w ogole istnieje plik.txt, jesli nie - stwarzamy go pustego
// tworzymy pusty plik
touch ('kurs1.txt'); //plik jest absolutnie pusty }
$licznik = 0;
$plik = file('kurs1.txt'); foreach ($plik as $numer_linii => $zawartosc_linii) {
$licznik = $zawartosc_linii;
}
// Sprawdzenie czy formularz wyslano
if(isset($_REQUEST['wyslij'])) { // nacisnieto wysylanie formularza, wiec sprawdzamy dalej czy licznik jest mniej niz 20
if($licznik <=19) {
//licznik ma mniej niz 20 - zapisujemy dane z formularza + zwiekszamy licznik o jeden
// TUTAJ WYKORZYSTUJEMY WYSLANE W FORMULARZU DANE
// kasujemy plik
// tworzymy pusty plik
//otwiermay plik
$fp2 = fopen ('kurs1.txt', 'r+'); if (flock($fp2, LOCK_EX
)) { // otwieramy sobie plik do zapisu $licznik++; // licznik zwiekszamy o jeden.
fwrite($fp2, $licznik); //wpisujemy zmienna $licznik do pliku flock($fp2, LOCK_UN
); // zwalniamy zablokowanie pliku w ktory zapisywalismy }
else {
echo 'BLAD, nie udalo sie otworzyc pliku'; }
$tresc = "Imie_nazwisko: $_POST[imie]\nData_urodzenia: $_POST[data]\nAdres_zamieszkania: $_POST[adres]\nNr_telefonu: $_POST[nr]\nEmail: $_POST[mail]\n \nImie_nazwisko: $_POST[imie_1]\nData_urodzenia: $_POST[data_1]\nAdres_zamieszkania: $_POST[adres_1]\nNr_telefonu: $_POST[nr_1]\nEmail: $_POST[mail_1]";
mail('info@bohema.org', 'temat' , $tresc); echo '<b>Zgłoszenie zostało wysłane</b><br> <a href="index.php">Powrót do strony głównej</a>
';
}
else {
// licznik ma wartosc 20 - wywalamy blad, to nie powinno sie pojawic, bo przecie formyularz nie byl aktywny jesli licznik byl wiekszy niz 20, ale moze to byc zrobione atakiem "hacerskim", czyli od razy wyslane dane jakby z formularza. dlatego mimo wszystko sprawdzalismy czy licznik jest mniejszy od 20.
echo '<font color="red">formularz nie jest aktywny, zapisano wiecej niz 20 razy, a ten napis w ogole nie powinien sie wiecej pokazywac</font>'; }
}
else {
// mniej niz 20 - pokazujemy formularz do wyslania
if($licznik <=19 ){
echo '<br><b>Formularz zgłoszeniowy 16 luty 2008<br><Br> <form method="post" action="kurs_1.php">
<br>Imię i nazwisko:<input type="text" name="imie" style="width: 250px">
<br>Data urodzenia DD-MM-RRRR:<input type="text" name="data" style="width: 250px" maxlength="10">
<br>Adres zamieszkania:<textarea name="adres" style="width: 250px"></textarea>
<br>Nr telefonu:<input type="text" name="nr" style="width: 250px">
<br>Adres e-mail:<input type="text" name="mail" style="width: 250px"><br>
<p>*Jeżeli zapisujesz się sam(a) wypełnij tylko pierwszą część formularza</p>
<br>Imię i nazwisko:<input type="text" name="imie_1" style="width: 250px"></td>
<br>Data urodzenia DD-MM-RRRR<input type="text" name="data_1" style="width: 250px" maxlength="10">
<br>Adres zamieszkania<textarea name="adres_1" style="width: 250px"></textarea>
<br>Nr telefonu<input type="text" name="nr_1" style="width: 250px">
<br>Adres e-mail<input type="text" name="mail_1" style="width: 250px">
<br><input type="submit" name="wyslij" value="Wyślij">';
}
// wiecej niz 20 - strona pokaze ze juz nie aktywna jest
else {
echo '<p><font color="red">Brak wolnych miejsc!</p> <p>Prosimy cierpliwie czekać na kolejne terminy</font>';
}
}
?>
Ten post edytował bohema 5.01.2009, 14:35:02