[PHP][JavaScript]mail Send |
[PHP][JavaScript]mail Send |
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 |
|
|
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 -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
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 |
|
|
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). -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
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 |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 05:09 |