Jump to content
  • 0

Форумчане помогите с кодом пожалуйста)


vetals
 Share

Question

На сайте есть форма заявки с 1 полем (введите ваш email) и кнопкой "отправить"

 

Вот мой код в файле index:

 

<div id="form_container">

<p style="font-size:24px; color:#FFF; position:relative; top:50px; margin:0 0 0 335px; text-align:center; width:300px;">
          
           <br/> Пожалуйста, введите <br/> Ваш e-mail и мы<br/>сразу начнем работу:)</p>
 
        <div id="forma_1">
 <form method="post" action="action.php">  <input id="form_text" type="text" name="send_phone" placeholder="Ваш Email" class=”required” required="required"/> 
<input type="submit" name="ok1" value="" class="ok"/></form></p>
        </div>
    </div>
</div>
 
Нужно сделать чтобы на почту приходило письмо с меткой ( например, заказ1 или заказ10 - чтобы я мог различить)
Нашел код который думаю можно вставить он здесь http://htmlbook.ru/samhtml5/formy/skrytoe-pole
Пытался сам вставлять код но ничего не получилось(
Может кто подскажет как решить эту проблему?
Буду очень благодарен
Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Ввод скрытого поля добавит новую информацию в запрос, который идет в  action.php  и который без настройки это новое поле  не увидит. Нужно добавить метку еще и в функцию формирования самого сообщения.

Edited by bryknyk
Link to comment
Share on other sites

  • 0

Ввод скрытого поля добавит новую информацию в запрос, который идет в  action.php  и который без настройки это новое поле  не увидит. Нужно добавить метку еще и в функцию формирования самого сообщения.

подскажите а как это сделать? или какую-нибудь инфу по этой теме? буду вам благодарен

Link to comment
Share on other sites

  • 0

Если у вас сайт стоит на какой-то CMS - то просто скажите на какой и какой модуль. Если нет, то нужно посмотреть, что в файле action.php Разместите под спойлер (т.к. открытым текстом неудобно читать тему), но не в коем случае НЕ УПОМИНАЙТЕ адрес своего сайта или другую информацию (о чем сайт, ключевые фразы и т.п.) Если  там будет уязвимость, то кто-нибудь плохой может быстро этим воспользоваться.

Edited by bryknyk
Link to comment
Share on other sites

  • 0

Если у вас сайт стоит на какой-то CMS - то просто скажите на какой и какой модуль. Если нет, то нужно посмотреть, что в файле action.php Разместите под спойлер (т.к. открытым текстом неудобно читать тему), но не в коем случае НЕ УПОМИНАЙТЕ адрес своего сайта или другую информацию (о чем сайт, ключевые фразы и т.п.) Если  там будет уязвимость, то кто-нибудь плохой может быстро этим воспользоваться.

Cайт - обычный лендинг - 1 страница.
 
<!DOCTYPE html>
<html class="no-js" lang="ru" style="height: 100%">
 
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>********</title>
</head>
<body style="height: 100%">
<?php
error_reporting(E_ALL);
require_once( 'mandrill/Mandrill.php' );
 
function mandrill_mail($message){
if(is_array($message)&&isset($message['to'])){
try{
$mandrill = new Mandrill();
return $mandrill->messages->send($message, false, NULL, NULL);
}catch(Mandrill_Error $e) {
       // Mandrill errors are thrown as exceptions
       echo 'A mandrill error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
       // A mandrill error occurred: Mandrill_Unknown_Subaccount - No subaccount exists with the id 'customer-123'
       return false;
            }
 
}
}
 
function output_err($num)
{
    echo '<div class="error-message-empty">Имя и телефон обязательные поля.</div>';
    exit();
}
function complete_mail() {
        header('Content-Type: charset=utf-8');
        $title = substr(htmlspecialchars(trim($_POST['send_name'])), 0, 1000);
        $mess =  substr(htmlspecialchars(trim($_POST['send_phone'])), 0, 1000);
        $str = "<strong>Имя - </strong>" . $title . ", <strong>Email - </strong>" . $mess . "<br />";
        #final_str = clearstr($str);
        $headers = 'From: Admin <>' . "\r\n";
        $headers .= "Content-type: text/html; charset=\"utf-8\"";
$msg = array(
'html' => $str,
                'subject' => $title,
                    'from_email' => '',
                    'from_name' => 'Admin',
                    'to' => array(
                                array(
                                        'email' => '',
                                        'name' => '',
                                        'type' => 'to'
                                    )
                            ),
                    'headers' => array(),
                    'important' => false,
                    'track_opens' => null,
                    'track_clicks' => null,
                    'auto_text' => true,
                    'auto_html' => null,
                    'inline_css' => null,
                    'url_strip_qs' => null,
                    'preserve_recipients' => false,
                    'view_content_link' => null,
                    'tracking_domain' => null,
                    'signing_domain' => null,
                    'return_path_domain' => null,
                    'merge' => true,
);
 
        $mail_result = mandrill_mail($msg);
}
 
function clearstr($string){
    $string = str_replace(' ', '-', $string);
    $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);
    return preg_replace('/-+/', '-', $string);
}
 
complete_mail();
 
 
if (isset($_POST['submit'])) complete_mail();
?>
<div class="preim" style="height: 100%;background-repeat: repeat;">
  <p class="center" style="margin: 500px">Ожидайте, я с Вами свяжусь.</p>
</div>
</body>
</html>

 

проверкой

 $hidden = "";if(isset($_POST["hidden"]) AND $_POST["hidden"] == "чему то") {        $hidden = "что то";}    

попробую -спасибо

Edited by vetals
Link to comment
Share on other sites

  • 0

В следующий раз - удаляйте адрес почты из кода, а лучше и сейчас измените сообщение. Код пойдет в поисковики, а автоматические собиратели адресов скушают Ваш адрес.

——————————————

error_reporting(E_ALL);

эта строка выводит ошибки. В готовом сайте такое недопустимо. Нужно error_reporting(0); Только для отладки он включается.

complete_mail();

запускает обработку.... хм он перекрывает следующее за ним условие. Вероятно, т.к. по нижеследующей причине Ваш скрипт не работал - Вы включили её перед:

if (isset($_POST['submit'])) complete_mail();

скрипт ждет от Вас наличия чего-нибудь в запросе ключа 'submit'. Соответственно, <input type="submit" name="ok1" value="" class="ok"/></form></p> Даст что-то в $_POST['ok1'] А так как ждет сабмит, то ничего не заработает. Либо изменить поле на submit либо изменить if (isset($_POST['ok1'])) но первый вариант правилен т.к. Вы пользуетесь кодом и не должны по-сути его менять. Так что включение и изменение логики не совсем корректно, имхо...

$title = substr(htmlspecialchars(trim($_POST['send_name'])), 0, 1000);

А вот это ждет от вашего кода ключа send_name, которого у вас нет. И если Вы добавите <input id="" type="text" name="send_name"  то он появится. Мне кажется, это решает Вашу проблему т.к. имя направляется в тему. Но если Вы не хотите дополнительного поля для формы, то можно добавить скрытое, например,  <input id="" type="hidden" name="send_name" value="Order"

 

Но учтите, что  можно передать вашему скрипту, например...  value="ctobvitamvsenazarplatuzili" и в любом случае - от включится в емаил. Скрипт помещает значение send_name в почту и его можно изменить при отправке... скрытое поле ведь можно просмотреть в исходном коде страницы.

Edited by bryknyk
Link to comment
Share on other sites

  • 0

Не понял ? На сайте вообще нельзя нигде почту указывать ?

У меня магазинчик есть небольшой на OpenCart так там на главной странице e-mail.

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

В следующий раз - удаляйте адрес почты из кода, а лучше и сейчас измените сообщение. Код пойдет в поисковики, а автоматические собиратели адресов скушают Ваш адрес.

——————————————

error_reporting(E_ALL);

эта строка выводит ошибки. В готовом сайте такое недопустимо. Нужно error_reporting(0); Только для отладки он включается.

complete_mail();

запускает обработку.... хм он перекрывает следующее за ним условие. Вероятно, т.к. по нижеследующей причине Ваш скрипт не работал - Вы включили её перед:

if (isset($_POST['submit'])) complete_mail();

скрипт ждет от Вас наличия чего-нибудь в запросе ключа 'submit'. Соответственно, <input type="submit" name="ok1" value="" class="ok"/></form></p> Даст что-то в $_POST['ok1'] А так как ждет сабмит, то ничего не заработает. Либо изменить поле на submit либо изменить if (isset($_POST['ok1'])) но первый вариант правилен т.к. Вы пользуетесь кодом и не должны по-сути его менять. Так что включение и изменение логики не совсем корректно, имхо...

$title = substr(htmlspecialchars(trim($_POST['send_name'])), 0, 1000);

А вот это ждет от вашего кода ключа send_name, которого у вас нет. И если Вы добавите <input id="" type="text" name="send_name"  то он появится. Мне кажется, это решает Вашу проблему т.к. имя направляется в тему. Но если Вы не хотите дополнительного поля для формы, то можно добавить скрытое, например,  <input id="" type="hidden" name="send_name" value="Order"

 

Но учтите, что  можно передать вашему скрипту, например...  value="ctobvitamvsenazarplatuzili" и в любом случае - от включится в емаил. Скрипт помещает значение send_name в почту и его можно изменить при отправке... скрытое поле ведь можно просмотреть в исходном коде страницы.

спасибо тебе большое! буду пробовать! думаю что-то получится)

Link to comment
Share on other sites

  • 0

В следующий раз - удаляйте адрес почты из кода, а лучше и сейчас измените сообщение. Код пойдет в поисковики, а автоматические собиратели адресов скушают Ваш адрес.

——————————————

error_reporting(E_ALL);

эта строка выводит ошибки. В готовом сайте такое недопустимо. Нужно error_reporting(0); Только для отладки он включается.

complete_mail();

запускает обработку.... хм он перекрывает следующее за ним условие. Вероятно, т.к. по нижеследующей причине Ваш скрипт не работал - Вы включили её перед:

if (isset($_POST['submit'])) complete_mail();

скрипт ждет от Вас наличия чего-нибудь в запросе ключа 'submit'. Соответственно, <input type="submit" name="ok1" value="" class="ok"/></form></p> Даст что-то в $_POST['ok1'] А так как ждет сабмит, то ничего не заработает. Либо изменить поле на submit либо изменить if (isset($_POST['ok1'])) но первый вариант правилен т.к. Вы пользуетесь кодом и не должны по-сути его менять. Так что включение и изменение логики не совсем корректно, имхо...

$title = substr(htmlspecialchars(trim($_POST['send_name'])), 0, 1000);

А вот это ждет от вашего кода ключа send_name, которого у вас нет. И если Вы добавите <input id="" type="text" name="send_name"  то он появится. Мне кажется, это решает Вашу проблему т.к. имя направляется в тему. Но если Вы не хотите дополнительного поля для формы, то можно добавить скрытое, например,  <input id="" type="hidden" name="send_name" value="Order"

 

Но учтите, что  можно передать вашему скрипту, например...  value="ctobvitamvsenazarplatuzili" и в любом случае - от включится в емаил. Скрипт помещает значение send_name в почту и его можно изменить при отправке... скрытое поле ведь можно просмотреть в исходном коде страницы.

Я попробовал! Друг помог разобраться по твоему совету!  Все получилось - все работает - я доволен! Я благодарю тебя! Желаю тебе богатства и процветания!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy