[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Контроль полей в форме обратной связи
AntoX@
Добрового времени суток уважаемые форумчане и гуру PHP. Существует такая проблема, стоит СМС джумла в неё установлен компонент каталога авто. на странице детального просмотра информации об авто есть ссылка отправить другу, при нажатии на ссылку открывается форма с полями для заполнения
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);
}


Ну а потом просто делай проверку - если переменная существует то отправить другу , а если нет - то досвидос smile.gif

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@ написал(а):
Может все же посмотреть существующий код, и подсказать причину по которой непроисходит оброботка полей форм
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.