1 имя*
2 мыло*
3 тел
4.....
5....
кнопка отправить
поля отмеченые звездочкой обязательные для заполнения и контроль за их заполнением осуществляется файлом components\com_eicosshina\controllers\contact.php
но что то он гад совсем нехочет выполнять свои функции так как форма успешно отправляется с пустыми полями
вот код формы
<?php
defined('_JEXEC') or die ('No Acces to this file!');
$vehicle = $this->items->makename.' '.$this->items->model.' '.$this->items->modeltype;
$app =& JFactory::getApplication();
$pathway =& $app->getPathway();
$pathway->addItem(JText::_( 'CATEGORIES' ), 'index.php?option=com_eicosshina&view=categories');
$pathway->addItem($this->items->catname, 'index.php?option=com_eicosshina&view=category&id='.$this->items->catid);
$pathway->addItem($vehicle, 'index.php?option=com_eicosshina&view=detail&id='.$this->items->carid);
$pathway->addItem(JText::_( 'SEND TO FRIEND' ));
?>
<h2 class="contentheading">
<?php echo JText::_( 'ANBIETER KONTAKT' ); ?> </h2>
<?php echo JText::_( 'WEITERE INFOS' ); ?> <?php echo $this->items->makename; ?> <?php echo $this->items->model; ?> <?php echo $this->items->modeltype; ?> <br><br>
<?php echo JText::_( 'EXPLANATION' ); ?><br /><br />
<form action = "index.php?option=com_eicosshina&controller=contact" method="POST" name="adminForm" id="adminForm">
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<tr>
<td width="23%"><?php echo JText::_( 'YOUR NAME' ); ?></td>
<td width="2%">:</td>
<td width="75%"><input name="name" type="text" id="name" size="30" class="inputbox" />
*</td>
</tr>
<tr>
<td><?php echo JText::_( 'YOUR EMAIL' ); ?></td>
<td>:</td>
<td><input name="email" type="text" id="email" size="30" class="inputbox" />
*</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><?php echo JText::_( 'TELEFON' ); ?></td>
<td>:</td>
<td><input name="friendname" type="text" id="friendname" size="30" class="inputbox" />
*</td>
</tr>
<tr>
<td><?php echo JText::_( 'PLZ/Ort' ); ?></td>
<td>:</td>
<td><input name="friendemail" type="text" id="friendemail" size="30" class="inputbox" />
*</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td align="left" valign="top"><?php echo JText::_( 'COMMENTS' ); ?></td>
<td align="left" valign="top">:</td>
<td align="left" valign="top"><textarea name="comments" id="comments" cols="45" rows="4" class="inputbox"></textarea></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="hidden" name="task" value="contact" />
<input type="hidden" name="controller" value="contact" />
<input type="hidden" name="id" value="<?php echo $this->items->carid; ?>" />
<input type="hidden" name="vehicle" value="<?php echo $vehicle; ?>" />
All fields with a * are required!</td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="button" id="button" value="<?php echo JText::_( 'SEND' ); ?>" class="button" /></td>
</tr>
</table>
</form>
а вот код такого самого контролера
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport('joomla.application.component.controller');
class eicosshinaControllerContact extends JController {
function contact() {
global $option, $mainframe;
## Initialize some variables
$db = & JFactory::getDBO();
$SiteName = $mainframe->getCfg('sitename');
$id = JRequest::getInt( 'id', 0, 'post' );
$name = JRequest::getVar( 'name', '', 'post' );
$email = JRequest::getVar( 'email', '', 'post' );
$friendmail = JRequest::getVar( 'friendemail', '', 'post' );
$friendname = JRequest::getVar( 'friendname', '', 'post' );
$comments = JRequest::getVar( 'comments', '', 'post' );
$vehicle = JRequest::getVar( 'vehicle', '', 'post' );
if (! preg_match('~^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$~i', $email) ) {
$msg = JText::_( 'EMAIL NOT CORRECT');
$link = JRoute::_('index.php?option=com_eicosshina&view=contact&id='.$id);
$this->setRedirect($link, $msg);
}
if (! preg_match('~^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$~i', $friendmail) ) {
$msg = JText::_( 'FMAIL NOT CORRECT');
$link = JRoute::_('index.php?option=com_eicosshina&view=contact&id='.$id);
$this->setRedirect($link, $msg);
}
if ( $name == '' && $friendname == '' ) {
$msg = JText::_( 'One of the required fields is not filled.');
$link = JRoute::_('index.php?option=com_eicosshina&view=contact&id='.$id);
$this->setRedirect($link, $msg);
}
## OK, all fields has been checked now! Let's send it now!
## Opening the email template!
$fp = fopen('components/com_eicosshina/assets/contact.txt','r');
$message = fread($fp,filesize('components/com_eicosshina/assets/contact.txt'));
fclose($fp);
$link = JURI::base()."index.php?option=com_eicosshina&view=detail&id=".$id." ";
$MailFrom = $mainframe->getCfg('mailfrom');
$FromName = $mainframe->getCfg('fromname');
$site = JURI::base();
$message = str_replace('%%NAME%%',$name, $message);
$message = str_replace('%%FRIENDNAME%%',$friendname, $message);
$message = str_replace('%%VEHICLE%%',$vehicle, $message);
$message = str_replace('%%LINK%%',$link, $message);
$message = str_replace('%%SITE_TITLE%%',$FromName ,$message);
$message = str_replace('%%SITE_URL%%',$site ,$message);
$message = str_replace('%%COMMENT%%',$comments ,$message);
$subject = JText::_( 'SUBJECT');
$mail = JFactory::getMailer();
$mail->addRecipient( $email );
$mail->addRecipient( $friendmail );
$mail->setSender( array( $email, $name ) );
$mail->setSubject( $FromName.': '.$subject );
$mail->setBody( $message );
$sent = $mail->Send();
## Mail has been sent!
$msg = JText::_( 'MAIL SENT');
$link = JRoute::_('index.php?option=com_eicosshina&view=detail&id='.$id);
$this->setRedirect($link, $msg);
}
}
?>
Что здесь ни так, подскажите пожалуйста!!!
Спустя 1 час, 34 минуты, 30 секунд (30.03.2010 - 23:59) igor717 написал(а):
короче весь этот код смотреть не буду...
Сначала берешь и удаляешь пробелы с обоих сторон у переменной,которая прилетела в обработчик:
Затем проверяешь пустая ли она, если пустая - удаляешь:
Ну а потом просто делай проверку - если переменная существует то отправить другу , а если нет - то досвидос
Вот такой вот принце, хотя в идеале все это конечно не так...
Сначала берешь и удаляешь пробелы с обоих сторон у переменной,которая прилетела в обработчик:
$abc = trim($abc);
Затем проверяешь пустая ли она, если пустая - удаляешь:
if ($abc == '')
{
unset ($abc);
}
Ну а потом просто делай проверку - если переменная существует то отправить другу , а если нет - то досвидос
if (isset ($abc))
{
отправить другу
}
else
{
досвидос
}
Вот такой вот принце, хотя в идеале все это конечно не так...
Спустя 22 минуты, 2 секунды (31.03.2010 - 00:21) AntoX@ написал(а):
Спасибо конечно за совет!!!
Но если быть честным, из этого совета я совсем ничего не понял!!!
Но если быть честным, из этого совета я совсем ничего не понял!!!
Спустя 8 минут, 3 секунды (31.03.2010 - 00:29) igor717 написал(а):
Просто тогда человек если решит, что не обязательно заполнять поля не пройдет эту проверку вот и все!!!
Это самое простое вообще, что можно сделать.
Это самое простое вообще, что можно сделать.
Спустя 11 часов, 7 минут, 9 секунд (31.03.2010 - 11:36) AntoX@ написал(а):
Может все же посмотреть существующий код, и подсказать причину по которой непроисходит оброботка полей форм