За последние 24 часа нас посетил 99431 программист и 5524 робота. Сейчас ищут 1483 программиста ...

Потерялось!!!

Тема в разделе "PHP для новичков", создана пользователем VampiR_WAR, 11 июл 2011.

  1. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Всем привет. Подскажите пожалуйста, куда могло потеряться $product->data['products_id'] $product->data['products_name']

    И как можно грамотно отследить такие вещи?
    PHP:
    1. <?php
    2. include ('includes/application_top.php');
    3.  
    4. $product_info_query = vam_db_query("select * FROM ".TABLE_PRODUCTS." p, ".TABLE_PRODUCTS_DESCRIPTION." pd where p.products_status = '1' and p.products_id = '".(int)$_GET['products_id']."' and pd.products_id = p.products_id and pd.language_id = '".(int)$_SESSION['languages_id']."'");
    5. $product_info = vam_db_fetch_array($product_info_query);
    6.  
    7. // include needed functions
    8. require_once(DIR_FS_INC.'vam_validate_email.inc.php');
    9. require_once (DIR_FS_INC.'vam_image_button.inc.php');
    10.  
    11. // create smarty elements
    12. $vamTemplate = new vamTemplate;
    13.  
    14. $vamTemplate->assign('language', $_SESSION['language']);
    15.  
    16. if (isset ($_POST['action']) && ($_POST['action'] == 'process')) {
    17.  
    18.     $error = false;
    19.  
    20.     if (isset($_SESSION['customer_id'])) {
    21.         $firstname = $_SESSION['customer_first_name'];
    22.         $lastname = $_SESSION['customer_last_name'];
    23.         $email_address =$_SESSION['customer_email_address'];
    24.         $message = vam_db_input($_POST['message_body']);
    25.         $to_email_address = $email_address;
    26.         $to_name = $firstname .' '. $lastname;
    27.   } else {    
    28.         $firstname = vam_db_input($_POST['firstname']);
    29.         $lastname = vam_db_input($_POST['lastname']);
    30.         $email_address = vam_db_input($_POST['email_address']);
    31.         $message = vam_db_input($_POST['message_body']);
    32.         $to_email_address = $email_address;
    33.         $to_name = $firstname .' '. $lastname;
    34.     }
    35.    
    36.     if (strlen($firstname) < ENTRY_FIRST_NAME_MIN_LENGTH) {
    37.         $error = true;
    38.         $messageStack->add('ask_a_question', ENTRY_FIRST_NAME_ERROR);
    39.     }
    40.  
    41.     if (strlen($lastname) < ENTRY_LAST_NAME_MIN_LENGTH) {
    42.         $error = true;
    43.         $messageStack->add('ask_a_question', ENTRY_LAST_NAME_ERROR);
    44.     }
    45.  
    46.     if (strlen($email_address) < ENTRY_EMAIL_ADDRESS_MIN_LENGTH) {
    47.         $error = true;
    48.         $messageStack->add('ask_a_question', ENTRY_EMAIL_ADDRESS_ERROR);
    49.     }
    50.     elseif (vam_validate_email($email_address) == false) {
    51.         $error = true;
    52.         $messageStack->add('ask_a_question', ENTRY_EMAIL_ADDRESS_ERROR);
    53.     }
    54.  
    55.     if (($_POST['captcha'] != $_SESSION['captcha_keystring'])) {
    56.         $error = true;
    57.         $messageStack->add('ask_a_question', TEXT_WRONG_CODE);
    58.     }
    59.  
    60.     if ($message == '') {
    61.         $error = true;
    62.         $messageStack->add('ask_a_question', TEXT_MESSAGE_ERROR);
    63.     }
    64.  
    65.     if ($messageStack->size('ask_a_question') > 0) {
    66. $vamTemplate->assign('error', $messageStack->output('ask_a_question'));
    67.     }
    68.  
    69.         if ($error == false) {
    70.         $vamTemplate->assign('PRODUCTS_NAME', $product_info['products_name']);
    71.         $vamTemplate->assign('PRODUCTS_MODEL', $product_info['products_model']);
    72.         $vamTemplate->assign('TEXT_MESSAGE', $_POST['message_body']);
    73.         $vamTemplate->assign('TEXT_FIRSTNAME', $firstname);
    74.         $vamTemplate->assign('TEXT_LASTNAME', $lastname);
    75.         $vamTemplate->assign('TEXT_EMAIL', $email_address);
    76.         $vamTemplate->assign('TEXT_EMAIL_SUCCESSFUL', sprintf(TEXT_EMAIL_SUCCESSFUL_SENT, $product_info['products_name']));
    77.         $vamTemplate->assign('PRODUCT_LINK', vam_href_link(FILENAME_PRODUCT_INFO, vam_product_link($product->data['products_id'], $product->data['products_name'])));
    78.         $vamTemplate->caching = 0;
    79.         $html_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/ask_a_question.html');
    80.         $vamTemplate->caching = 0;
    81.         $txt_mail = $vamTemplate->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/ask_a_question.txt');
    82.     // send mail to admin
    83.     vam_php_mail($to_email_address, EMAIL_SUPPORT_NAME, EMAIL_SUPPORT_ADDRESS, STORE_NAME, EMAIL_SUPPORT_FORWARDING_STRING, $to_email_address, $to_name, '', '', NAVBAR_TITLE_ASK, $html_mail, $txt_mail, $product_info['products_name']);
    84.     // send mail to customer
    85.     vam_php_mail(EMAIL_SUPPORT_ADDRESS, EMAIL_SUPPORT_NAME, $to_email_address, $to_name, EMAIL_SUPPORT_FORWARDING_STRING, EMAIL_SUPPORT_REPLY_ADDRESS, EMAIL_SUPPORT_REPLY_ADDRESS_NAME, '', '', NAVBAR_TITLE_ASK, $html_mail, $txt_mail);
    86.  
    87. if (!CacheCheck()) {
    88.     $vamTemplate->caching = 0;
    89.     $vamTemplate->display(CURRENT_TEMPLATE.'/module/ask_a_question_ok.html');
    90. } else {
    91.     $vamTemplate->caching = 1;
    92.     $vamTemplate->cache_lifetime = CACHE_LIFETIME;
    93.     $vamTemplate->cache_modified_check = CACHE_CHECK;
    94.     $cache_id = $_SESSION['language'];
    95.     $vamTemplate->display(CURRENT_TEMPLATE.'/module/ask_a_question_ok.html', $cache_id);
    96.         }
    97.     }else{
    98. $vamTemplate->assign('PRODUCTS_NAME', $product_info['products_name']);
    99. $vamTemplate->assign('PRODUCTS_MODEL', $product_info['products_model']);
    100.  
    101. $vamTemplate->assign('FORM_ACTION', vam_draw_form('ask_a_question', vam_href_link(FILENAME_ASK_PRODUCT_QUESTION)).vam_draw_hidden_field('action', 'process').vam_draw_hidden_field('products_id', $_GET['products_id']));
    102. $vamTemplate->assign('CAPTCHA_IMG', vam_image(HTTP_SERVER . DIR_WS_CATALOG . FILENAME_DISPLAY_CAPTCHA, 'captcha'));    
    103. $vamTemplate->assign('CAPTCHA_INPUT', vam_draw_input_field('captcha', '', 'size="6" maxlength="6"', 'text', false));
    104.  
    105.         if (isset($_SESSION['customer_id'])) {
    106.         //-> registered user********************************************************
    107. $vamTemplate->assign('INPUT_FIRSTNAME', $_SESSION['customer_first_name']);
    108. $vamTemplate->assign('INPUT_LASTNAME', $_SESSION['customer_last_name']);
    109. $vamTemplate->assign('INPUT_EMAIL', $_SESSION['customer_email_address']);
    110.         }else{
    111.         //-> guest *********************************************************  
    112. $vamTemplate->assign('INPUT_FIRSTNAME', vam_draw_input_fieldNote(array ('name' => 'firstname', 'text' => '&nbsp;'. (vam_not_null(ENTRY_FIRST_NAME_TEXT) ? '<span class="inputRequirement">'.ENTRY_FIRST_NAME_TEXT.'</span>' : ''))));
    113. $vamTemplate->assign('INPUT_LASTNAME', vam_draw_input_fieldNote(array ('name' => 'lastname', 'text' => '&nbsp;'. (vam_not_null(ENTRY_LAST_NAME_TEXT) ? '<span class="inputRequirement">'.ENTRY_LAST_NAME_TEXT.'</span>' : ''))));
    114. $vamTemplate->assign('INPUT_EMAIL', vam_draw_input_fieldNote(array ('name' => 'email_address', 'text' => '&nbsp;'. (vam_not_null(ENTRY_EMAIL_ADDRESS_TEXT) ? '<span class="inputRequirement">'.ENTRY_EMAIL_ADDRESS_TEXT.'</span>' : ''))));
    115.         }
    116. $vamTemplate->assign('INPUT_TEXT', vam_draw_textarea_field('message_body', 'soft', 50, 15, stripslashes($_POST['message_body'])));
    117. $vamTemplate->assign('FORM_END', '</form>');
    118. $vamTemplate->assign('BUTTON_SUBMIT', vam_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE));
    119. $vamTemplate->assign('BUTTON_CONTINUE', '<a href="javascript:window.close()">'.vam_image_button('button_back.gif', IMAGE_BUTTON_BACK).'</a>');
    120.  
    121. // set cache ID
    122.  if (!CacheCheck()) {
    123.     $vamTemplate->caching = 0;
    124.     $vamTemplate->display(CURRENT_TEMPLATE.'/module/ask_a_question.html');
    125. } else {
    126.     $vamTemplate->caching = 1;
    127.     $vamTemplate->cache_lifetime = CACHE_LIFETIME;
    128.     $vamTemplate->cache_modified_check = CACHE_CHECK;
    129.     $cache_id = $_SESSION['language'];
    130.     $vamTemplate->display(CURRENT_TEMPLATE.'/module/ask_a_question.html', $cache_id);
    131.     }
    132. }
    133. }else{
    134.  
    135. include ('includes/header.php');
    136.  
    137. $breadcrumb->add(NAVBAR_TITLE_ASK, vam_href_link(FILENAME_ASK_PRODUCT_QUESTION, 'products_id='.$product->data['products_id'], 'SSL'));
    138.  
    139. $vamTemplate->assign('PRODUCTS_NAME', $product_info['products_name']);
    140. $vamTemplate->assign('PRODUCTS_MODEL', $product_info['products_model']);
    141. $vamTemplate->assign('CAPTCHA_IMG', vam_image(HTTP_SERVER . DIR_WS_CATALOG . FILENAME_DISPLAY_CAPTCHA, 'captcha'));    
    142. $vamTemplate->assign('CAPTCHA_INPUT', vam_draw_input_field('captcha', '', 'size="6" maxlength="6"', 'text', false));
    143.  
    144. $vamTemplate->assign('FORM_ACTION', vam_draw_form('ask_a_question', vam_href_link(FILENAME_ASK_PRODUCT_QUESTION)).vam_draw_hidden_field('action', 'process').vam_draw_hidden_field('products_id', $_GET['products_id']));
    145.         if (isset($_SESSION['customer_id'])) {
    146.         //-> registered user********************************************************
    147. $vamTemplate->assign('INPUT_FIRSTNAME', $_SESSION['customer_first_name']);
    148. $vamTemplate->assign('INPUT_LASTNAME', $_SESSION['customer_last_name']);
    149. $vamTemplate->assign('INPUT_EMAIL', $_SESSION['customer_email_address']);
    150.         }else{
    151.         //-> guest *********************************************************  
    152. $vamTemplate->assign('INPUT_FIRSTNAME', vam_draw_input_fieldNote(array ('name' => 'firstname', 'text' => '&nbsp;'. (vam_not_null(ENTRY_FIRST_NAME_TEXT) ? '<span class="inputRequirement">'.ENTRY_FIRST_NAME_TEXT.'</span>' : ''))));
    153. $vamTemplate->assign('INPUT_LASTNAME', vam_draw_input_fieldNote(array ('name' => 'lastname', 'text' => '&nbsp;'. (vam_not_null(ENTRY_LAST_NAME_TEXT) ? '<span class="inputRequirement">'.ENTRY_LAST_NAME_TEXT.'</span>' : ''))));
    154. $vamTemplate->assign('INPUT_EMAIL', vam_draw_input_fieldNote(array ('name' => 'email_address', 'text' => '&nbsp;'. (vam_not_null(ENTRY_EMAIL_ADDRESS_TEXT) ? '<span class="inputRequirement">'.ENTRY_EMAIL_ADDRESS_TEXT.'</span>' : ''))));
    155.         }
    156. $vamTemplate->assign('INPUT_TEXT', vam_draw_textarea_field('message_body', 'soft', 50, 15, stripslashes($_POST['message_body'])));
    157. $vamTemplate->assign('FORM_END', '</form>');
    158. $vamTemplate->assign('BUTTON_SUBMIT', vam_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE));
    159. $vamTemplate->assign('BUTTON_CONTINUE', '<a href="javascript:window.close()">'.vam_image_button('button_back.gif', IMAGE_BUTTON_BACK).'</a>');
    160.  
    161.     $vamTemplate->caching = 0;
    162.     $vamTemplate->display(CURRENT_TEMPLATE.'/module/ask_a_question.html');
    163. }
    164. ?>
     
  2. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Шутку нашел похоже.
    $_GET['products_id'] должен содержать параметр, который отображается в url типа ask_a_question.php?products_id=10031
    Но тут вступает ЧПУ и ссылка имеет вид /ask_a_question.php/products_id=10031
    Скажите может ли это быть причиной? Не заблуждаюсь ли я в очередной раз? И как такое можно исправить наименьшими усилиями?
     
  3. nislova

    nislova Активный пользователь

    С нами с:
    8 май 2011
    Сообщения:
    56
    Симпатии:
    0
    А в .htaccess что на этот счет прописано?
     
  4. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^handy-craft.ru$ [OR]
    RewriteCond %{HTTP_HOST} ^www.handy-craft.ru$
    RewriteRule ^/?$ "http\:\/\/www\.handi\-craft\.ru" [R=301,L]
     
  5. nislova

    nislova Активный пользователь

    С нами с:
    8 май 2011
    Сообщения:
    56
    Симпатии:
    0
    Нет, а ЧПУ сами как организуются?
     
  6. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Я честно говоря пока не разобрался. Это переделка движка osCommerce.
     
  7. nislova

    nislova Активный пользователь

    С нами с:
    8 май 2011
    Сообщения:
    56
    Симпатии:
    0
    Вряд ли в ЧПУ проблема - крутите код, организуйте дебаггинг, отслеживайте. По Вашему коду ничего не понятно, да и разбираться лень. Может, кому-то и не лень. :)[/quote]
     
  8. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Во скажите пожалуйста... Get передает через url на сколько я знаю. Если стоит ЧПУ, то url меняется? Тоесть вместо index.php?id=1121 он выдает index.php/id/1121 , и соответсвенно параметр id = 1121 не передается... Может можно загнать id=1121 в переменную?
     
  9. nislova

    nislova Активный пользователь

    С нами с:
    8 май 2011
    Сообщения:
    56
    Симпатии:
    0
    Если настроен ЧПУ - урл превращается в удобочитаемый, если он при этом настроен по-человечески, то и не гробит query.

    Можно и в переменную загнать - только зачем извращаться?
     
  10. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Ну вообщем то проблема в том что не передается параметр. В принципе я другого обьяснения не нахожу. В базу лезем выбирая то что находится под id товара, а id товара передается GET, точнее он не передается...
     
  11. nislova

    nislova Активный пользователь

    С нами с:
    8 май 2011
    Сообщения:
    56
    Симпатии:
    0
    Тогда ищите где в админке ЧПУ крутятся, публикуйте код.
     
  12. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    для начала print_R($_GET);
     
  13. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Пробовал выводить
    echo $_GET['products_id'];
    Пусто.
    Поэтому
    and p.products_id = '".(int)$_GET['products_id'].
    Не находит в базе данных.
     
  14. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    вот теперь ковыряй чпу и смотри почему не передает айди в гет
     
  15. VampiR_WAR

    VampiR_WAR Активный пользователь

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Подскажите как сделать что бы ссылку не коверкал?!
    ask_a_question.php?products_id=10031 Как без ЧПУ
    ask_a_question.php/products_id=10031 ЧПУ

    А то не могу понять как это работает((





    RewriteEngine On
    RewriteBase /

    RewriteRule ^product_reviews_write\.php\/info\/p(.*)_.*\.html product_reviews_write\.php\?products_id=$1 [L]
    RewriteRule ^product_reviews_write\.php\/action\/process\/info\/p([0-9]*)_.*\.html product_reviews_write\.php\?action=process\&products_id=$1 [L]

    RewriteRule ^product_info\.php\/info\/p(.*)_.*\/action\/add_product product_info\.php\?products_id=$1\&action=add_product\ [L]
    RewriteRule ^shopping_cart\.php\/products_id\/([0-9]*)\/info\/p([0-9]*)_.*\.html shopping_cart\.php\?products_id=$1 [L]

    RewriteRule ^(product_info|index|shop_content|news|faq|articles|article_info).php(.*)$ redirector.php [L]

    RewriteRule ^.*\.gif|\.jpg|\.png|\.css|\.php|\.js$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*).html(.*)$ manager.php [L]