Autor Zpráva
Jurášek
Profil *
Vážení přátelé,

mám pro mě naprosto nepochopitelný problém.

Na stránkách mám odpovědní PHP formulář ve dvou verzích - česky a anglicky.

Ještě před týdnem vše fungovalo normálně. Před pár dny mi ale najednou přišel český feedback ale místo diakritiky tam byly divné znaky. Tak jsem vše otestoval, a zjistil, že anglický mi nechodí vůbec, a český s divnými znaky.

Upozorňuji, že jsem nic neměnil na formulářích nejméně rok, a jsou identické, až na jazyk. Zkontaktoval jsem hosting, koukli na to, a že žádnou chybu nevidí.

Čím by to mohlo být? Poradíte? Mám tam normální český feedback s háčkama a čárkama z 11.3. Co se mohlo stát?

Asi před rokem mi najednou přestaly chodit mejly ze stránek úplně. Ono chvíli trvá, než na to náhodou přijdu. Hosting (jiný) mi nepomohl. Nakonec jsem zjistil, že Yahoo, kde jsem měl e-mail,na který jsem feedback vedl změnili nějaké povolení, a tak to tam přestalo chodit. Stačilo změnit mejl na Seznam, a vše fungovalo. jenže teď nefunguje najednou půlka a ještě blbě.

Tady je český odpovědní formulář: http://vanishingworldphotography.com/kontakt.html

A tady je celý kód i s PHP. PHP jsem dostal s šablonou jak jsem začal tvořit, a fungovalo to hned, ale bez háčků a čárek. Tak mi někdo (myslím že tady) poradil dát PHP do HTML, a to 4 roky až do minulého víkendu fungovalo. Tady to je:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title>Zpráva byla odeslána</title>
<meta name="robots" content="noindex">
<meta http-equiv="Content-Language" content="cs">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="icon" href="img/favicon.ico" type="image/x-icon">
</head>

<body>
<br>

<?php
$name=$_POST['name'];
$email=$_POST['email'];
$comment=$_POST['comment'];

$msg ="Name: $name Email: $email Comment: $comment\n\n"; 
$recipient = "mujmej@seznam.cz"; 
$subject = "Website Feedback"; 
mail($recipient, $subject, $msg, "From: mujmejl@seznam.cz","-f mujmej@seznam.cz"); 
echo "<div style=\"font-size: 14pt\">";
PRINT "Děkuji - vaše zpráva byla odeslána.";
echo "</div>";
?>

<br>
<input onclick="location.href='http://vanishingworldphotography.com/cs-index.html';" type="button" value="Přejít na Hlavní stránku">&nbsp;&nbsp;&nbsp;
<input onclick="location.href='http://vanishingworldphotography.com/kontakt.html';" type="button" value="Zpět na Kontaktní formulář">

</body>

</html>

Moc díky za pomoc
juriad
Profil
Jurášek:
Spíš byl zázrak, že to kdy fungovalo.
Zkus použít tuto funkci místo přímého volání funkce mail: Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky.
lionel messi
Profil
Jurášek:
Zdravím,

bohužiaľ celý kód nie je najlepší a ideálne by ho bolo komplet prepracovať (buď podľa riešenia, ktoré zmienil juriad, alebo použiť PHPMailer).

Niekoľko zásadných chýb (zrejme nie všetky):

1. Vôbec neoveruješ, či bola správa skutočne odoslaná, návštevník sa ani nemá ako o zlyhaní dozvedieť.
2. Kódovanie nemá zmysel komentovať, inšpiruj sa v odkázanom návode.
3. Vôbec nekontroluješ, či boli formulárové polia naozaj vyplnené (či tak náhodou robíš na predošlej stránke pomocou JavaScriptu je nepodstatné, kontrola musí prebiehať na strane serveru).
4. Mailu nesprávne nastavuješ hlavičky.
5. Pomerne nešťastným spôsobom miešaš PHP a HTML (nejde o priamu chybu). V tomto miniatúrnom kóde sa ešte dá orientovať, ale keby si mal takto napísaný veľký skript, vznikol by chaos.
Jurášek
Profil *
Moc díky za náhledy a rady.

Sice to neřeší proč to minulý týden fungovalo a teď ne, ale máte pravdu.

Body 1 až 5 jsou jistě dobré připomínky - bohužel tohle všechno je na mě už moc složité, a asi nemám šanci. Třeba bod 3 - nad tím jsem si lámal hlavu hrozně dlouho, aby nešel odeslat prázdný formulář. Nakonec se to povedla tak jak to mám, jinak to asi neumím. netřeba dodávat, že v PHP se nevyznám vůbec. Umím jen základy HTML, abych byl schopen tvořit a psát tyto stránky.

Dobrá, ty návody jsem si zkopíroval (nemám doma internet) a kouknu na to (mám kamarádku, která není v kódování tak hloupá jako já - třeba v nabídce galerijí v boxu na každé stránce mám Java scriptem jednu rozskakovací položku - Divoká zvířata..............to vymyslela ona, sice s knihou,ale tohle bych já nedal, ani s knihou).

To bych byl asi moc neskromný, kdybych se zeptal třeba lionela messi, jestli by se mu to nechtělo mi to spravit (a tedy i vylepšit)? Když se v tom někdo vyzná, je to paráda, pro mě je jakýkoliv problém na mnoho dní a s bolením hlavy. A výsledek jste právě okomentovali :-D
lionel messi
Profil
Jurášek:
netřeba dodávat, že v PHP se nevyznám vůbec. Umím jen základy HTML, abych byl schopen tvořit a psát tyto stránky.
Ak chceš PHP zvládať o trošku lepšie (aspoň na základnej úrovni), odporúčam miestnu učebnicu PHP (asi najlepší český zdroj pre úplného začiatočníka).

Třeba bod 3 - nad tím jsem si lámal hlavu hrozně dlouho, aby nešel odeslat prázdný formulář.
S tím ti pomôže konštrukcia isset, ktorá skúma, či je daná premenná nastavená. Čiže:
<?php
if (!isset($_POST['name'], $_POST['email'], $_POST['comment'])) { //ak nie je niektorá z premenných nastavená, nespracujeme dáta
  echo "Vyplňte prosím všetky povinné polia.";
  //presmerovanie na stránku s formulárom alebo vloženie formulára
}

else { //táto časť sa vykoná, iba ak sú všetky premenné nastavené
  $name=$_POST['name'];
  $email=$_POST['email'];
  $comment=$_POST['comment'];
  //a zvyšný kód zabezpečujúci odoslanie
}

To bych byl asi moc neskromný, kdybych se zeptal třeba lionela messi, jestli by se mu to nechtělo mi to spravit (a tedy i vylepšit)? Když se v tom někdo vyzná, je to paráda, pro mě je jakýkoliv problém na mnoho dní a s bolením hlavy.

Keď náhodou niečo viem, rád poradím, ale zrovna v odosielaní mailov sa prakticky dvakrát nevyznám (ako napovedá moja prezývka, lepšie sa cítim na futbalovom trávniku :-)), PHP ovládam iba na úrovni lepšieho začiatočníka/slabšieho mierne pokročilého užívateľa a nerád by som ťa naviedol na zlú cestu.
Jurášek
Profil *
Díky :-D Rozumím.

Ale rady máš dobré, třeba docílit 1), to se mi ani nesnilo.

Kouknu na návody a poperu se s tím.

Kdyby se ale někomu chtělo mi ten formulář spravit, byl bych moc vděčný.

Ještě k té kritice kódování - to PHP jsem dostal se šablonou, a podle návodu jsem tam jen 3x doplnil můj e-mail. Pak ale nefungovaly české znaky, tak mi někdo poradil to zabalit do HTML. Toť vše.
lionel messi
Profil
Jurášek:
třeba docílit 1), to se mi ani nesnilo.
To je pritom relatívne jednoduchá úloha. Stačí vhodne používať podmienky. Funkcia mail totiž vracia true pri úspechu a false pri neúspechu.

<?php
if (mail($to, $subject, $message, $headers)) { //nahraď svojimi premennými
  echo "Zpráva byla odeslána.";
}

else {
  echo "Zpráva nebyla odeslána.";
}
?>
Jurášek
Profil *
Hmm, zajímavé - zatímse mi nic nepovedlo vymyslet co s tím - ale až do 11.3. to fungovalo normálně (a 4 roky předtím taky), pak najednou přestaly chodit anglické mejly, pak zase začaly, ale české začaly chodit s divnými znaky místo diakritiky. Pak to párkrát přišlo normálně, a teď zase divné znaky, ale chodí, stejně jako anglický.

Nevíte někdo, kde hledat chybu, problém. S hostingem jsem mluvil, nic nenašli. proč to bez jakékoliv změny přestalo fungovat (Anglicky), pak to nefungovalo česky, pak zas obojí jo, a teď napůl.

Chápu, že by to šlo udělat líp, ale proč je to jak to je?
Moderátor juriad: Prosím, nepiš tři em bezprostředně za sebe - tato kombinace slouží k zavolání moderátora.
lionel messi
Profil
Jurášek:
Viem, že s PHP máš len málo skúseností. Ale dokážeš použiť návod z FAQ?

Nemenil hosting náhodou nedávno verziu PHP?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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