Ahoj všichni, jsem naprostý začátečník s php, poradíte mi prosím, co znamená tohle Warning: mail() expects at most 5 parameters, 11 given in /3w/wz.cz/j/jitule-f/obchod/potvrzeni.php on line 48
nebo spíš co s tím udělat .. chtěla jsem stvořit jednoduchý objednávkový formulář na téhle stránce http://www.jitule-f.wz.cz/obchod/objednavka.htm
a jsem samouk amatér, tak prosím berte
No, predpokladam ze umis anglicky tak ti asi dojde ze jsi funkci mail() dala 11 parametru a ona ma podle dokumentace maximalne 5. ;)
Pokud chces efektivne poradit, je vzdycky lepsi zkopirovat cast zdrojoveho kodu ... (tady nejlepe 48 radek).
cz.php.net/mail
- dokumentace online k php
Freeze, anglicky sice umím, jen jsem si nebyla jistá, co to očekává maximálně 5 parametů, protože to byl můj úplně první pokus o php.
Peto, díky za navedení
Stávila jsem nad tím spoustu hodin a stvořila tohle, možná se zhrozíte, ale pro mě je to úspěch
<?php
if (isset($_POST['odeslano'])) {
$zbozi = $_POST['zbozi'];
echo "Zboží:<br />".$zbozi;
$jmeno = $_POST['jmeno'];
echo "<br />Jméno:".$jmeno;
$prijmeni = $_POST['prijmeni'];
echo "<br />Příjmení:".$prijmeni;
$ulice = $_POST['ulice'];
echo "<br />Ulice:".$ulice;
$PSC = $_POST['PSC'];
echo "<br />PSČ:".$PSC;
$mesto = $_POST['mesto'];
echo "<br />Město:".$mesto;
$telefon = $_POST['telefon'];
echo "<br />Telefon:".$telefon;
$email = $_POST['email'];
echo "<br />email:".$email;
$platba = $_POST['platba'];
echo "<br />Platba:<br />".$platba;
$message .="$jmeno\n";
$message .="$prijmeni\n";
$message .="$ulice\n";
$message .="$cislo\n";
$message .="$PSC\n";
$message .="$mesto\n";
$message .="$telefon\n";
$message .="$email\n";
$message .="$platba\n";
$odeslani = mail("jitule-f@email.cz", "Objednavka z webu od: ".$email, $message, $zbozi);
if ($odeslani) {
echo "Objednávka byla odeslána.";
} else {
echo "Objednávku se nepodařilo odeslat";
}
}
?>
Ještě v pondělí mi to na mail posílalo, sice formát nic moc, ale posílalo.
Dnes se to odešle ale na mail nic nepřijde.
Mám tam chybu, nebo je ten problém někde jinde?
V podobném tématu psal Tom o zdvojování proměnných - mám to tam taky - takhle jsem to vycucala z webu polopatě
Díky moc Jitka
$odeslani = mail("jitule-f@email.cz", "Objednavka z webu od: ".$email, $message, $zbozi);
A co znamena posledni parametr $zbozi?
Usuzuji, ze to nebude to, co zrovna funkce mail ocekava. Ctvrty parametr ocekava hlavicky a ne nejake zbozi.
to určitě nebude. Co očekává funkce mail, jsem se zatím nikde nestačila dočíst. Ale i tak mi to ještě vpondělí posílalo.
zbozi jsem tedy přesunula do message k ostatním, ale to nebyl ten zádrhel, proč to nechodí
Jitule-f: co SPAM? Není to někde mezi ním?
Btw: k tomu zdvojování proměnných - vážně je tak složité místo
$platba = $_POST['platba'];
echo "<br />Platba:<br />".$platba;
použít:
echo '<br />Platba:<br />'.$_POST['platba'];
?
+ vzhledem k tomu, že email není zrovna dvakrát spolehlivý (hádej co všechno se může po cestě pokazit?), měl bych jeden tip na zlepšovák:
ukládej si objednávky někam do souborů nebo do databáze a ještě si k tomu připiš skript generující RSS kanál a odebírej to jako novinky.
Práce maximálně tak na hodinku ;)
Tome, mezi spamem to není
to echo... s tím bych si poradila, ale já jsem fakt začátečník, a moc tomu nerozumím, jsem si nebyla jistá, co u toho message a funkce mail, všude pak puužiju např místo $platba .$_POST['platba']
No, to že by to chtělo posílat jěště někam jinam, to mě taky napadlo, ale co si mi napsal ty, je pro mne fakt španělská vesnice. Tamto jsem tvořila 10 hodin, než jsem k tomu všechno našla a opravila všechny chyby, na něco dalšího už momentálně nemám sílu.
$odeslani = mail("jitule-f@email.cz", "Objednavka z webu od: ".$email, $message, $zbozi);
jak uz rikali...
$message . $zbozi
a je treba po napsani opravila napsat i cely radek
$odeslani = mail("jitule-f@email.cz", "Objednavka z webu od: ".$email, $message);
Pak je treba si kontrolovat obsah, co ti posilaji z formularu. Spam boti ti poslou nelegalni znaky a kdyz to nekontrolujes, tak ti to smaze celou webku, treba.
Pak je problem v omezeni funkce mail na wz.cz . Proste po nekolika mailech za hodinu dalsi neposle, dokud hodina nepostoupi.
Dalsi problem je antispam. Jestlize se neco posle nekolikrat z nejake webky se s tejnym mailem a stejnym predmetem, cekal bych, ze antispam tuhle zpravu zaradi mezi spam, pokud nema nastaven filtr primo na uvedeny mail, ze vzdy prijimat.
$platba .$_POST['platba']
se da vyresit...
$x = array("platba","zbozi","ulice","PCS")
foreach ($x as $key=>$value)
{${$value} = isset($_REQUEST[$value]) ? $_REQUEST[$value] : ""; }
totez $$value = ...
nebo
foreach ($_REQUEST as $key=>$value)
{$$key = $value;}
ale tady uz nemusis odeslat nejake policko a program zkape na undefined
$message .="$jmeno\n";
... no jo, ale nikde pred tim nevidim $message = ""; Cili pocatecni hodnota je undefined a pak k ni pridavas jmeno a pod
a muzes opet vyuzit cyklu jako s request
$message = "";
foreach ($x as $key=>$value)
{$message.= "\n". $value .": ". (isset($_REQUEST[$value]) ? $_REQUEST[$value] : ""); }
... misto BR teda \n do mailu, jestli nemas nastavenu hlavicku na HTML, ale na TEXT mail.
mozna by bylo fajn pri odeslani k hlasce odeslano/neodeslano zobrazit i obsah mailu:
echo "<pre>".$message."</pre>";
Peto, jo, jo, to opravení toho řádku $odeslání... to mi došlo,
že u $message v prvním řádku nemá být tečka to už taky vím,
díky za to zobrazení obsahu mailu,
a to ostatní se budu muset teprve podívat, co co znamená - opradu jsem úplný začátečník.
Ted jsem hledala jak poslat ta data z formuláře jak na mail, tak i do nějakého souboru, ale neúspěšně, asi špatně hledám
Ocenuji tvou snahu
To, že odešleš data z forumáře znamená, že je předáš dalšímu skriptu, který si nimi dále pracuje tak, jak je libo. Data se do souboru neodesílají, ale zapisují, tedy:
$fp = fopen('cesta/nazev_souboru','příznak'); // otevřu soubor (http://php.net/fopen)
frwite($fp, 'Text, který chci uložit'); // zapíšu data (http://php.net/fwrite)
fclose($fp); // uzavřu soubor
Toto je nejjednodušší způsob, jak nacpat data do souboru.
huráá, povedlo se.
Jen jsem blbec strávila spoustu času hledáním chyby ve scriptu, nakonec jsem ji našla - ve formuláři.
Díky moc!