Если Вы хотите генерировать PIN-коды типа платы царапины, то необходимо использовать большие количества, приблизительно 13 цифр долго; и также, они должны быть подобны номерам кредитных карт, имея контрольную сумму или цифру проверки, встроенную в само число. У Вас должен быть алгоритм для генерации контакта на основе некоторых исходных данных, которые могут быть последовательностью чисел. Получающийся контакт должен быть уникальным для каждого числа в последовательности, так, чтобы, если Вы генерируете 100 000 PIN-кодов, они все отличались. Таким образом, Вы будете в состоянии проверить число не только путем проверки его по базе данных, но и можно проверить его сначала.
я однажды записал что-то с этой целью, я не могу дать Вам, код, но общее представление - это:
Поэтому теперь можно проверить сгенерированные PIN-коды. Для данного PIN-кода Вы генерируете цифру проверки и проверяете его по тому, включенному в контакт. Если это в порядке тогда, можно извлечь исходное число путем выполнения обратных операций.
Это не звучит настолько хорошим, потому что это похоже на безопасность через мрак, но это - единственный способ, которым можно использовать это. Для кого-то не невозможно предположить PIN-код, но быть 12-разрядным кодом с цифрой проверки, это будет очень твердо, так как необходимо попробовать 1,000,000,000,000 комбинаций, и у Вас просто есть 100 000 действительных PIN-кодов, таким образом, для каждого действительного PIN-кода существует 10 000 000 недопустимых.
я должен упомянуть, что это полезно для доступных PIN-кодов; человек использует один из этих кодов только однажды, например, для зарядки заранее оплаченного телефона. Это не хорошая идея использовать эти контакты в качестве аутентификационных маркеров, особенно если это - единственный способ аутентифицировать кого-то (Вы никогда не должны аутентифицировать кого-то только через единственную часть данных; очень минимальным является username+password)
Возможно, вы захотите рассмотреть библиотеку Swift Mailer
. Она делает создание электронной почты из кода PHP намного более надежным. Вы даже можете указать в своем почтовом скрипте реальную службу SMTP. Это может устранить множество проблем, с которыми вы могли бы столкнуться при переходе от локальной к производственной среде.
Использовать swift mailer так же просто, как использовать одно включение в верхней части вашего PHP-скрипта и написать блок кода для отправки простого сообщение.
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);
}
?>
я использую класс phpmailer (предупреждение: ужасный веб-сайт!) И указываю реальный smtp-сервер, на котором у меня есть учетная запись. Поэтому я не использую mail (), а использую smtp. Таким образом, не имеет значения, нахожусь ли я на своем локальном сервере или на реальном сервере. Но вам нужен рабочий smtp-доступ к этому почтовому серверу smtp. Лучше всего будет использовать рабочий почтовый сервер (тот, который будет использоваться вашим приложением, когда оно будет запущено). Таким образом, у вас не будет сюрпризов в последнюю минуту, когда вы обнаружите, что почтовый сервер испортил поле ответа и подобные мелочи.
Вы специально пытаетесь проверить отправку почты или проверяете остальную часть кода?
В первом случае вы необходимо настроить:
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.
С.
Вы можете использовать свою учетную запись Gmail и отправлять тестовые сообщения электронной почты через SMTP-сервер Gmail.
Для этого вы можете использовать класс phpmailer ( http://phpmailer.worxware.com/ ). Когда вы загружаете этот класс, в папке examples / находится базовый пример Gmail.