Pomoc oko php skripte za email
Prikazujem rezultate 1 do 16 od 16

Tema: Pomoc oko php skripte za email

  1. #1
    Obećava Nikolla983 (avatar)
    Učlanjen
    05.04.2006.
    Pol
    muški
    Lokacija
    NS
    Poruke
    91
    Reputaciona moć
    43

    Podrazumevano Pomoc oko php skripte za email

    Cao ljudi,

    kao sto i sam naslov teme kaze potrebna mi je pomoc oko jedne php mail skripte. Posto se ne razumem mnogo (citaj skoro nista) u php, molio bih nekog od vas da pokusa da malo prepravi kod u cilju dobijanja zeljenog rezultata. Posto sam video da dosta ljudi trazi neku mail skriptu mislim da ce ovo dobro doci mnogima koji zele da je iskoriste. Ako pak niste raspolozeni da date svoje znanje dzabe, spreman sam da platim ovu prepravku.

    Problem je sledeci: kada se klikne na dugme POSALJI u mail formi, komanda ECHO (koliko sam shvatio) daje blank stranicu na kojoj pise PORUKA NIJE/JE POSLATA, u zavisnosti od izvrsene akcije. Da li neko moze da prepravi to tako da se posle pritiskanja dugmeta POSALJI predje na stranicu npr. poslat.htm (ako je mail poslat) ili nijeposlat.htm ako mail nije poslat. Ako neko moze ovo da uradi dzabe rado cu ostaviti i kod za mail formu tako da svi mogu ovo da iskoriste, ako ne, onda neka mi posalje poruku na pp da se dogovorimo. Unapred hvala.


    Kod:

    <?php
    $send = $_POST["send"];
    $name = $_POST["name"];
    $email = $_POST["email2"];
    $subject = $_POST["subject"];
    $message= $_POST["message"];

    if(!empty($name) && !empty($email) && !empty($subject) && !empty($message))
    {
    $content = "-------------------------------E-mail Message-------------------------------\n";
    $content .= "Vaše ime: $name\n";
    $content .= "Vaša E-mail adresa: $email\n";
    $content .= "Naslov poruke: $subject\n";
    $content .= "Tekst poruke: \n$message\n";

    mail($send, $subject, $content, "From: $email");

    echo "E-mail je poslan. Hvala vam na brizi. <br>";
    }

    else
    {
    echo "Niste poslali e-mail! Niste popunili sva polja. Molimo Vas popunite sva polja i ponovo pošaljite e-mail.";
    }
    ?>



  2. #2
    Zainteresovan član
    Učlanjen
    29.11.2006.
    Pol
    muški
    Poruke
    202
    Reputaciona moć
    43

    Podrazumevano Re: Pomoc oko php skripte za email

    [php]
    <?php
    $send = $_POST["send"];
    $name = $_POST["name"];
    $email = $_POST["email2"];
    $subject = $_POST["subject"];
    $message= $_POST["message"];

    if(!empty($name) && !empty($email) && !empty($subject) && !empty($message))
    {
    $content = "-------------------------------E-mail Message-------------------------------\n";
    $content .= "Vaše ime: $name\n";
    $content .= "Vaša E-mail adresa: $email\n";
    $content .= "Naslov poruke: $subject\n";
    $content .= "Tekst poruke: \n$message\n";

    mail($send, $subject, $content, "From: $email");

    header("Location: putanja_do_stranice/poslat.htm");
    }

    else
    {
    header("Location: putanja_do_stranice/nijeposlat.htm");}
    ?>
    [/php]

  3. #3
    Obećava Nikolla983 (avatar)
    Učlanjen
    05.04.2006.
    Pol
    muški
    Lokacija
    NS
    Poruke
    91
    Reputaciona moć
    43

    Podrazumevano Re: Pomoc oko php skripte za email

    Puno ti hvala taksistaZR!

    Evo i za druge koji zele da iskoriste ovu mail formu i kod za istu:

    <form name="contact" method="post" action="mail.php">
    <p align="center"><strong>Primalac:</strong><br>
    <select name="send">
    <option selected value="user@domen.fff">Obuka</option>
    </select>
    </p>
    <p align="center"><strong>Vaše ime:</strong><br>
    <input name="name" type="text" value="" size="30" maxlength="40" class="text">

    </p>
    <p align="center"><strong>Vaša E-mail adresa:</strong><br>
    <input name="email2" type="text" value="" size="30" maxlength="40" class="text">
    </p>
    <p align="center"><strong>Naslov poruke</strong>:<br>
    <input name="subject" type="text" value="" size="30" maxlength="40" class="text">
    </p>

    <p align="center"><strong>Tekst poruke:</strong><br>
    <textarea name="message" cols="50" rows="10" class="text"></textarea>
    </p>
    <p>
    <center>
    <input class="button" name="submit" type="submit" value="Pošalji">
    </center>
    </p>
    </form>

  4. #4
    Obećava Nikolla983 (avatar)
    Učlanjen
    05.04.2006.
    Pol
    muški
    Lokacija
    NS
    Poruke
    91
    Reputaciona moć
    43

    Podrazumevano Re: Pomoc oko php skripte za email

    Inace, za one malo manje upucene KOD koji je taksistaZR prepravio treba da sacuvate kao mail.php


    Srecno koriscenje!

  5. #5
    Primećen član Gill Bates (avatar)
    Učlanjen
    11.05.2003.
    Pol
    muški
    Lokacija
    Bgd
    Poruke
    603
    Reputaciona moć
    60

    Podrazumevano Re: Pomoc oko php skripte za email

    Ne valja! *ebes mail formu bez provere ispravnosti e-maila!
    Linux is like a wigwam. No gates, and Apache inside!

  6. #6
    Zainteresovan član qwertynis (avatar)
    Učlanjen
    13.07.2007.
    Pol
    muški
    Lokacija
    Niš, Serbia
    Poruke
    362
    Reputaciona moć
    42

    Podrazumevano Re: Pomoc oko php skripte za email

    <?php

    function send_mail($MailTo = "", $SenderName = "Sender", $SenderMail = "no@reply.error", $Subject = "", $Mailcontent = "no.file", $Attachment = "no.file", $Servername = "PHPMAILSERVER", $nohtml = "[ This message should be viewed in HTML. This is a degraded version! ]"){
    if(strtoupper(substr(PHP_OS,0,3)=='WIN')){
    $eol="\r\n";
    $sol="\n";
    }elseif(strtoupper(substr(PHP_OS,0,3)=='MAC')){
    $eol="\r";
    }else{
    $eol="\n";
    }
    if(!isset($sol)){
    $sol = $eol;
    }
    $Momentn = mktime().".".md5(rand(1000,9999));
    $f_name = $Attachment;
    $handle = fopen($f_name, 'rb');
    $f_contents = @fread($handle, filesize($f_name));
    $f_contents = @base64_encode($f_contents);
    if($handle){
    $sendfile = true;
    if(ini_get('mime_magic.debug')){
    $Bestype = @mime_content_type($Attachment);
    }else{
    $Bestype = 'application/octet-stream';
    }
    if(!$Bestype){
    $Bestype = 'application/octet-stream';
    }
    $file_realname = explode("/", $Attachment);
    $file_realname = $file_realname[count($file_realname)-1];
    $file_realname = explode("\\", $file_realname);
    $file_realname = $file_realname[count($file_realname)-1];
    }
    @fclose($handle);
    $Mailcontentstri = explode($sol, $Mailcontent);
    $Mailcontentstrip = strip_tags($Mailcontentstri[0]);

    if(@file_exists($Mailcontentstrip)){
    ob_start();
    if(require($Mailcontent)){
    $body = ob_get_contents();
    }
    ob_end_clean();
    }else{
    if(count($Mailcontentstri) < 2){
    $body = "Error loading file!";
    $error = true;
    }else{
    $body = $Mailcontent;
    }
    }

    $Textmsg = eregi_replace("<br(.{0,2})>", $eol, $body);
    $Textmsg = eregi_replace("</p>", $eol, $Textmsg);
    $Textmsg = strip_tags($Textmsg);
    $Textmsg = $nohtml.$eol.$eol.$Textmsg;
    $headers .= 'To: '.$MailTo.' <'.$MailTo.'>'.$eol;
    $headers .= 'From: '.$SenderName.' <'.$SenderMail.'>'.$eol;
    $headers .= "Message-ID: <".$Momentn."@".$Servername.">".$eol;
    $headers .= 'Date: '.date("r").$eol;
    $headers .= 'Sender-IP: '.$_SERVER["REMOTE_ADDR"].$eol;
    $headers .= 'X-Mailser: iPublications Adv.PHP Mailer 1.6'.$eol;
    $headers .= 'MIME-Version: 1.0'.$eol;
    $bndp = md5(time()).rand(1000,9999);
    $headers .= "Content-Type: multipart/mixed; $eol boundary=\"".$bndp."\"".$eol.$eol;
    $msg = "This is a multi-part message in MIME format.".$eol.$eol;
    $msg .= "--".$bndp.$eol;
    $bnd = md5(time()).rand(1000,9999);
    $msg .= "Content-Type: multipart/alternative; $eol boundary=\"".$bnd."\"".$eol.$eol;
    $msg .= "--".$bnd.$eol;
    $msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
    $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
    $msg .= $Textmsg.$eol;
    $msg .= "--".$bnd.$eol;
    $msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
    $msg .= "Content-Transfer-Encoding: 8-bit".$eol.$eol;
    $msg .= $body.$eol;
    $msg .= "--".$bnd."--".$eol.$eol;
    if(isset($sendfile)){
    $msg .= "--".$bndp.$eol;
    $msg .= "Content-Type: $Bestype; name=\"".$file_realname."\"".$eol;
    $msg .= "Content-Transfer-Encoding: base64".$eol;
    $msg .= "Content-Disposition: attachment;".$eol;
    $msg .= " filename=\"".$file_realname."\"".$eol.$eol;
    $f_contents = chunk_split($f_contents);
    $msg .= $f_contents.$eol;
    }
    $msg .= "--".$bndp."--";
    if(!isset($error)){
    if(@mail($MailTo, $Subject, $msg, $headers)){
    return true;
    }else{
    return false;
    }
    }else{
    return false;
    }
    }

    ?>
    MOZE I OVAKO ZAR NE

  7. #7
    Primećen član Gill Bates (avatar)
    Učlanjen
    11.05.2003.
    Pol
    muški
    Lokacija
    Bgd
    Poruke
    603
    Reputaciona moć
    60

    Podrazumevano Re: Pomoc oko php skripte za email

    Opet nam e-mail verifikaciju. Nedostaje jedan RegExp xe,xe
    Linux is like a wigwam. No gates, and Apache inside!

  8. #8
    Zainteresovan član
    Učlanjen
    29.11.2006.
    Pol
    muški
    Poruke
    202
    Reputaciona moć
    43

    Podrazumevano Re: Pomoc oko php skripte za email

    Citat Original postavio Gill Bates
    Ne valja! *ebes mail formu bez provere ispravnosti e-maila!
    Cemu taj sarkazam u postu?

    Ovo sto je @Nikolla983 postavio je bazican primer e-mail skripte.
    Naravno da nema proveru ispravnosti e-maila.
    [php]
    function email_ok($email)
    {
    if(!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]{2,6}$",$email))
    {
    return false;
    }
    return true;
    }
    if (email_ok($email) == false) {
    die() 'Email <b>'.$_POST['email'].'</b> je neispravno napisan.' ;
    }
    [/php]
    Ovo je jedan od mnogo nacina na koji to moze da se odradi.
    Pre toga valjalo bi odraditi proveru u js da se podaci ne salju na server bez potrebe, a php provera da stoji za slucaj ako korisnik pokusa da 'zaobidje' proveru tj. iskljuci js u browseru.
    U toj skripti nisu poslati headeri da mail ne zavrsi u spamu, takodje nije podrzano slanje attachment-a niti html maila i mnogo drugih stvari, ali ponavljam, ovo je bazican primer slanja e-maila preko PHP-a i dobro je da jedna takva skripta stoji na forumu.

  9. #9
    Primećen član Gill Bates (avatar)
    Učlanjen
    11.05.2003.
    Pol
    muški
    Lokacija
    Bgd
    Poruke
    603
    Reputaciona moć
    60

    Podrazumevano Re: Pomoc oko php skripte za email

    Daklem ovako. Vec odavno sam na ovom forumu preporucio Formmail i to je jedan od retkih slucajeva da ja koristim tudje skripte.

    A, koliko ja vidim, tvoj primer prolazi za recimo ime@sajt.xx ili ime@sajt.co mada ni .xx ni .co ne postoje kao TLD.

    Hint:forum sluzi za razmenu znanja, a ne za prepucavanje
    Linux is like a wigwam. No gates, and Apache inside!

  10. #10
    Zainteresovan član
    Učlanjen
    29.11.2006.
    Pol
    muški
    Poruke
    202
    Reputaciona moć
    43

    Podrazumevano Re: Pomoc oko php skripte za email

    U mom primeru prolazi : 2karaktera(ne svi karakteri) @ 2karaktera(ne svi karakteri) . 2slova

    Mogu da se koriste neke funkcije kao sto je checkdnsrr() ili getmxrr() da se proveri da li postoji server i user i onda bi se videlo da co ne postoji, ali ne volim to da koristim zato sto nije na svim serverima moguce proveriti postojanje usera pa bi dosao u situaciju da neki email koji je stvarno ispravan pokaze kao neispravan.
    Ovako svaki ispravan email ce proci validaciju, a 100% zastite u ispravnost nemas, moras da se zrtvujes na jednu stranu.

  11. #11
    Primećen član Gill Bates (avatar)
    Učlanjen
    11.05.2003.
    Pol
    muški
    Lokacija
    Bgd
    Poruke
    603
    Reputaciona moć
    60

    Podrazumevano Re: Pomoc oko php skripte za email

    U tom primeru deo @[a-z0-9.-]+.[a-z]{2,6}$ dopusta @sajt.yu, ali i @sajt.uy.

    Takodje mislim da bi ti proslo @sajt.nesto.nesto1.nesto2.nesto3.yu To je zbog @[a-z0-9.-]+ odnosno zbog "+" - jedan ili vise puta. Valjda treba {1,2} umesto + da bi postigli @poddomen.sajt.{tld} Dalje, za tld zbog .org.yu ili co.uk treba jos dopunjavati...
    Linux is like a wigwam. No gates, and Apache inside!

  12. #12
    Zainteresovan član
    Učlanjen
    29.11.2006.
    Pol
    muški
    Poruke
    202
    Reputaciona moć
    43

    Podrazumevano Re: Pomoc oko php skripte za email

    dopusta @sajt.yu, ali i @sajt.uy napisao sam ti gore, nisam stavio proveru MX recorda jer se ne moze na svim serverima proveriti tako da neka stvarno ispravna adresa nebi prosla validaciju.

    Ako neko zeli takvu proveru neka pogleda na http://www.php.net/checkdnsrr

    Mislim da nema 100% ispravne provere.

    Ajde ako imas vremena postavi validaciju iz te skripte koju koristis da pogledam.

  13. #13
    Primećen član Gill Bates (avatar)
    Učlanjen
    11.05.2003.
    Pol
    muški
    Lokacija
    Bgd
    Poruke
    603
    Reputaciona moć
    60

    Podrazumevano Re: Pomoc oko php skripte za email

    Nije bas ni tamo kako treba ^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$

    Ja sam razmisljam da odradim drugacije

    $a = explode("@", $email);
    list($mailbox,$mailserver) = $a;
    $delovi_domena = explode(".",$mailserver);

    pa dalje ispitujes niz $delovi_domena zavisno da li si ima dva, tri ili cetiri clana
    Linux is like a wigwam. No gates, and Apache inside!

  14. #14
    Zainteresovan član
    Učlanjen
    29.11.2006.
    Pol
    muški
    Poruke
    202
    Reputaciona moć
    43

    Podrazumevano Re: Pomoc oko php skripte za email

    Moze da se doda to sto si napisao, resice problem sa @sajt.nesto.nesto1.nesto2.nesto3.yu , ali opet ce prolaziti @sajt.yu i @sajt.uy .

    Mozes da zadas domene koji smeju da se nadju na tom mestu, ali nikada neces pokupiti sve moguce domene i opet postoji sansa da ispravan e-mail ne prodje zbog toga sto nije u tvojoj listi ...

    Sve u svemu mislim da potpuna validacija nije moguca, vazno je samo da se sto bolje ogranici unos da se ne prihvata bilo sta, a pritom da se omoguci siguran unos svih ispravnih podataka.

    Ako je na serveru instaliran php5.2 postoji funkcija filter_var() koja vrsi validaciju.

  15. #15
    Primećen član Gill Bates (avatar)
    Učlanjen
    11.05.2003.
    Pol
    muški
    Lokacija
    Bgd
    Poruke
    603
    Reputaciona moć
    60

    Podrazumevano Re: Pomoc oko php skripte za email

    Znam da ne postoji kompletan RegExp ili skripta, a celu priču sam bio potegao zbog @sajt.{tld} ili @sajt.{co|org}.{tld}
    Linux is like a wigwam. No gates, and Apache inside!

  16. #16
    Početnik
    Učlanjen
    16.03.2006.
    Pol
    muški
    Poruke
    27
    Reputaciona moć
    0

    Podrazumevano Re: Pomoc oko php skripte za email

    trebala bi mi jedna "mala" modifikacija form to mail skripte pa ako nije problem postovao bih ovde kod(code) da ne otvaram novu temu, a cini mi se da ce do resenja neki ljudi odavde vrlo brzo doci.

    --- izmena ---

    "problem" je u sledecem. kada mi stigne mail sa porukom nasa slova se ne vide vec umesto njih budu neki znakovi. predpostavljam da je potrebno negde ubaciti utf-8 ali stvarno nemam pojma gde.

    ovo je deo skripte, deo je iz php-a da ne zamraram sada sa onom formom iz htm-a

    [PHP] <?php


    $my_email = "email@email.com";

    $continue = "/";

    $errors = array();

    // Remove $_COOKIE elements from $_REQUEST.

    if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}}

    // Check all fields for an email header.

    function recursive_array_check_header($element_value)
    {

    global $set;

    if(!is_array($element_value)){if(preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc/i",$element_value)){$set = 1;}}
    else
    {

    foreach($element_value as $value){if($set){break;} recursive_array_check_header($value);}

    }

    }

    recursive_array_check_header($_REQUEST);

    if($set){$errors[] = "You cannot send an email header";}

    unset($set);

    // Validate name field.

    if(isset($_REQUEST['name']) && !empty($_REQUEST['name']))
    {

    if(preg_match("/[^a-z' -]/i",stripslashes($_REQUEST['name']))){$errors[] = "You have entered an invalid character in the name field";}

    }

    // Validate email field.

    if(isset($_REQUEST['email']) && !empty($_REQUEST['email']))
    {

    if(preg_match("/(%0A|%0D|\n+|\r+|/i",$_REQUEST['email'])){$errors[] = "Email address may not contain a new line or a colon";}

    $_REQUEST['email'] = trim($_REQUEST['email']);

    if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ")){$errors[] = "Email address is invalid";}else{$exploded_email = explode("@",$_REQUEST['email']);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = "Email address is invalid";}else{if(substr_count($exploded_email[1],".") == 0 || substr_count($exploded_email[1],".") > 3){$errors[] = "Email address is invalid";}else{$exploded_domain = explode(".",$exploded_email[1]);if(in_array("",$exploded_domain)){$errors[] = "Email address is invalid";}else{foreach($exploded_domain as $key => $value){if($key == 0){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}elseif(strlen($value) > 6 || !preg_match('/^[a-z0-9]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}}

    }

    // Remove leading whitespace from all values.

    function recursive_array_check(&$element_value)
    {

    if(!is_array($element_value)){$element_value = ltrim($element_value);}
    else
    {

    foreach($element_value as $key => $value){$element_value[$key] = recursive_array_check($value);}

    }

    return $element_value;

    }

    recursive_array_check($_REQUEST);

    // Check referrer is from same site.

    if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must enable referrer logging to use the form";}

    // Check for a blank form.

    function recursive_array_check_blank($element_value)
    {

    global $set;

    if(!is_array($element_value)){if(!empty($element_v alue)){$set = 1;}}
    else
    {

    foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);}

    }

    }

    recursive_array_check_blank($_REQUEST);

    if(!$set){$errors[] = "You cannot send a blank form";}

    unset($set);

    // Display any errors and exit if errors exist.

    if(count($errors)){foreach($errors as $value){print "$value<br>";} exit;}

    if(!defined("PHP_EOL")){define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n");}

    // Build message.

    function build_message($request_input){if(!isset($message_o utput)){$message_output ="";}if(!is_array($request_input)){$message_out put = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$ message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$mes sage_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");}

    $message = build_message($_REQUEST);

    $message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."Thank you";

    $message = stripslashes($message);

    $subject = "FormToEmail Comments";

    $headers = "From: " . $_REQUEST['email'];

    mail($my_email,$subject,$message,$headers);

    ?> [/PHP]
    Poslednji put ažurirao/la nbns : 23.07.2007. u 10:02

Slične teme

  1. Skripte !!!
    Autor borisjer u forumu Web dizajn
    Odgovora: 0
    Poslednja poruka: 23.06.2006., 23:07
  2. php skripte - za newsletter i za email formu...
    Autor absonic u forumu Web dizajn
    Odgovora: 2
    Poslednja poruka: 10.09.2005., 22:28
  3. PHP skripte
    Autor DJ-Nikola u forumu Web dizajn
    Odgovora: 1
    Poslednja poruka: 17.07.2005., 13:01
  4. Pomoc oko skripte
    Autor RedDragon u forumu Programiranje
    Odgovora: 4
    Poslednja poruka: 30.04.2005., 21:33
  5. WML i skripte
    Autor RiSK u forumu Web dizajn
    Odgovora: 2
    Poslednja poruka: 03.03.2004., 22:00

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •