Verification: a143cc29221c9be0

Php code for confirm email

What is PHP mail?

PHP mail is the built in PHP function that is used to send emails from PHP scripts.

The mail function accepts the following parameters;

  • Email address
  • Subject
  • Message
  • CC or BC email addresses
    • It’s a cost effective way of notifying users on important events.
    • Let users contact you via email by providing a contact us form on the website that emails the provided content.
    • Developers can use it to receive system errors by email
    • You can use it to email your newsletter subscribers.
    • You can use it to send password reset links to users who forget their passwords
    • You can use it to email activation/confirmation links. This is useful when registering users and verifying their email addresses

In this tutorial, you will learn-

  • Why/When to use the PHP mail
  • Simple Mail Transmission Protocol
  • Sanitizing email user inputs
  • Secure Mail

Why/When to use the mail PHP

Sending mail using PHP

The PHP mail function has the following basic syntax

  HERE,

  • “$to_email_address” is the email address of the mail recipient
  • “$subject” is the email subject
  • “$message” is the message to be sent.
  • “[$headers]” is optional, it can be used to include information such as CC, BCC
    • CC is the acronym for carbon copy. It’s used when you want to send a copy to an interested person i.e. a complaint email sent to a company can also be sent as CC to the complaints board.
    • BCC is the acronym for blind carbon copy. It is similar to CC. The email addresses included in the BCC section will not be shown to the other recipients.

Simple Mail Transmission Protocol (SMTP)

PHP mailer uses Simple Mail Transmission Protocol (SMTP) to send mail.

On a hosted server, the SMTP settings would have already been set.

The SMTP mail settings can be configured from “php.ini” file in the PHP installation folder.

Configuring SMTP settings on your localhost Assuming you are using xampp on windows, locate the “php.ini” in the directory “C:\xampp\php”.

  • Open it using notepad or any text editor. We will use notepad in this example. Click on the edit menu

  • Click on Find… menu

  • The find dialog menu will appear

  • Click on Find Next button

  • Locate the entries
    • [mail function]
    • ; XAMPP: Don’t remove the semi column if you want to work with an SMTP Server like Mercury
    • ; SMTP = localhost
    • ; smtp_port = 25
    • Remove the semi colons before SMTP and smtp_port and set the SMTP to your smtp server and the port to your smtp port. Your settings should look as follows
      • SMTP = smtp.example.com
      • smtp_port = 25
      • Note the SMTP settings can be gotten from your web hosting providers.
      • If the server requires authentication, then add the following lines.
        • auth_username = This email address is being protected from spambots. You need JavaScript enabled to view it.
        • auth_password = example_password
        • Save the new changes.
        • Restart Apache server.

Php Mail Example

Let’s now look at an example that sends a simple mail.

Output:

  Note: the above example only takes the 4 mandatory parameters.

You should replace the above fictitious email address with a real email address.

Sanitizing email user inputs

The above example uses hard coded values in the source code for the email address and other details for simplicity.

Let’s assume you have to create a contact us form for users fill in the details and then submit.

  • Users can accidently or intentional inject code in the headers which can result in sending spam mail
  • To protect your system from such attacks, you can create a custom function that sanitizes and validates the values before the mail is sent.

Let’s create a custom function that validates and sanitizes the email address using the filter_var built in function.

Filter_var function The filter_var function is used to sanitize and validate the user input data.

It has the following basic syntax.

  HERE,

  • “filter_var(…)” is the validation and sanitization function
  • “$field” is the value of the field to be filtered.
  • “SANITIZATION TYPE” is the type of sanitization to be performed on the field such as;
    • FILTER_VALIDATE_EMAIL – it returns true for valid email addresses and false for invalid email addresses.
    •  FILTER_SANITIZE_EMAIL – it removes illegal characters from email addresses. info\@domain.(com) returns This email address is being protected from spambots. You need JavaScript enabled to view it..
    • FILTER_SANITIZE_URL – it removes illegal characters from URLs. http://www.example@.comé returns >http://www.example@.com
    • FILTER_SANITIZE_STRING  - it removes tags from string values. am bold becomes am bold.

The code below implements uses a custom function to send secure mail.

Output:

Secure Mail

Emails can be intercepted during transmission by unintended recipients.

This can exposure the contents of the email to unintended recipients.

Secure mail solves this problem by transmitting emails via Hypertext Transfer Protocol Secure (HTTPS).

HTTPS encrypts messages before sending them.

Форма регистрации

Вначале создается форма для регистрации. Открываем директорию с шаблоном resources. Там создаем поддиректорию auth. В этой же папке создаем файл register.blade.php и прописываем код:

Регистрация

  • Вход

    ;

            {{--Ошибки--}}

            @if ($errors->has())

  • {{{ $error }}}
  •                           @endforeach

          @endif

              {!! csrf_field() !!}

    Email

    Пароль

    Повторите пароль

    Думаю, что с этим трудностей не возникнет.

    Не нужно создавать контроллер, чтобы зарегистрироваться и авторизоваться. В программу встроен механизм, который отвечает за эти действия. Контроллер называется:

    app/Http/Controllers/Auth/AuthController.php

    Пользователю достаточно переопределить метод контроллера AuthController.php. Для того чтобы отобразить форму регистрации, используйте метод getRegister.

    Переходим к роутеру. Открываем следующий файл:

    app/Http/Controllers/routes.php

    Определяем роутер по выбранному методу:

    Route::get('auth/register', 'Auth\AuthController@getRegister');

    Открываем в браузере приложение. У вас перед глазами сразу же предстанет форма для регистрации.

    Личный кабинет Laravel

    На этом этапе необходимо определить роут для регистрации пользователя. Переходим в следующий файл:

    app/Http/Controllers/routes.php

    Добавляем роут:

    Route::post('auth/register', 'Auth\AuthController@postRegister');

    Создаем таблицу для того, чтобы хранить всех пользователей. Миграцию для таблицы мы имеем, но она не подходит под требования. Ее придется изменить. Для этого переходим в следующий файл:

    database/migrations/2014_10_12_create_users_table.php

    И меняем код по схеме ниже:

    useIlluminate\Database\Schema\Blueprint;

    useIlluminate\Database\Migrations\Migration;

    classCreateUsersTable

    extendsMigration

    {

        /**

         * Runthemigrations.

         *

         * @returnvoid

         */

    publicfunctionup()

        {      

    Schema::create('users', function (Blueprint $table) {         

                $table->increments('id');         

                $table->string('email')->unique();          

                $table->string('password', 60);          

                $table->boolean('activated')->default(0);         

                $table->rememberToken();          

                $table->timestamps();

            });

        }

        /**

         * Reversethemigrations.

         *

         * @returnvoid

         */

    publicfunctiondown()

        {      

    Schema::drop('users');

      }

    }

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

    Делаем миграцию:

    artisanmake:migrationcreate_codes_table --create=codes

    И вставляем код, прописанный в схеме ниже:\

    useIlluminate\Database\Schema\Blueprint;

    useIlluminate\Database\Migrations\Migration;

    classCreateCodesTableextendsMigration

    {

        /**

         * Runthemigrations.

         *

         * @returnvoid

         */

    publicfunctionup()

        {      

    Schema::create('codes', function (Blueprint $table) {          

               $table->increments('id');

               $table->tinyInteger('user_id')->unsigned();           

               $table->string('code',10);          

               $table->timestamps();

            });

        }

        /**

         * Reversethemigrations.

         *

         * @returnvoid

         */

    publicfunctiondown()

        {     

    Schema::drop('codes');

        }

    }

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

    Следующим действием будет создание модели для таблицы под названием «codes». Прописываем команду:

    artisanmake:modelCode

    Генерируем файл Code.php. Он должен выглядеть так:

    namespaceApp;

    useIlluminate\Database\Eloquent\Model;

    classCodeextendsModel

    {

        //

    }

    Редактируем его. Должно получиться следующее:

    namespaceApp;

    useIlluminate\Database\Eloquent\Model;

    classCodeextendsModel

    {

    protected $table = 'codes';

    protected $fillable = ['user_id', 'code'];

    }

    Создаем контроллер CodeController и там прописываем метод генерации кода:

    artisanmake:controllerCodeController --plain

    Файл контроллера, который получилось сгенерировать, должен быть следующего содержания:

    namespaceApp\Http\Controllers;

    useIlluminate\Http\Request;

    useApp\Http\Requests;

    useApp\Http\Controllers\Controller;

    classCodeControllerextendsController

    {

        //

    }

    Добавляем туда метод генерации кодов:

    publicstaticfunctiongenerateCode($length = 10)

    {

        $num = range(0, 9);   

        $alf = range('a', 'z');    

        $_alf = range('A', 'Z');  

        $symbols = array_merge($num, $alf, $_alf);  

    shuffle($symbols);

        $code_array = array_slice($symbols, 0, (int)$length); 

        $code = implode("", $code_array);

    return $code;

    }

    Переходим к контроллеру с названием AuthController. Для начала изменим метод валидации:

    protectedfunctionvalidator(array $data)

    {

    returnValidator::make($data, [

            'email' => 'required|email|max:255|unique:users',

            'password' => 'required|confirmed|min:6',

        ]);

    }

    Переходим к методу регистрации postRegister. Но нужно учесть, что тот, что определен в коробке, не подходит. Его необходимо переопределить. Откроем контроллер под названием AuthController и прописываем код на схеме:

    publicfunctionpostRegister(Request $request)

    {

        $validator = $this->validator($request->all());

    if ($validator->fails()) {         

    throwValidationException($request, $validator);

        };

        $user = $this->create($request->all());

    //создаем код и записываем код

        $code = CodeController::generateCode(8);

    Code::create([

            'user_id' => $user->id,

            'code' => $code,

        ]);

        //Генерируем ссылку и отправляем письмо на указанный адрес

        $url = url('/').'/auth/activate?id='.$user->id.'&code='.$code;     

    Mail::send('emails.registration', array('url' => $url), function($message) use ($request)

        {         

            $message->to($request->email)->subject('Registration');

        });

    return 'Регистрация прошла успешно, на Ваш email отправлено письмо со ссылкой для активации аккаунта';

    }

    На этом этапе нужно не забыть вначале файла прописать:

    useApp\Code;

    useIlluminate\Support\Facades\Mail;

    useApp\Http\Controllers\CodeController;

    Таким образом, получился личный кабинет пользователя laravel.

    Но мы не подключили ни одного сервиса, чтобы отправить сообщение на адрес электронной почты. Следовательно, при совершении этого действия будет выдаваться ошибка. Нужно настроить симуляцию отправки сообщения. На самом сообщении будет прописан лог. К тому же программа делается достаточно просто.

    Открываем файл .env и изменяем его:

    MAIL_DRIVER=log;

    Создаем шаблон для писем с кодом. Создаем папку с названием emails, а внутри нее файл resources. В этой же папке создаем документ registration.blade.php с следующим текстом:

    Для активации аккаунта перейдите по ссылке: {!! $url !!}

    Теперь можно проверить, что вышло. Открываем страницу регистрации. Для начала необходимо проверить валидацию. Для этого вводим пароли, которые отличаются друг от друга.

    Когда валидация сработала, регистрируем нового пользователя. После этого в логах проверяем сообщение. Если оно пришло, то вы все сделали правильно.

    Услуги

    Предлагаем комплекс услуг по автоматизации B2B-закупок и поставок, документооборота, торгов, заказов, логистики. Предоставляем удобные сервисы для вашей коммерческой службы, склада, логистики.