J'essaie de mettre en place un site Web Laravel et j'ai réussi à faire fonctionner quelques éléments, mais j'ai ensuite rencontré cette erreur.
mail() a été désactivé pour des raisons de sécurité
J'ai essayé de contacter mes fournisseurs d'hébergement pour qu'ils m'aident à activer cette fonction, mais ils m'ont envoyé balader en me disant qu'ils ne pouvaient pas l'activer et que je devais essayer de modifier l'en-tête de l'expéditeur pour qu'il n'en ait pas besoin.
S'il vous plaît, comment pourrais-je faire cela, car je ne suis pas un expert en matière de mail php.
Voici mon erreur ci-dessous :
ErrorException thrown with message "mail() has been disabled for security reasons"
Stacktrace:
#57 ErrorException in /home/zcashcom/public_html/invest/core/app/Http/helpers/helpers.php:19
#56 mail in /home/zcashcom/public_html/invest/core/app/Http/helpers/helpers.php:19
Voici le code complet du fichier, helpers.php en question
<?php
use App\General;
use App\User;
use App\MemberExtra;
function send_email($to, $subject, $name, $message){
$general = General::first();
if ($general->email_nfy == 1){
$headers = "From: ".$general->web_title." <".$general->esender."> \r\n";
$headers .= "Reply-To: ".$general->web_title." <".$general->esender."> \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$template = $general->emessage;
$mm = str_replace("{{name}}",$name,$template);
$message = str_replace("{{message}}",$message,$mm);
mail($to, $subject, $message, $headers);
}else {
return;
}
}
function send_sms( $to, $message){
$gnl = General::first();
if($gnl->sms_nfy == 1) {
$sendtext = urlencode("$message");
$appi = $gnl->smsapi;
$appi = str_replace("{{number}}",$to,$appi);
$appi = str_replace("{{message}}",$sendtext,$appi);
$result = file_get_contents($appi);
}
return;
}
function updateDepositBV($id, $deposit_amount)
{
while($id !="" || $id != "0") {
if(isMemberExists($id))
{
$posid = getParentId($id);
if($posid == "0")
break;
$position = getPositionParent($id);
$currentBV = MemberExtra::where('user_id', $posid)->first();
if($position == "L"){
$new_lbv = $currentBV->left_bv + $deposit_amount ;
$new_rbv = $currentBV->right_bv;
}else{
$new_lbv = $currentBV->left_bv;
$new_rbv = $currentBV->right_bv + $deposit_amount ;
}
MemberExtra::where('user_id', $posid)
->update([
'left_bv' => $new_lbv,
'right_bv' => $new_rbv,
]);
$id = $posid;
} else {
break;
}
}//while
return 0;
}
function updatePaid($id){
while($id!=""||$id!="0"){
if(isMemberExists($id)) {
$posid=getParentId($id);
if($posid == "0")
break;
$position = getPositionParent($id);
$currentCount = MemberExtra::where('user_id',$posid )->first();
$new_lpaid = $currentCount->left_paid;
$new_rpaid = $currentCount->right_paid;
$new_lfree = $currentCount->left_free;
$new_rfree = $currentCount->right_free;
if($position == "L") {
$new_lfree = $new_lfree-1;
$new_lpaid = $new_lpaid+1;
}else {
$new_rfree = $new_rfree-1;
$new_rpaid = $new_rpaid+1;
}
MemberExtra::where('user_id', $posid)
->update([
'left_paid' => $new_lpaid,
'right_paid' => $new_rpaid,
'left_free' => $new_lfree,
'right_free' => $new_rfree,
]);
$id =$posid;
} else {
break;
}
}
return 0;
}
function treeeee($id ='', $uid=''){
while($id!=""||$id!="0") {
if(isMemberExists($id)){
$posid=getParentId($id);
if($posid=="0")
break;
if($posid==$uid){
return true;
}
$id =$posid;
} else {
break;
}
}//while
return 0;
}
function printBV($id){
$cbv = MemberExtra::where('user_id', $id)->first();
$rid = User::whereId($id)->first();
$rnm = User::where('id', $rid->referrer_id)->first();
echo "<b>Referred By:</b> $rnm->username <br>";
echo "<b>Current BV:</b> L-$cbv->left_bv | R-$cbv->right_bv <br>";
}
function printBelowMember($id){
$bmbr = MemberExtra::where('user_id', $id)->first() ;
echo "<b>Paid Member Below:</b> L-$bmbr->left_paid | R-$bmbr->right_paid <br>";
echo "<b>Free Member Below:</b> L-$bmbr->left_free | R-$bmbr->right_free <br>";
}
function updateMemberBelow($id='', $type=''){
while($id!=""||$id!="0") {
if(isMemberExists($id)) {
$posid=getParentId($id);
if($posid=="0")
break;
$position=getPositionParent($id);
$currentCount = MemberExtra::where('user_id', $posid)->first() ;
$new_lpaid = $currentCount->left_paid;
$new_rpaid = $currentCount->right_paid;
$new_lfree = $currentCount->left_free;
$new_rfree = $currentCount->right_free;
if($position=="L") {
if($type=='FREE'){
$new_lfree = $new_lfree + 1;
}else{
$new_lpaid = $new_lpaid+1;
}
}else {
if($type=='FREE'){
$new_rfree = $new_rfree + 1;
}else{
$new_rpaid = $new_rpaid+1;
}
}
MemberExtra::where('user_id', $posid)
->update([
'left_paid' => $new_lpaid,
'right_paid' => $new_rpaid,
'left_free' => $new_lfree,
'right_free' => $new_rfree,
]);
$id =$posid;
} else{
break;
}
}
return 0;
}
function getParentId($id){
$count = User::whereId($id)->count() ;
$posid = User::whereId($id)->first();
if ($count == 1){
return $posid->posid;
}else{
return 0;
}
}
function getPositionParent($id){
$count = User::whereId($id)->count();
$position = User::whereId($id)->first() ;
if ($count == 1){
return $position->position;
}else{
return 0;
}
}
function getLastChildOfLR($parentid ,$position){
$childid = getTreeChildId($parentid, $position);
if($childid!="-1"){
$id = $childid;
} else {
$id = $parentid;
}
while($id!=""||$id!="0") {
if(isMemberExists($id)) {
$nextchildid = getTreeChildId($id, $position);
if($nextchildid == "-1"){
break;
}else{
$id = $nextchildid;
}
}else break;
}
return $id;
}
function getTreeChildId($parentid ,$position){
$cou = User::where('posid', $parentid)->where('position', $position)->count();
$cid = User::where('posid', $parentid)->where('position', $position)->first();
if ($cou == 1){
return $cid->id;
}else{
return -1;
}
}
function isMemberExists($id){
$count = User::where('id', $id)->count();
if ($count == 1){
return true;
}else{
return false;
}
}
function Short_Text($data,$length){
$first_part = explode(" ",$data);
$main_part = strip_tags(implode(' ',array_splice($first_part,0, $length)));
return $main_part ."...." ;
}
function ImageCheck($ext){
if($ext != 'jpg' && $ext != 'jpeg' && $ext != 'png' && $ext != 'bnp'){
$ext = "";
}
return $ext;
}
function NewFile($name, $data){
$fh = fopen($name, "w");
fwrite($fh,$data);
fclose($fh);
}
function ViewFile($name){
$fh = fopen($name, "r");
$data = fread($fh,filesize($name));
fclose($fh);
return $data;
}
function Find_fist_int($string){
preg_match_all('!\d+!', $string, $matches);
if($matches[0] != ""){
foreach($matches[0] as $key => $value){
$url = $value;
return $url;
break;
}
}
}
function Replace($data) {
$data = str_replace("'", "", $data);
$data = str_replace("!", "", $data);
$data = str_replace("@", "", $data);
$data = str_replace("#", "", $data);
$data = str_replace("$", "", $data);
$data = str_replace("%", "", $data);
$data = str_replace("^", "", $data);
$data = str_replace("&", "", $data);
$data = str_replace("*", "", $data);
$data = str_replace("(", "", $data);
$data = str_replace(")", "", $data);
$data = str_replace("+", "", $data);
$data = str_replace("=", "", $data);
$data = str_replace(",", "", $data);
$data = str_replace(":", "", $data);
$data = str_replace(";", "", $data);
$data = str_replace("|", "", $data);
$data = str_replace("'", "", $data);
$data = str_replace('"', "", $data);
$data = str_replace("?", "", $data);
$data = str_replace(" ", "_", $data);
$data = str_replace("'", "", $data);
$data = str_replace(".", "-", $data);
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace(" ", "-", $data));
$data = strtolower(str_replace("__", "-", $data));
return str_replace("_", "-", $data);
}
**Modifié en ce qui concerne la première réponse
J'ai réalisé que l'erreur appelle aussi quelques autres fichiers.
RegisterController.php : 104 & 141. Je ne sais vraiment pas ce que cela signifie**.
<?php
namespace App\Http\Controllers\Auth;
use App\ChargeCommision;
use App\Income;
use App\MemberExtra;
use App\User;
use App\General;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'referrer_id' => 'required',
'position' => 'required',
'first_name' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÑa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'last_name' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÑa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'birth_day' => 'required',
'mobile' => 'required',
'street_address' => 'required',
'city' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÑa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'post_code' => 'required|numeric|min:0',
'country' => 'required',
'username' => 'required',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
$pin = substr(time(), 4);
$ref_id = $data['referrer_id'];
$poss = $data['position'];
$posid = getLastChildOfLR($ref_id,$poss);
// $general = General::first();
$message = '<tr>';
$message .='<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;">';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;color:green;">Our warmest congratulations on your new account opening! This only shows that you have grown your business well. I pray for your prosperous.</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You have taken this path knowing that you can do it. Good luck with your new business. I wish you all the success and fulfillment towards your goal.</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your username is '.$data['username'].' .</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your password is '.$data['password'].' .</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px; color:red;">Remember, never share your password with otherone. And you are agree with our Terms and Policy.</p>';
$message .='</td>';
$message .='</tr>';
send_email($data['email'], 'Account Created Successfully', $data['first_name'], $message);
$sms = 'Congratulation, for registration. Your username is '.$data['username'].'. Your password is '.$data['password'].'';
send_sms($data['mobile'], $sms);
return User::create([
'email' => $data['email'],
'password' => bcrypt($data['password']),
'referrer_id' => $data['referrer_id'],
'position' => $data['position'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'mobile' => $data['mobile'],
'street_address' => $data['street_address'],
'city' => $data['city'],
'post_code' => $data['post_code'],
'country' => $data['country'],
'username' => $data['username'],
'birth_da' => date('Y-m-d',strtotime($data['birth_day'])),
'join_date' => Carbon::today(),
'balance' => 0,
'status' => 1,
'paid_status' => 0,
'ver_status' => 0,
'ver_code' => $pin,
'forget_code' => 0,
'posid' => $posid,
'tauth' => 0,
'tfver' => 1,
'emailv' => 0,
'smsv' => 1,
]);
}
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
MemberExtra::create([
'user_id' => $user['id'],
'left_paid' => 0,
'right_paid' => 0,
'left_free' => 0,
'right_free' => 0,
'left_bv' => 0,
'right_bv' => 0,
]);
updateMemberBelow($user['id'], 'FREE');
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
}
Et RedirectifAuthenticated.php:24
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
}
Image du message d'erreur
Et voici le fichier mail.php
<?php
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
Après la configuration à partir de la réponse dans le commentaire, j'ai obtenu un nouveau message d'erreur
Call to undefined function App\Http\Controllers\Auth\getLastChildOfLR()
RegisterControllers.php:87
<?php
namespace App\Http\Controllers\Auth;
use App\ChargeCommision;
use App\Income;
use App\MemberExtra;
use App\User;
use App\General;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\Registered;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'referrer_id' => 'required',
'position' => 'required',
'first_name' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÑa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'last_name' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÑa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'birth_day' => 'required',
'mobile' => 'required',
'street_address' => 'required',
'city' => ['required', 'regex:/^[A-ZÀÂÇÉÈÊËÎÏÔÛÙÑa-zàâçéèêëîïôûùüÿñæœ0-9_.,() ]+$/'],
'post_code' => 'required|numeric|min:0',
'country' => 'required',
'username' => 'required',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
$pin = substr(time(), 4);
$ref_id = $data['referrer_id'];
$poss = $data['position'];
$posid = getLastChildOfLR($ref_id,$poss);
// $general = General::first();
$message = '<tr>';
$message .='<td style="font-family: sans-serif; font-size: 14px; vertical-align: top;">';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;color:green;">Our warmest congratulations on your new account opening! This only shows that you have grown your business well. I pray for your prosperous.</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">You have taken this path knowing that you can do it. Good luck with your new business. I wish you all the success and fulfillment towards your goal.</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your username is '.$data['username'].' .</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px;">Your password is '.$data['password'].' .</p>';
$message .='<p style="font-family: sans-serif; font-size: 14px; font-weight: normal; margin: 0; Margin-bottom: 15px; color:red;">Remember, never share your password with otherone. And you are agree with our Terms and Policy.</p>';
$message .='</td>';
$message .='</tr>';
send_email($data['email'], 'Account Created Successfully', $data['first_name'], $message);
$sms = 'Congratulation, for registration. Your username is '.$data['username'].'. Your password is '.$data['password'].'';
send_sms($data['mobile'], $sms);
return User::create([
'email' => $data['email'],
'password' => bcrypt($data['password']),
'referrer_id' => $data['referrer_id'],
'position' => $data['position'],
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'mobile' => $data['mobile'],
'street_address' => $data['street_address'],
'city' => $data['city'],
'post_code' => $data['post_code'],
'country' => $data['country'],
'username' => $data['username'],
'birth_day' => date('Y-m-d',strtotime($data['birth_day'])),
'join_date' => Carbon::today(),
'balance' => 0,
'status' => 1,
'pid_status' => 0,
'ver_status' => 0,
'ver_code' => $pin,
'forget_code' => 0,
'posid' => $posid,
'tauth' => 0,
'tfver' => 1,
'emailv' => 0,
'smsv' => 1,
]);
}
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
$this->guard()->login($user);
MemberExtra::create([
'user_id' => $user['id'],
'left_paid' => 0,
'right_paid' => 0,
'left_free' => 0,
'right_free' => 0,
'left_bv' => 0,
'right_bv' => 0,
]);
updateMemberBelow($user['id'], 'FREE');
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
}