Autor Zpráva
jany
Profil
kedze v php som nikdy sam nic nenapisal, pouzivam len vytvorene skripty a potreboval by som poradit.
Mam skript na odosielanie formulara na mail
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>

<form action="posli.php" method="post">
<input name="email" size="25" value="Váš@mail"><br>
<input name="predmet" size="25" value="Předmět"><br>
<input name="spam" size="25"> <strong>= 1 + 1</strong><br>
<textarea name="zprava" rows="6" cols="55">Zpráva...</textarea><br>
<input type="submit" value="Odeslat">
</form>

</body>
</html>

a skript ktory vykona odoslanie
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>

<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];

if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
Mail("vase@adresa.com", $predmet, $zprava, "From: " . $email);
echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>

</body>
</html>

Chcel by som si tam pridat este dalsie vstupne polia a nejake select boxy "robalovacie policko, kde su na vyber moznosti". To policko by som asi aj zvladol, pridam dalsiu premennu, tak isto ju dam do if a do mail (tak isto by to malo asi byt aj ked by som tych vtupnych policok chcel mat 20) ale ako to spravit s tym select box ??
Alphard
Profil
ale ako to spravit s tym select box
předpokládám, že s html si poradíte, když jste v sekci PHP
<select name="ovoce"> bude mít své name a jednotlivé <option value="tresne"> budou mít své value, PHP potom dostane kombinaci name=value dle vybrané hodnoty

pridam dalsiu premennu, tak isto ju dam do if a do mail
ano, ale nezapomeňte, že nemůžete přidat paramtery, vše musíte spojit do třetího
jany
Profil
Nejak to nefunguje. Pridal som dalsie policko do formulara
<input name="meno" size="25" value="meno"><br>

a pridal som aj dalsiu premennu aj v podmienke
<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$meno = $_POST['meno'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];

if ($predmet!="" and $email!="" and $zprava!="" and $meno!="" and $spam=="2")
{
Mail("24680@seznam.cz", $predmet, $zprava, $meno, "From: " . $email);
echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>

A php vypisuje
Warning: mail(): SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE. in /9p/wz.cz/j/jany/a/posli.php on line 19
ale pri tom pise, Váš e-mail byl úspěšně odeslán. ale nic neprislo.
Alphard
Profil
cituji svůj předchozí příspěvěk
ano, ale nezapomeňte, že nemůžete přidat paramtery, vše musíte spojit do třetího
:-) jako bych to nepsal

Mail("24680@seznam.cz", $predmet, $zprava."\r\nJmeno: ".$meno, "From: " . $email);


ale pri tom pise, Váš e-mail byl úspěšně odeslán.
dejte mail do podmínky
jany
Profil
Nechapem, jak spojit do třetího ?
SwimX
Profil
jany
$zprava = "Uzivatel ".$_POST['meno']." vam pise ".$_POST['zprava'];
if( Mail("24680@seznam.cz", $predmet,$zprava, "From: " . $email))
  echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
else 
  echo "Neodeslan";


edit: prostě v mail() musí být 4 parametry. Tvuj mejl, predmet zpravy, zprava, a od koho je (popřípadě + hlavičky)
takže musíš všechny ty proměnný $_POST[neco] spojit do jedné - $zprava a potom poslat mejl s ní. Když budeš chtít do zprávy vložit nový řádek udělej: $zprava = "text \r\n text na dalsi radce"; je to escape sekvence nového řádku (stejně tak např tabulátor má \t) ale funguje pouze poud je v uvozovkách " ";
jany
Profil
Aha, tak toto uz funguje. Takze funkcia mail, moze mat najviac 4 parametre ? Lebo nasiel som este nejaky iny skript na odosielanie formulara na mail a tam som videl viac premennych asi 5-6 formularovych policok tam bolo, ale zase som tam nevidel funkciu mail (da sa to odosielat aj inak ako cez funkciu mail) ?
A ked potrebujem napr. 10 formul. policok, tak vsetko musim analogicky zakomponovat do tej $zprava ??
btw dik za vysvetlenie
SwimX
Profil
jany
10 formul. policok, tak vsetko musim analogicky zakomponovat do tej $zprava ??
ano

nebo mail(komu, predmet, $_POST['zprava']. "text". $_POST['druha'], from);
ale to s tou zprávou je takové hezčí.

existuje eště třeba PHPmailer
a nebo tady: http://cz2.php.net/manual/en/function.mail.php dole je See also
jany
Profil
Tak uz mi to funguje aj zo select boxom. dik vsem za pomoc, hlavne SwimXovy za vysvetlenie polopate.
A este by som chcel vediet jednu vec. Testujem to na wz, aj na ic a funguje to, ale z lokalneho serveru to hodi hlasku
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in f:\wampp1\htdocs\a\posli.php on line 18

pozeral som do php.ini ale neviem ako ho mam nakonfigurovat, aby posielal aj z localhostu, je to vobec mozne ?
[mail function]
; For Win32 only.
SMTP = localhost

; For Win32 only.
sendmail_from = postmaster@localhost

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
SwimX
Profil
jany
z lokalneho serveru to hodi hlasku
ano, že nemáš nasavené SMTP - tak to mám také, ale popravdě mě to netrápí.

Něco už se tu řešilo, nevvím jak to ale dopadlo: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=69876
něco je popsáno i třeba tady: http://forum.phpwcms.org/viewtopic.php?f=4&t=904
ale nečet sem to, takže nevím, zda to pomůže
jany
Profil
Tak na ten lokal kaslem tiez, ale este mi tu nieco nesedi, odosielaci skript som spravil ako ste radili a vyzera takto
<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = "Meno ".$_POST['meno']." Vek ".$_POST['vek']." mesto ".$_POST['mesto']." Platforma ".$_POST['platforma']." vam pise ".$_POST['zprava'];

if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
Mail("24680@seznam.cz", $predmet, $zprava."\r\nmeno:\r\nvek:\r\nmesto:\r\nplatforma: ", "From: " . $email);
echo '<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>';
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>

formular
<form action="posli.php" method="post">
<input name="email" size="25" value="@"> mail<br>
<input name="predmet" size="25" value="Předmět"> predmet<br>
<input name="meno" size="25" value="meno"> meno<br>
<input name="vek" size="25" value="25"> vek<br>
<input name="mesto" size="25" value=""> mesto<br>
<input name="spam" size="25"> <strong>= 1 + 1</strong><br>
<select name="platforma" size="1">
<option value="win">Windows
<option value="linux">Linux
<option value="unix">Unix
<option value="mac">Mac
</select> platforma<br>
<textarea name="zprava" rows="6" cols="55">Zpráva...</textarea><br>
<input type="submit" value="Odeslat">
</form>

A mail dostanem taky nejaky blby
Meno Fero Vek 120 mesto Praha Platforma linux vam pise Zprava pre adresata ...

meno:

vek:

mesto:

platforma: 
SwimX
Profil
jany
máš co sis napsal ;)
poskládáš si zprava
$zprava = "Meno ".$_POST['meno']." Vek ".$_POST['vek']." mesto ".$_POST['mesto']." Platforma ".$_POST['platforma']." vam pise ".$_POST['zprava'];

a pak odešleš
$zprava."\r\nmeno:\r\nvek:\r\nmesto:\r\nplatforma: "


takže první řádka je zpráva:
Meno Fero Vek 120 mesto Praha Platforma linux vam pise Zprava pre adresata ...

a za tím je to "\r\nmeno:\r\nvek:\r\nmesto:\r\nplatforma:
meno:

vek:

mesto:

platforma: 


pravděpodobně chceš toto:
$zprava = "Meno ".$_POST['meno']."\r\nVek ".$_POST['vek']." \r\nmesto ".$_POST['mesto']." \r\nPlatforma ".$_POST['platforma']." \r\nvam pise ".$_POST['zprava'];
...
if( Mail("24680@seznam.cz", $predmet, $zprava, "From: " . $email) )
jany
Profil
Ano presne toto chcem.
Ty si hlavicka
A ja zase laidak, co sa nic nevie naucit :)
jany
Profil
Tak este mam nejaku tu otazku: do $zprava som si dal dalsich 35 poloziek (myslel som, ze ich bude menej :) ) chvalabohu funguje to, ale potreboval by som spravit, aby niektore polozky boli povinne a niektore nie. Zrejme to treba zakomponovat do toho, ale neviem ako to ma byt presne:
if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")

Lebo teraz to funguje tak, ze staci ak vyplnim nieco z tych 35 poloziek a mail sa odosle a ja potrebujem aby niektore museli byt vyplnene (niektore nemusia).
A este dalsia vec, sice to nesuvisi z php, ale na mail nechodi š,č,ť,ž atd... ale ine znaky, ako nastvit kodovanie aby chodili aj š, č ...
SwimX
Profil
jany
vypíšeš sem ty povinné: (šlo ba to i jinak a čistěji, ale takle ti to stačí)
if ($predmet!="" and $email!="" and $_POST['telefon']!="" and $_POST['mobil']!="" and $_POST['icw']!="" and $spam=="2")


š,č,ť,ž atd...
$hlavicky = "Content-type: text/plain; charset=windows-1250 \n";  
mail($komu, $predmet, $textMailu, "From: $odesilatel\r\n".$hlavicky);
jany
Profil
dik, ze si mi poradil, este sa opytam, pre nemecke znaky sa pouziva ake cislo charset=windows ?
jany
Profil
aha, takze charset=windows-1250 funguje aj na nemecke znaky (tak potom je to vsetko OK) a diky SwimX
jany
Profil
aha, takze charset=windows-1250 funguje aj na nemecke znaky (potom je to vsetko OK). Dik SwimX za vsetky rady
jany
Profil
Hi SwimX
mam dalsi problem s diakritikou pri odoslani mailu. Pokial som fungoval na seznam.cz tak to fungovalo, ale teraz nechavam formular odosielat na iny mailovy server a diakritika je zase blba.
skusal so to zmenit aj na
$hlavicky = "Content-type: text/plain; charset=utf8 \n";  
ale stale je to nedobre. Co spravit, aby to bolo korektne
nightfish
Profil
charset=utf8
utf-8

a ještě dodám, že pokud je špatná diakritika v předmětu, tak je potřeba i předmět zakódovat
jany
Profil
To sa mi zda dost zlozite pe mna, neda sa to nejak jednoduchsie ? ved na seznam, gmail to chodi pekne, preco to na iny mail server nedojde korektne hmm...
jany
Profil
tak ako by som to předmět zakódovat zakomponoval do toho prveho skriptu, co som sem dal, mam z toho trochu chaos
SwimX
Profil
jany
když jenom opíšu to Alphardovo řešení
<?php
// Komu má přijít
$mail = $_POST['email'];
// s jakým předmětem
$predmet = $_POST['predmet'];
//jaká zpráva
$zprava = "Meno ".$_POST['meno']."\r\nVek ".$_POST['vek']." \r\nmesto ".$_POST['mesto']." \r\nPlatforma ".$_POST['platforma']." \r\nvam pise ".$_POST['zprava'];
// From: tvuj@email.cz (musí tam zůstat to \n)
$kon = cs_mail ($mail, $predmet, $zprava, "From: tvuj@email.cz\n");

if ($kon)
  echo "E-mail byl úspěšně odeslán.<br>";
 else
  echo "E-mail se bohužel nepodařilo odeslat.<br>";


/* tady prostě funkce které dělají co mají */
function autoUTF($s)
{
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
        return $s;
    if (preg_match('#[\x7F-\x9F\xBC]#', $s))
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    return iconv('ISO-8859-2', 'UTF-8', $s);
}

function cs_mail ($to, $predmet, $zprava, $head = "")
       {  $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
          $head .= "MIME-Version: 1.0\n";
          $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
          $head .= "Content-Transfer-Encoding: base64\n";
          $zprava = base64_encode (autoUTF ($zprava));
          $stav = mail ($to, $predmet, $zprava, $head);
          return $stav ?  TRUE : FALSE;  
      }
                   
?>
jany
Profil
Takze bohuzial nefungovalo to (neviem preco). Tak este raz, skript vyzera takto
<?php
$mail = "mojmail@seznam.cz";
$predmet = "predmet_mailu";
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = 
" \r\nNiečo 1: ".$_POST['nieco1'].
" \r\nNiečo 2: ".$_POST['nieco2'].
" \r\nNiečo 3: ".$_POST['nieco3'].
" \r\nNiečo 4: ".$_POST['nieco4'].
" \r\nNiečo 5: ".$_POST['nieco5'].
" \r\nNiečo 6: ".$_POST['nieco6'].
" \r\nNiečo 7: ".$_POST['nieco7'].
" \r\nEmail: ".$_POST['email'].
" \r\nSpráva: ".$_POST['zprava'];
$kon = cs_mail ($mail, $predmet, $zprava, "From: $email\n");

if ($email!="" and $zprava!="" and $spam!="2" )
{

if ($kon)
  echo "E-mail byl úspěšně odeslán.<br>";
}  
 else
  echo "E-mail se bohužel nepodařilo odeslat.<br>";
?>

<?php

function autoUTF($s)
{
    // detect UTF-8
    if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s))
        return $s;
    // detect WINDOWS-1250
    if (preg_match('#[\x7F-\x9F\xBC]#', $s))
        return iconv('WINDOWS-1250', 'UTF-8', $s);
    // assume ISO-8859-2
    return iconv('ISO-8859-2', 'UTF-8', $s);
}

function cs_mail ($to, $predmet, $zprava, $head = "")
       {  $predmet = "=?utf-8?B?".base64_encode(autoUTF ($predmet))."?=";
          $head .= "MIME-Version: 1.0\n";
          $head .= "Content-Type: text/plain; charset=\"utf-8\"\n";
          $head .= "Content-Transfer-Encoding: base64\n";
          $zprava = base64_encode (autoUTF ($zprava));
          $stav = mail ($to, $predmet, $zprava, $head);
          return $stav ?  TRUE : FALSE;  }
?>


Teraz sa mail odosle stale, aj ked niesu vyplnene ziadne polia vo formulary (ale vypise sa, ze mail nebol odoslany, asi mam nieco zle s tou podmienkou).
Formular vyzera nasledovne
<form action="posli.php" method="post">
<table>
<tr>
<td>Niečo 1:**</td>
<td><input name="nieco1" size="25" value=""></td>
</tr>
<tr>
<td>Niečo 2:**</td>
<td><input name="nieco2" size="25" value=""></td>
</tr>
<tr>
<td>Niečo 3:</td>
<td><input name="nieco3" size="25" value=""></td>
</tr>
<tr>
<td>Niečo 4:</td>
<td><input name="nieco4" size="25" value=""></td>
</tr>
<tr>
<td>Niečo 5:</td>
<td><input name="nieco5" size="25" value=""></td>
</tr>
<tr>
<td>Niečo 6:**</td>
<td><input name="nieco6" size="25" value=""></td>
</tr>
<tr>
<td>Niečo 7:**</td>
<td><input name="nieco7" size="25" value=""></td>
</tr>
<tr>
<td>Email:**</td>
<td><input name="email" size="25" value=""></td>
</tr>
<tr>
<td>Antispam** 1+1=</td>
<td><input name="spam" size="10"></td>
</tr>
<tr>
<td valign="top">Správa:</td>
<td>
<textarea name="zprava" rows="5" cols="30"></textarea><br>
<input type="submit" value="Odoslať">
</td>
</table>
</form>

Povinne polia by som chel tie, ktore su oznacene **
Hadam by to pre phpeckarov nemal byt problem (pre mna to problem je)
Alphard
Profil
vycházím z posledního příspěvku, tu měsíc starou historii jsem nezkoumal
místo tohoto
$kon = cs_mail ($mail, $predmet, $zprava, "From: $email\n");

if ($email!="" and $zprava!="" and $spam!="2" )
{

if ($kon)
  echo "E-mail byl úspěšně odeslán.<br>";
}  
 else
  echo "E-mail se bohužel nepodařilo odeslat.<br>";


tam dejte

if ($email!="" and $zprava!="" and $spam=="2" )
{
$kon = cs_mail ($mail, $predmet, $zprava, "From: $email\n");
if ($kon)
  echo "E-mail byl úspěšně odeslán.<br>";
}  
 else
  echo "E-mail se bohužel nepodařilo odeslat.<br>";
jany
Profil
Dik Alphard teraz to konecne vsetko slape aj s diakritikou
Alphard
Profil
jany
nz, tak po měsici
ale ještě si opravte
$spam=="2"
jany
Profil
jj toto som uz spravil (to by bol moc jednoduchy antispam $spam!="2" :) ) dik

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: