Dimasscus

[Выполнено] Передача url страницы в письме о заказе обратного звонка.

Рекомендуемые сообщения

Dimasscus    10

Здравствуйте. Сил моих больше нет:) поэтому  пишу на форум.

В простеньком модуле заказа обратного звонка для опенкарт 2 хотел настроить передачу url с которой собственно и заказан звонок.

в модуле всего три файла- контролер с полями, и 2 js/

В контролере добавил 

<input type='hidden' name='uri' value='" . $_SERVER['REQUEST_URI']. "'/> 

перед закрывающим тегом form

 

далее добавил функцию 

 

 function getUrl() { 

$url = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] : 'https://'.$_SERVER["SERVER_NAME"]; 

$url .= ( $_SERVER["SERVER_PORT"] != 80 ) ? ":".$_SERVER["SERVER_PORT"] : ""; 

$url .= $_SERVER["REQUEST_URI"]; 

return $url; 
 }  

после которой отправку в письмо 

if ($extra["uri"]) {
                $message .= "\n\nURI: " . $_SERVER['REQUEST_URI'];
        } 

в итоге в письме приходит адрес файла на сервере.  :)))))))))

 я в этом деле пока не особо разбираюсь. хотелось бы обратится за поддержкой- что я делаю не так.

если по делу сказать не чего- просьба не флудить. если кто то сможет объяснить понятно где моя ошибка- буду благодарен.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
markimax    1 380

1. Культура программирования ...

Вы где то видели в opencart использование массива $_SERVER ?

Нет. Такого нет. Используют $this->request->server

Так что забудьте $_SERVER в opencart

2. Посмотрите как это сделано в opencart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dimasscus    10

Марк спасибо. учту. где посмотреть в опенкарт ткни пожалуйста пальцем

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    822

Не знаю почему, но в 2-ке убрали, то что было в 1.5

 

Это к вопросу о

Вы где то видели в opencart использование массива $_SERVER ?

 

 

      public function __construct() {
        $_GET = $this->clean($_GET);
        $_POST = $this->clean($_POST);
        $_REQUEST = $this->clean($_REQUEST);
        $_COOKIE = $this->clean($_COOKIE);
        $_FILES = $this->clean($_FILES);
        $_SERVER = $this->clean($_SERVER);

 

 

Упс... (2.х)

	private function compress($data, $level = 0) {
		if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false)) {
			$encoding = 'gzip';
		}

		if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'x-gzip') !== false)) {
			$encoding = 'x-gzip';
		}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dimasscus    10

мне кажется то ячего то не учел просто. урл файла передается, значит срабатывает. но не правильно. или я не туда копаю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    822

Чтобы ответить , нужно видеть весь скрипт, а не только т о что вы нам показываете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dimasscus    10

Чтобы ответить , нужно видеть весь скрипт, а не только т о что вы нам показываете.

легко  :))

?php

// User settings

$to = "dimasscuss81@ukr.net";

$subject = "Перезвоните мне";

include "../../language/russian/common/callback.php";

//include "../../language/ukrainian/common/callback.php"; // не работает

// Include extra form fields and/or submitter data?

// false = do not include

$extra = array(

"form_subject" => true,

"form_cc" => true,

"ip" => true,

"uri" => true,

"user_agent" => true

);

// Process

$action = isset($_POST["action"]) ? $_POST["action"] : "";

if (empty($action)) {

// Send back the contact form HTML

$output = "

 

".$sendthis."

 

 

{C}

* ".$phonew."

";

if ($extra["form_subject"]) {

$output .= "

{C}

";

}

$output .= "

{C}

";

$output .= "

 

".$sendw."

{C}

 

";

echo $output;

}

else if ($action == "send") {

// Send the phone

// $name = isset($_POST["name"]) ? $_POST["name"] : "";

$phone = isset($_POST["phone"]) ? $_POST["phone"] : "";

//$subject = isset($_POST["subject"]) ? $_POST["subject"] : $subject;

// $message = isset($_POST["message"]) ? $_POST["message"] : "";

$uri = isset ($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : "";

$cc = isset($_POST["cc"]) ? $_POST["cc"] : "";

$token = isset($_POST["token"]) ? $_POST["token"] : "";

// make sure the token matches

if ($token === smcf_token($to)) {

smcf_send( $phone,$cc );

echo $ok;

}

else {

echo $erno;

}

}

function smcf_token($s) {

return md5("smcf-" . $s . date("WY"));

}

function smcf_filter($value) {

$pattern = array("/\n/","/\r/","/content-type:/i","/to:/i", "/from:/i", "/cc:/i");

$value = preg_replace($pattern, "", $value);

return $value;

}

function smcf_send( $phone, $cc) {

global $to, $extra;

// Filter and validate fields

//$name = smcf_filter($name);

//$subject = smcf_filter($subject);

$phone = smcf_filter($phone);

if (!smcf_validate_phone($phone)) {

$subject .= " Заказ звонка с сайта";

$message .= "\n\nНомер телефона: ".$phone;

$phone = $to;

$cc = 0; // do not CC "sender"

}

function getUrl() {

$url = @( $_SERVER["HTTPS"] != 'on' ) ? 'http://'.$_SERVER["SERVER_NAME"] : 'https://'.$_SERVER["SERVER_NAME"];

$url .= ( $_SERVER["SERVER_PORT"] != 80 ) ? ":".$_SERVER["SERVER_PORT"] : "";

$url .= $_SERVER["REQUEST_URI"];

return $url;

}

// Add additional info to the message

if ($extra["ip"]) {

$message .= "\n\nIP: " . $_SERVER["REMOTE_ADDR"];

}

if ($extra["uri"]) {

$message .= "\n\nURI: " . $_SERVER['REQUEST_URI'];

}

if ($extra["user_agent"]) {

$message .= "\n\nUSER AGENT: " . $_SERVER["HTTP_USER_AGENT"];

}

// Set and wordwrap message body

//$body = "Від: $name\n\n";

$body .= "Перезвоните мне: $message";

$body = wordwrap($body, 70);

// Build header

$headers = "From: $phone\n";

if ($cc == 1) {

$headers .= "Cc: $phone\n";

}

// UTF-8

// if (function_exists('mb_encode_mimeheader')) {

// $subject = mb_encode_mimeheader($subject, "UTF-8", "B", "\n");

// }

else {

// you need to enable mb_encode_mimeheader or risk

// getting phones that are not UTF-8 encoded

}

$headers .= "MIME-Version: 1.0\n";

$headers .= "Content-type: text/plain; charset=utf-8\n";

$headers .= "Content-Transfer-Encoding: quoted-printable\n";

// Send phone

@mail($to, $subject, $body, $headers) or

die('$die');

}

// Validate phone address format in case client-side validation "fails"

function smcf_validate_phone($phone) {

// Make sure there aren't multiple periods together

if (!preg_match("/^[0-9]{9,11}$/", $phone))

return false;

}

return true;

exit;

?>

 

 

а вот это js

jQuery(function ($) {

var contact = {

message: null,

init: function () {

$('.contact-btn').click(function (e) {

e.preventDefault();

$.get("catalog/controller/callback/callback.php", function(data){

$(data).modal({

closeHTML: "x",

position: ["15%",],

overlayId: 'contact-overlay',

containerId: 'contact-container',

onOpen: contact.open,

onShow: contact.show,

onClose: contact.close

});

});

});

},

open: function (dialog) {

/*

if ($.browser.mozilla) {

$('#contact-container .contact-button').css({

'padding-bottom': '2px'

});

}

if ($.browser.safari) {

$('#contact-container .contact-input').css({

'font-size': '.9em'

});

}

*/

var h = 170;

if ($('#contact-subject').length) {

h += 26;

}

if ($('#contact-cc').length) {

h += 22;

}

var title = $('#contact-container .contact-title').html();

//$('#contact-container .contact-title').html('Загрузка...

loading_1.gif

');

dialog.overlay.fadeIn(0, function () {

dialog.container.fadeIn(0, function () {

dialog.data.fadeIn(0, function () {

$('#contact-container .contact-content').animate({

height: h

}, function () {

$('#contact-container .contact-title').html(title);

$('#contact-container form').fadeIn(0, function () {

//$('#contact-container #contact-name').focus();

$('#contact-container .contact-cc').click(function () {

var cc = $('#contact-container #contact-cc');

cc.is(':checked') ? cc.attr('checked', '') : cc.attr('checked', 'checked');

});

/*

if ($.browser.msie && $.browser.version < 7) {

$('#contact-container .contact-button').each(function () {

if ($(this).css('backgroundImage').match(/^url[("']+(.*\.png)[)"']+$/i)) {

var src = RegExp.$1;

$(this).css({

backgroundImage: 'none',

filter: 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '", sizingMethod="crop")'

});

}

});

}

*/

});

});

});

});

});

},

show: function (dialog) {

$('#contact-container .contact-send').click(function (e) {

e.preventDefault();

if (contact.validate()) {

var msg = $('#contact-container .contact-message');

msg.fadeOut(function () {

msg.removeClass('contact-error').empty();

});

$('#contact-container .contact-title').html('Отправка...');

$('#contact-container form').fadeOut(0);

$('#contact-container .contact-content').animate({

height: '90px'

}, function () {

$('#contact-container .contact-loading').fadeIn(0, function () {

$.ajax({

url: 'catalog/controller/callback/callback.php',

data: $('#contact-container form').serialize() + '&action=send',

type: 'post',

cache: false,

dataType: 'html',

success: function (data) {

$('#contact-container .contact-loading').fadeOut(0, function () {

$('#contact-container .contact-title').html('Спасибо, вам скоро перезвонят!');

msg.html(data).fadeIn(0);

});

},

error: contact.error

});

});

});

}

else {

if ($('#contact-container .contact-message:visible').length > 0) {

var msg = $('#contact-container .contact-message div');

msg.fadeOut(0, function () {

msg.empty();

contact.showError();

msg.fadeIn(0);

});

}

else {

$('#contact-container .contact-message').animate({

height: '30px'

}, contact.showError);

}

}

});

},

close: function (dialog) {

$('#contact-container .contact-message').fadeOut();

$('#contact-container .contact-title').html('Приятных покупок!');

$('#contact-container form').fadeOut(0);

$('#contact-container .contact-content').animate({

height: 40

}, function () {

dialog.data.fadeOut(0, function () {

dialog.container.fadeOut(0, function () {

dialog.overlay.fadeOut(0, function () {

$.modal.close();

});

});

});

});

},

error: function (xhr) {

alert(xhr.statusText);

},

validate: function () {

contact.message = '';

if (!$('#contact-container #contact-name').val()) {

// contact.message += 'Заполните имя. ';

}

var phone = $('#contact-container #contact-phone').val();

if (!phone) {

contact.message += 'Введите телефон. ';

}

else {

if (!contact.validatephone(phone)) {

contact.message += 'Неверный телефон. ';

}

}

if (!$('#contact-container #contact-message').val()) {

// contact.message += 'Введите сообщение. ';

}

if (contact.message.length > 0) {

return false;

}

else {

return true;

}

},

validatephone: function (phone) {

var at = phone.lastIndexOf("@");

if (!/^[0-9]{10,10}$/.test(phone))

return false;

return true;

},

showError: function () {

$('#contact-container .contact-message')

.html($('

 

').append(contact.message))

.fadeIn(0);

}

};

contact.init();

});

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dimasscus    10

че то контролер не скопипастился :)

 

так наверно будет правильнее

callback.php

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
chukcha    822

Печалько..

Читайте маны

 

1. Это не контроллер, а приблуда... (отключенная функция mail) или ... может очень хорошо обеспечить неизвестную головную боль

 

$message .= "\n\nURI: " . get_url();

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dimasscus    10

в данный момент в письме передается урл файла контролера. 

сколько будет стоить доработка чтобы отсылался урл?

может кто то сделать на платной основе?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dimasscus    10

в данный момент в письме передается урл файла контролера. 

сколько будет стоить доработка чтобы отсылался урл?

может кто то сделать на платной основе?

 

 

если возможно- администрация перенесите в платные доработки тему чтобы не создавать новую.

спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Dimasscus    10

задача решена.

спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу