почта php на MAMP

Если Вы хотите генерировать PIN-коды типа платы царапины, то необходимо использовать большие количества, приблизительно 13 цифр долго; и также, они должны быть подобны номерам кредитных карт, имея контрольную сумму или цифру проверки, встроенную в само число. У Вас должен быть алгоритм для генерации контакта на основе некоторых исходных данных, которые могут быть последовательностью чисел. Получающийся контакт должен быть уникальным для каждого числа в последовательности, так, чтобы, если Вы генерируете 100 000 PIN-кодов, они все отличались. Таким образом, Вы будете в состоянии проверить число не только путем проверки его по базе данных, но и можно проверить его сначала.

я однажды записал что-то с этой целью, я не могу дать Вам, код, но общее представление - это:

  • Готовят пространство 12 цифр
  • Формат число как пять цифр (00000 к 99 999) и распространяют его вдоль пространства определенным способом. Например, номер 12345 может быть распространен как __ 3_5_2_4 __ 1. Можно варьироваться способ, которым Вы распространяете число в зависимости от того, является ли это четным или нечетным числом, или несколько из 3, и т.д.
  • На основе значения определенных цифр, генерируют больше цифр (например, если третья цифра даже, то создайте нечетное число и поместите его в первое открытое пространство, иначе создайте четное число и поместите его во второе открытое пространство, например, _83_5_2_4 __ 1
  • , Как только Вы генерировали 6 цифр, у Вас будет только одно открытое пространство. Необходимо всегда покидать то же открытое пространство (например, предпоследнее пространство). Вы поместите цифру проверки в то место.
  • Для генерации цифры проверки необходимо выполнить некоторые арифметические операции на числе, которое Вы генерировали, например, добавив все цифры в нечетных положениях и умножив их на некоторое другое число, затем вычтя все цифры в ровных положениях, и наконец добавив все цифры вместе (необходимо варьироваться алгоритм немного на основе значения определенных цифр). В конце у Вас есть цифра проверки, которую Вы включаете в сгенерированный PIN-код.

Поэтому теперь можно проверить сгенерированные PIN-коды. Для данного PIN-кода Вы генерируете цифру проверки и проверяете его по тому, включенному в контакт. Если это в порядке тогда, можно извлечь исходное число путем выполнения обратных операций.

Это не звучит настолько хорошим, потому что это похоже на безопасность через мрак, но это - единственный способ, которым можно использовать это. Для кого-то не невозможно предположить PIN-код, но быть 12-разрядным кодом с цифрой проверки, это будет очень твердо, так как необходимо попробовать 1,000,000,000,000 комбинаций, и у Вас просто есть 100 000 действительных PIN-кодов, таким образом, для каждого действительного PIN-кода существует 10 000 000 недопустимых.

я должен упомянуть, что это полезно для доступных PIN-кодов; человек использует один из этих кодов только однажды, например, для зарядки заранее оплаченного телефона. Это не хорошая идея использовать эти контакты в качестве аутентификационных маркеров, особенно если это - единственный способ аутентифицировать кого-то (Вы никогда не должны аутентифицировать кого-то только через единственную часть данных; очень минимальным является username+password)

18
задан Ori 4 August 2009 в 08:29
поделиться

5 ответов

Возможно, вы захотите рассмотреть библиотеку Swift Mailer

http://swiftmailer.org/

. Она делает создание электронной почты из кода PHP намного более надежным. Вы даже можете указать в своем почтовом скрипте реальную службу SMTP. Это может устранить множество проблем, с которыми вы могли бы столкнуться при переходе от локальной к производственной среде.

Использовать swift mailer так же просто, как использовать одно включение в верхней части вашего PHP-скрипта и написать блок кода для отправки простого сообщение.

2
ответ дан 30 November 2019 в 09:36
поделиться

Few months ago I had a similar problem whilst developing on my local machine an application which involved sending automating email notifications. I have lost quite some time installing Sendmail on OSX and eventually I could not get it working right..

My approach was to use the PEAR Mail as a temporary replacement for php's native mail function. Basically you can define a function called send-mail (see code below) and, once you deploy your app on a server, you can possibly replace the calls to that function with calls to mail().

     <?php
     require_once 'Mail.php';
     function send_mail($recipient,$subject,$body){

            $host = "yourmailserver.net"; 
            $username = "you@yourmailserver.net";
            $password = "password";
            $port = 25; 

            $headers = array ('From' => "Your agent <noreply@yoursite.net>",
              'To' => $recipient,
              'Subject' => $subject
            );  

            $smtp = Mail::factory(
             'smtp',
              array ('host' => $host,
                'auth' => true,
                'port' => $port,
                'username' => $username,
                'password' => $password)
            );  
            $smtp->send($recipient, $headers, $body);
       }
    ?>    
1
ответ дан 30 November 2019 в 09:36
поделиться

я использую класс phpmailer (предупреждение: ужасный веб-сайт!) И указываю реальный smtp-сервер, на котором у меня есть учетная запись. Поэтому я не использую mail (), а использую smtp. Таким образом, не имеет значения, нахожусь ли я на своем локальном сервере или на реальном сервере. Но вам нужен рабочий smtp-доступ к этому почтовому серверу smtp. Лучше всего будет использовать рабочий почтовый сервер (тот, который будет использоваться вашим приложением, когда оно будет запущено). Таким образом, у вас не будет сюрпризов в последнюю минуту, когда вы обнаружите, что почтовый сервер испортил поле ответа и подобные мелочи.

1
ответ дан 30 November 2019 в 09:36
поделиться

Вы специально пытаетесь проверить отправку почты или проверяете остальную часть кода?

В первом случае вы необходимо настроить:

 SMTP = smtp.example.com
 smtp_port = 25
 sendmail_from = me@example.com

в вашем файле php.ini (проверьте, где он находится, с помощью phpinfo ()), подставив соответствующие значения.

Чтобы протестировать код, отличный от процесса отправки почты, я бы рекомендовал создать 2 включаемых файла:

<?php
// for live usage/mail send testing
function ori_mail()
{
   return call_user_func_array('mail',func_get_args());
}

и для тестирования другого кода

function ori_mail()
{
   file_put_contents('debug_mail_scripts.txt'
       ,date('r') . ':' . var_export(func_get_args(), true)
       , FILE_APPEND);
}

И включите соответствующий в свое тестирование.

Обратите внимание, что тестирование интеграции с SMTP-сервером и тестирование возможности доставки вашего кода довольно сложны, но должны выполняться независимо от тестирования вашего PHP.

С.

4
ответ дан 30 November 2019 в 09:36
поделиться

Вы можете использовать свою учетную запись Gmail и отправлять тестовые сообщения электронной почты через SMTP-сервер Gmail.

Для этого вы можете использовать класс phpmailer ( http://phpmailer.worxware.com/ ). Когда вы загружаете этот класс, в папке examples / находится базовый пример Gmail.

0
ответ дан 30 November 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: