PDA

Zobacz pełną wersję : Formularz kontaktowy i problem z paremetrem



FrostB
05-07-2013, 11:37
Witam

Posiadam formularz kontaktowy, ktory chcialem przerobic na modul, aby moc go obslugiwac z poziomu panelu administratora. Jako ze jestem raczej zielony w tych sprawach (ciagle sie ucze) napotkalem na problem nie do przejscia. Otoz nie wiem jak zaimportowac parametr email do pliku contact.php. Przy probie wyslania maila ciagle wyrzuca mi


Fatal error: Call to a member function get() on a non-object in/home/xxx/domains/xxxx/public_html/modules/mod_formularzr/tmpl/form/contact.php on line 51


mod_formularz.php

<form method="post" action="/tmpl/form/contact.php" name="contactform" id="contactform">

<fieldset>


<label for="name" accesskey="U"><span class="required">*</span> Imie</label>
<input name="name" type="text" id="name" size="30" value="" />


<br />
<label for="email" accesskey="E"><span class="required">*</span> Email</label>
<input name="email" type="text" id="email" size="30" value="" />

<br />
<label for="comments" accesskey="C"><span class="required">*</span> Wiadomosc</label>
<textarea name="comments" cols="40" rows="3" id="comments" style="width: 350px;"></textarea>




<input type="submit" class="submit" id="submit" value="Submit" />


</fieldset>


</form>

contact.php


/** i pozostala czesc kodu **/


/**tutaj linia 51 -> **/$address = $params->get(' email');
echo "$address";

if(mail($address)) {
echo "<h1>Email wyslany.</h1>";
} else {
echo 'ERROR!';
}


mod_formularz.xml

<field name="email" type="text" default="" label="Email" description="Email" />



Bede wdzieczny za jakiekolwiek wskazowki.

KES
05-07-2013, 12:26
A możesz pokazać co to jest zmienna $params ? Z czego ona się bierze ?
Czy zmienna $params jest instancją: JInput, JObject lub JRegistry ?

FrostB
05-07-2013, 12:54
tutaj cala zawartosc pliku contact.php. Jak juz wspomnialem jestem zielony w tych sprawach. Z reszta sobie poradzilem ale importu parametru email nie moge przejsc...


<?php
if(!$_POST) exit;
function isEmail($email) { return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|a s|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn |bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|c l|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk| dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|f o|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs |gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|in t|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr| kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md |me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mus eum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|n o|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn |pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se| sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td |tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|u k|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu| za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));}
if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");
$name = $_POST['name'];$email = $_POST['email'];$subject = $_POST['subject'];$comments = $_POST['comments'];$verify = $_POST['verify'];
if(trim($name) == '') { echo '<div class="error_message">Attention! You must enter your name.</div>'; exit();} else if(trim($email) == '') { echo '<div class="error_message">Attention! Please enter a valid email address.</div>'; exit();} else if(!isEmail($email)) { echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>'; exit();}
if(trim($subject) == '') { echo '<div class="error_message">Attention! Please enter a subject.</div>'; exit();} else if(trim($comments) == '') { echo '<div class="error_message">Attention! Please enter your message.</div>'; exit();} else if(!isset($verify) || trim($verify) == '') { echo '<div class="error_message">Attention! Please enter the verification number.</div>'; exit();} else if(trim($verify) != '8') { echo '<div class="error_message">Attention! The verification number you entered is incorrect.</div>'; exit();}
if(get_magic_quotes_gpc()) { $comments = stripslashes($comments);}


$address = $params->get(' email');
echo "$address";


$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );
$headers = "From: $email" . PHP_EOL;$headers .= "Reply-To: $email" . PHP_EOL;$headers .= "MIME-Version: 1.0" . PHP_EOL;$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;
if(mail($address, $e_subject, $msg, $headers)) {
echo "<h1>Email wyslany.</h1>";
} else {
echo 'ERROR!';
}

KES
05-07-2013, 14:18
Jeżeli jest ci to potrzebne na stronę dla klienta zleć to komuś innemu. Jeżeli uczysz się to poczytaj o frameworku Joomla.

To co początek będzie ci niezbędne do tego co chcesz zrobić:
- klasa JFactory
- pobieranie wartości z posta/geta JFactory::getApplication()->input
- klasa JMail ( lecz wcześniej zapoznaj się z klasa JFactory )

to tak na początek, jeszcze mała wskazówka: ten kod:


/**tutaj linia 51 -> **/$address = $params->get(' email'); // <- zwróć uwagę że masz spację po apostrofie, to też może ( a nawet ) generuje błąd

Pobiera ci parametr z modułu o nazie ' email'.