Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][JavaScript]mail Send
atom90
post 20.01.2015, 14:55:50
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 11.06.2014

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


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.

Ten post edytował atom90 20.01.2015, 14:57:33
Go to the top of the page
+Quote Post
strife
post 20.01.2015, 15:46:57
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


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


--------------------
Go to the top of the page
+Quote Post
atom90
post 21.01.2015, 14:59:36
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 11.06.2014

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


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

Ten post edytował atom90 21.01.2015, 15:45:17
Go to the top of the page
+Quote Post
strife
post 21.01.2015, 16:18:53
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


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


--------------------
Go to the top of the page
+Quote Post
atom90
post 21.01.2015, 17:33:03
Post #5





Grupa: Zarejestrowani
Postów: 172
Pomógł: 0
Dołączył: 11.06.2014

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


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
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 05:09