Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript]mail Send
Forum PHP.pl > Forum > Przedszkole
atom90
Przygotowuje popup z ktorego bedzie mozna odrazu na maila wysylac numer telefonu:

1. jak zrobic by okienko sie pojawialo dopiero jak lekko zjedzie sie w dol strony iles tam % poki co strona ma 100% i nie ma suwaka, ale na przyszlosc
2. Jak dobrze zabezpieczyc w php czy js tez wysyl wiadmosci brak mozliwosci spamowania poczty przez odswiezanie strony i wysylanie pustej wiadomosci.
3. po wyslaniu wiadomosci wylaczyc wyskakiwanie okna na jakis czas.

link:
http://test.zdi24.pl/neanet/popup/form1.php

Kod aktualny:

formularz +php

Kod
<?php

        if (isset($_POST['submit']))

            @$phone = $_POST['phone'];
        // the message
        $msg = "First line of text\nSecond line of text";

        // use wordwrap() if lines are longer than 70 characters
        $msg = wordwrap($msg, 70);

        // send email
        mail("test@test.com", $phone, $msg);
        ?>

        <div id="popup">
            <img src="close.png" class="close" >
            <span class="info">Jeśli potrzebujesz pomocy przy wyborze odpowiedniego pakietu lub usługi,
                zostaw nam swój numer, a my oddzwonimy. </span>
            <br>
            <br>

            <span class"phone">Numer telefonu:</span>
            <form class='forma1' action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="form1" >
                <input type="hidden" name="js"/>
                <input name="phone" type="text" placeholder="telefon" />
                <input name="submit" class="send" type="submit" value="Wyślij" />
            </form>
            </span>

        </div>


skrypt js

Kod
  console.log("tets");
  
  $(document).ready(function(){
  
  
  
  var popup = $("div#popup");
  popup.slideDown( "slow", function() {
// Animation complete.
});

  $(document).mouseup(function (e)
    {
        
        if (!popup.is(e.target)
            && popup.has(e.target).length === 0)
        {
            popup.hide();
        }
    });

    $('.close').click(function(){
      
        popup.hide();
    });
       $('.send').click(function(){
      
        popup.hide();
    });
    
});


Z gory dziekuje za kazde sugestie i pomoc.
strife
1. Javascript + scroll event + window / document position
2. Generuj jakiś token, który będziesz sprawdzał, szukaj pod CSRF.
Możesz też za pomocą sesji blokować wysyłanie N wiadomości w jakimś odstępnie czasu jednej od drugiej.
Reszta po stronie PHP, sprawdzanie czy wiadomośc ma więcej niż ileś znaków (strlen)
3. Ciasteczka
atom90
Juz mniej wiecej mam zrobione, ale jeszczer jedna rzecz mnie martwi
ogolnie wiadomosc sie wysle wtedy gdy trzeba sprawdzam to js
gdy poprawnie wysylana jest wiadomosc i git, ale mozna odswiezyc strone i tak w kolko i beda duplikowac sie te same wiadomosci co wyslalem na mailu... w sensie bedzie wysylana co chwile ta sama wiadomosc

http://test.zdi24.pl/neanet/popup/form1.php

kod:

Kod
<div id="done"></div>
           <?php


if(isset($_POST['submit']))
{

if($_POST['js']!='true'){ // jeśli nie (ukryte pole będzie różne od true)
         echo'<div id="php_error">Please turn on javascript in your browser and refresh website</div>';
         echo "<meta http-equiv='refresh' content='4;url= ". strip_tags($_SERVER['PHP_SELF']) ."'>";
        

}
else{
    
$to      = 'test@test.com';
@$phone = $_POST['phone'];    



mail($to, $phone, $phone, $phone);


echo "<meta http-equiv='refresh' content='2;url= ". strip_tags($_SERVER['PHP_SELF']) ."'>";
//echo $zm;
print "<script type='text/javascript'><!--\n";


//print "document.getElementById('done').style.display = 'block'";
print "document.getElementById('done').innerHTML='Message has been sent';\n";

//print "setTimeout(function(){document.getElementById('done').style.display = 'none'}, 4000)";


// Zakończenie skryptu
print "//--></script>\n";
    }


}
?>
<div id="popup">
    <img src=close.png class="close">
    <span class="autogrow-textarea">Jeśli potrzebujesz pomocy przy wyborze odpowiedniego pakietu lub usługi,
zostaw nam swój numer, a my oddzwonimy.

</span>


<div class="forma">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="contactform" onsubmit="return validateForm(this);">

<input type="hidden" name="js"/>
<span class="inline">Numer telefonu:</span>
<input id="clear0" class="clearable phone" type="text" placeholder="Twój telefon" name="phone" />
<input class="button" type="submit" name="submit" value="Wyślij"/>
<input id="cookie" value="cookie"/>
<div class="error" id="phone"> </div>

</form>
</div>
        </div>



js

Kod
function ValidatePhone(phon)
{
var reg = /^[0-9]{6,10}$/;
if(reg.test(phon) == false) {
return false;

}
else
{
return true;


}
}



    function ustawCookie(nazwa, wartosc, sec) {
    if (sec) {
        var data = new Date();
        data.setTime(data.getTime()+(sec*1000));          
        var expires = "; expires="+data.toGMTString();
    } else {
        var expires = "";
    }
    document.cookie = nazwa+"=" + wartosc + expires + "; path=/";
}
    
    
    
    function pokazCookie(nazwa) {
    if (document.cookie!="") { //jeżeli document.cookie w ogóle istnieje
        var cookies=document.cookie.split("; ");  //tworzymy z niego tablicę ciastek
        for (i=0; i<cookies.length; i++) { //i robimy po niej pętlę
            var nazwaCookie=cookies[i].split("=")[0]; //nazwa ciastka
            var wartoscCookie=cookies[i].split("=")[1]; //wartość ciastka
       // var czasCookie=cookies[i].split("=")[]; //czas ciastka
            if (nazwaCookie===nazwa) {
                return unescape(wartoscCookie) //jeżeli znaleźliśmy ciastko o danej nazwie, wtedy zwracamy jego wartość
            }
        }
    }
}


function validateForm(AForm)
{
    AForm.js.value='true';
    var tekst='';
    if (!ValidatePhone(AForm.phone.value)){
        tekst=tekst+"Nieprawid?owy format\n";
        
        $('#phone').html("*niepoprawny numer");
        $('#phone').addClass="red_error";
        
    }
     else
     {
        
        // $('#phone').innerHTML="*niepoprawny numer";
    //    $('#phone').addClass="red_error";
        
    
     }
    
    
    if (tekst!="") {
      
      
        
        return false;
    } else {
         ustawCookie("test2", "wartosc2", 10);
        test_masage=1;
        return true;
      
        
    }

}
$(document).ready(function(){
     var popup = $("div#popup");
    console.log(pokazCookie('test2'));
    if(pokazCookie('test2')=="wartosc2"){
        popup.hide();
    }
    else
popup.slideDown();

$(document).mouseup(function (e)
    {
      
        if (!popup.is(e.target) // if the target of the click isn't the container...
            && popup.has(e.target).length === 0) // ... nor a descendant of the container
        {
            popup.hide();
        }
    });

    $('.close').click(function(){
      
        popup.hide();
    });


$('#cookie').click(function(){
       alert(pokazCookie('test2'));
    });
});



Mam nadzieje ze poszedlem juz w dobrym kierunku. Choc kod nie jest wysokich lotow, ale jest w miare zrozumialy. Przynajmniej dla mnie ^^. Najwiekszym problemem jest to odswiezanie ze posle kolejne maile. Co z tym zrobic?
wiem ze tematow jest takich sporo, ale nie umiem znalesc dobrego rozwiazania:/


uzylem tez
header('Location: ');
wtedy juz nie ma tego problemu tylko jak by poinformowac jakos uzytkownika ze wyslal ten numer
strife
Dobrze kombinujesz musisz przekierować użytkownika po poprawnym wysłaniu maila.
Robisz to wysyłając odpowiednie headery.

Poinformować go możesz np. przekazując parameter w urlu, że formularz został wysłany, a potem go sprawdzasz czy jest.
np. twoj_formularz.php?is_sent=1

Wtedy sprawdzasz czy zmienna `is_sent` jest ustawiona i rowna 1. (isset, if).
atom90
Hmm no tez racja, a co myslisz np by zrobic podwojne ciastko w sensie jedno na aktywnosc wyskakiwanego okna np dopiero po 10 min od wyslania wiadomosci znow bedzie sie pojawiac a drugie ciastko krotkie wystaczy z 5 sec ze po wyslaniu sprawdzi ze jest ono i tam da jakis fade in na stronie ze wyslano a gdy odswiezy juz ten czas zdazy uplynac i ciasteczka nie bedzie wiec i warunek nie bedzie spelniony powinno chyba zadzialac. Jutro przetestuje

Hmm no tez racja, a co myslisz np by zrobic podwojne ciastko w sensie jedno na aktywnosc wyskakiwanego okna np dopiero po 10 min od wyslania wiadomosci znow bedzie sie pojawiac a drugie ciastko krotkie wystaczy z 5 sec ze po wyslaniu sprawdzi ze jest ono i tam da jakis fade in na stronie ze wyslano a gdy odswiezy juz ten czas zdazy uplynac i ciasteczka nie bedzie wiec i warunek nie bedzie spelniony powinno chyba zadzialac. Jutro przetestuje
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.