Autor Zpráva
Xarox
Profil *
Chtěl bych se zeptat jak jde udělat v návštěvní knize to, že když někdo cizí vloží nový příspěvek, tak se mi automaticky pošle na můj email.
Díky
Petra
Profil
No nejspíš funkcí mail. V jednoduchém podání zhruba takto:

Mail ("muj@email.cz", "Předmět", "A semka nejspíš obsah zprávy, takže asi obsah proměnné $prispevek");
xarox
Profil *
Jo díky moc, nějak to zkusím
Hugo
Profil
Ale podivej se do manualu k PHP jak maji vypadat hlavicky. Protoze hodne serveru maily se spatnyma hlavickama zahazuje (nebo oznacuje) jako spam.
llook
Profil
Hugo: Hlavičky mailů najde spíše v RFC dokumentu ve kterém je definovaný MIME (nevím z hlavy číslo), ale je to hodně dlouhý čtení a podle mě většinou zbytečný.
Tak jak píše Petra to bude fungovat. Já ještě uvádím hlavičku From a Content-Type, třeba takhle:

mail('moje@adresa', 'Nový příspěvek', $zprava, "From: automat@server\r\nContent-Type: text/plain; charset=iso-8859-2");


Content-type kvůli kódování a From kvůli tomu, aby mi to Gmail řadil do jedné konverzace.
Anonymní
Profil *
Jo jasně, to udělám. Nevíte náhodou ještě někdo jak bych měl udělat v návštěvní knize chráněný nick? Jako třeba od www.blueboard.cz.
xarox
Profil *
to jsem psal já.
llook
Profil
Jako aby se nikdo nemohl podepsat jako ty? Muselo by tam někde být nějaké přihlášení. Jedna z možností je, aby když někdo něco odešle pod tvým nickem, tak aby se ho to ještě zeptalo na heslo:
<?php

if (($_POST['nick'] == 'xarox') && ($_POST['heslo'] != 't4jnÉ H35L0')) {
echo('<form action="'.$_SERVER['PHP_SELF'].'">')
foreach ($_POST as $name => $value) {
if ($name != 'heslo') {
echo('<input type="hidden" name="'.htmlspecialchars($name).'" value="'.htmlspecialchars($value).'" />');
}
}
echo('<label for="heslo">Heslo: </label><input type="password" name="heslo" id="heslo" />');
echo('</form>');
exit;
}
//...a tady zbytek toho skriptu...
?>
xarox
Profil *
Jo to je ono. Díky . Taky se můžeš podívat na http://mgs3.bonusweb.cz v guestbooku když zadáš jméno xarox tak to chce ještě heslo.
xarox
Profil *
Ještě já, jaký mám udělat kódování u toho emailu?
mail('moje@adresa', 'Nový příspěvek', $zprava, "From: automat@server\r\nContent-Type: text/plain; charset=iso-8859-1"); tak funguje všechna česká diakretika, ale nefunguje v předmětu zprávy. Když udělám zase:

mail('moje@adresa', 'Nový příspěvek', $zprava, "From: automat@server\r\nContent-Type: text/html; charset=iso-8859-2"); tak tam jde, ale když je to takhle, tak se mi ve zprávě oběvuje HTML formát a to já nechci

mail('p.junek@centrum.cz', 'Masožravky',$nadpis . $jmeno = "<b>Jméno:</b><br> $jmeno<br><br>" . $email = "<b>Email:</b><br>$email<br><br>" . $popis = "<b>Zpráva:</b><br>$popis", "From: info@masozravky.unas.cz\r\nContent-Type: text/plain; charset=iso-8859-2");
xarox
Profil *
Nějak jsem to asi špatně popsal. Jde mi o to, že to mo moc neumí česky. Zde je celý kód:

<?
$name = "<table><tr><td class=jmeno>$jmeno</td></tr>";
$e_mail = "<tr><td class=odkaz><A HREF=mailto:$email>$email</A></td></tr>";
$prispevek = "<tr><td class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</td></tr>";
$tag = HTMLSpecialChars($popis);
$br = str_replace("\n"," <BR> ", $tag);
$nadpis = "<b><u>Nová zpráva na www.masozravky.unas.cz</b></u><br><br>";

$zprava = "<tr><td class=text><br>$br</td></tr></table><HR class=cara>\n";
$write = StripSlashes($name . $e_mail . $prispevek . $zprava);

if (File_Exists ("book.dat")):
$fp = FOpen ("book.dat", "r");
$data = FRead ($fp, FileSize("book.dat"));
FClose($fp);
endif;

$fp = FOpen ("book.dat", "w");
FWrite ($fp, $write.$data);
FClose ($fp);

mail('p.junek@centrum.cz', 'Masožravky',$nadpis . $jmeno = "<b>Jméno:</b><br> $jmeno<br><br>" . $email = "<b>Email:</b><br>$email<br><br>" . $popis = "<b>Zpráva:</b><br>$popis", "From: info@masozravky.unas.cz\r\nContent-Type: text/plain; charset=iso-8859-2");

?>
<html><head>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=kniha.php">
</head></html>

Když odešlu nový příspěvek, tak mi příjde email který umí dobře česky, ale neumí to dobře napsat předmět "Masožravky". Email vypadá takhle:

Nová zpráva na www.masozravky.unas.cz

Jméno:
ěščřžýáí

Email:


Zpráva:
ĚŠČŘŽÝÁÍÉ

Když však chci aby se mi i česky zobrazoval předmět "Masožravky" tak změním kódování takto:

nContent-Type: text/html; charset=iso-8859-2");

potom to jde, ale zase se mi v emailu nezobrazí správně text, ale zobrayí se jako HTML kód.
Nevíte někdo jak bych to měl kódovat aby úplně všechno bylo česky?

Díky
xarox
Profil *
Taky to jde jde když nastavim v outlooku západoevropské jazyky(ISO) , nevíte někdo jaké je to číslo?
Yuhů
Profil
já posílám raději přes
Content-Type: text/plain; charset=iso-8859-2
xarox
Profil *
No stejně to blbne, ale to je jedno. Ještě bych potřeboval jednou pomoc. Snažím se různými způsoby nastavit odesílání kopií, ale pořád to nejde. Nevíte někdo jak to mám dát do tohohle kódu?

mail('junekp@centrum.cz', 'Diskuse na mtgc.cz',$nadpis . $jmeno = "<font color=red><u><b>Zaslané jméno:</b></u></font><br> $jmeno<br><br>" . $email = "<font color=red><u><b>Zaslaný email:</b></u></font><br>$email<br><br>" . $popis = "<font color=red><u><b>Zaslaná zpráva:</b></u></font><br>$popis", "From: webmaster@mtgc.cz\r\nContent-Type: text/html; charset=iso-8859-2");

Díky moc.
llook
Profil
Možná by mohlo fungovat přidání hlavičky Cc (carbon-copy). Za nic neručím, ale za pokus to stojí:
mail('e@mail', '...', '...', "From: webmaster@mtgc.cz\r\nContent-Type: text/html; charset=iso-8859-2\r\nCc: a@a; b@b; c@c");
xarox
Profil *
Jo dobrý to funguje. Díky

Jenom ještě mi hlásí chybu to heslo.
llook
Profil
Jakou chybu?
xarox
Profil *
chyba:

Parse error: parse error, unexpected T_FOREACH, expecting ',' or ';' in /www/3/site2383/wwwroot/index.php on line 68

v kódu:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<LINK href="../css/kniha.css" rel="stylesheet" type="text/css">
<LINK href="../css/right.css" rel="stylesheet" type="text/css">
<LINK href="../css/lista.css" rel="stylesheet" type="text/css">

<title>Návštěvní kniha</title>
<SCRIPT LANGUAGE="JavaScript"><!--
function zkontroluj(formular)
{
if (formular.jmeno.value=="")
{
alert("Vaše jméno (přezdívku) musíte vyplnit!");
formular.jmeno.focus();
return false;
}
else if (formular.popis.value=="")
{
alert("Text zprávy musíte vyplnit!");
formular.popis.focus();
return false;
}
}
// -->
</SCRIPT>
</head>

<body>
<table border="0" cellspacing="1" style="border-collapse: collapse" bordercolor="#111111" width="486" height="259">
<tr>
<td width="100%" class=nadpis height="256">
<center>
<p><font size="5">Kniha návštěv</font></p>
</center>
<p><br>

</p>

<table border="0" cellspacing="0" cellpadding="0" align="center">
<form action="insert.php" method="post" onSubmit="return zkontroluj(this)">
<tr><td width=120 class=povinne>
*Jméno: </td><td>
<input type="text" name="jmeno" size="30" maxlength="60" class="povinne">
</td></tr>
<tr><td width=120 class=nepovinne>
&nbsp; E-mail: </td><td>
<input type="text" name="email" size="30" maxlength="60" class="inputbook">
</td></tr>
<tr><td width=120 class=text>


<tr><td valign=top width=120 class=povinne>
*Text zprávy:
</td><td>
<textarea cols="29" rows="5" class="inputbook" name="popis"></textarea>
</td></tr>
<tr><td width=120>&nbsp;</td><td>
<center>
<p><input type="submit" class=bluebutton value="Odeslat">&nbsp;&nbsp;&nbsp;<input type="Reset" class=bluebutton value="Vymazat"></p>
</center>
</form></td></tr></table>
<hr class=cara>

<?php
if (($_POST['nick'] == 'xarox') && ($_POST['heslo'] != 't4jnÉ H35L0')) {
echo('<form action="'.$_SERVER['PHP_SELF'].'">')
foreach ($_POST as $name => $value) {
if ($name != 'heslo') {
echo('<input type="hidden" name="'.htmlspecialchars($name).'" value="'.htmlspecialchars($value).'" />');
}
}
echo('<label for="heslo">Heslo: </label><input type="password" name="heslo" id="heslo" />');
echo('</form>');
exit;
}
function Odkaz()
{
if (File_Exists ("book.dat")):
echo "<center><font class=prispevek>Zobrazit příspevky:<br><br>";

$prispevek = File("book.dat"); //načte obsah souboru do pole
$strana = Ceil(Count($prispevek)/20); //vypocita kolik zaberou příspěvky stran (po 20)

for ($x=1;$x<=$strana;$x++): //zobrazí tolik odkazů kolik je stran
echo "<a href=kniha.php?idprispevek=$x>" . ($x*20-19) . "-" . $x*20 . "</a>&nbsp;&nbsp;&nbsp";//do každého odkazu přidá číslo strany a jaké příspěvky budou zobrazovány
endfor;
echo "</center>";
endif;
}
Odkaz();
?>
<hr class=cara>
<?
if (File_Exists ("book.dat")): //existuje soubor book.dat
if (!IsSet($idprispevek)) $idprispevek=1; //je zinicializována proměnná id, pokud ne přiřadí standartní jedničku
$pocatek = $idprispevek*20-20; //podle id spočítá od kolikátého
$konec = $idprispevek*20-1; //... do kolikáté příspěvku se bude zobrazovat

$prispevek = File("book.dat"); //načte do pole obsah book.dat
for ($i=$pocatek;$i<=$konec;$i++):
echo $prispevek[$i]; //vypíše příspěvky mezi $prispevek a $konec
endfor;
endif;

Odkaz();?>
<hr class=cara>
</td>
</tr>
</table>


Tohle je kód s názvem kniha.php. Pak mám ještě insert.php . Tak by to podle mě mělo být vložený ne?
xarox
Profil *
Jinak chyba řádek 68 je:

foreach ($_POST as $name => $value) {
xarox
Profil *
Jo už vím, o řádek předtím chyběl středník, ale stejně to nejde.

Potřeboval bych prosímtě nějaký podobný kód aby jako je to u blueboardu když napíšu jméno "xarox" tak aby se pod tím vysunula nová textarea do které by se zapsalo to heslo. §

Díky moc
xarox
Profil *
jinak se na to můžeš podívat na http://mujtest.php5.cz
xarox
Profil *
Tak to nějak všechno zkusím udělat
Toto téma je uzamčeno. Odpověď nelze zaslat.