احراز هویت کاربر با شماره موبایل همراه و SMS راهی سریع و موثر است که بطور عمومی بیشتر در نرم افزار های موبایل و سیستم های بانکی برای فعال سازی پیامکی استفاده می شود.
بنابراین ما هم می توانیم در سیستم لاگین کاربر با تایید پیامک ارسالی به کاربر حتی بدون استفاده از رمزعبور دایمی , احراز هویت با پبامک در PHP انجام بدیم.
در این آموزش PHP , قصد داریم به شما نحوه پیاده سازی تایید شماره موبایل با SMS در PHP که یک رمز یکبار مصرف (OTP) را ارسال می کند, به شما نشان بدیم.
ما از سرویس پنل پیامک (payamak-panel.com) استفاده می کنیم. که در بخش وب سرویس (API) می توانیم نمونه کدها و داکیومنت را ببنیم.
همچنین یک پنل پیامکی دیگری از sms.ir داریم که من فقط کدهای نمونه و نحوه استفاده از آن را در قالب یک مثال به همراه سورس کد این پست قرار میدم تا بتونید استفاده کنید.
توجه : بعضی از پنل های پیامکی امکان ارسال پیامک صوتی را هم دارند که خب مطمینا نرخ آنها بالاتر از SMS است.
مراحل زیر برای پیاده سازی تایید شماره موبایل با SMS در PHP دنبال خواهد شد.
- ایجاد کد اعتبارسنجی تصادفی
- ارسال کد OTP پنج رقمی به کاربر با استفاده از سرویس API پنل SMS و اضافه کردن آن به دیتابیس
- تایید کد ارسال به شماره همراه کاربر و بروزرسانی وضعیت آن در دیتابیس
- نمایش وضعیت اعتبارسنجی پیامکی به کابر
ساخت جداول دیتابیس
برای ذخیره کد یکبار مصرف (OTP) و اعتبارسنجی وضعیت, نیاز به ساخت یک جدول در دیتابیس MySQL داریم.
با کد SQL زیر می توانید جدول mobile_numbers
به همراه چند ستون ابتدایی را ببینید.
1 2 3 4 5 6 7 |
CREATE TABLE `mobile_numbers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `mobile_number` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `verification_code` varchar(10) COLLATE utf8_unicode_ci NOT NULL, `verified` tinyint(1) NOT NULL DEFAULT '0' COMMENT '1=Verified, 0=Not verified', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
کلاس اتصال به دیتابیس (DB.class.php)
کلاس DB
تمام عملیات مربوط به (واکشی, قرار دادن و بروزرسانی) را مه مربوط به دیتابیس است انجام می دهد
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php /* * DB Class * This class is used for database related (connect, insert, and update) operations * @author NetParadis.com * @url http://www.netparadis.com */ class DB{ private $dbHost = "localhost"; private $dbUsername = "root"; private $dbPassword = "root"; private $dbName = "netparadis"; private $tblName = "mobile_numbers"; public function __construct(){ if(!isset($this->db)){ // Connect to the database $conn = new mysqli($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName); if($conn->connect_error){ die("Failed to connect with MySQL: " . $conn->connect_error); }else{ $this->db = $conn; } } } /* * Returns rows from the database based on the conditions * @param string name of the table * @param array select, where, order_by, limit and return_type conditions */ public function checkRow($conditions = array()){} /* * Insert data into the database * @param string name of the table * @param array the data for inserting into the table */ public function insert($data){} /* * Update data into the database * @param string name of the table * @param array the data for updating into the table * @param array where condition on updating data */ public function update($data,$conditions){} } |
برای دیدن تمام کدهای این کلاس لطفا از باکس دانلود, سورس کد را دریافت کنید.
توابع زیر برای fetch, insert, update اطلاعات OTP در دیتابیس استفاده شده اند.
__construct()
– اتصال و انتخاب دیتابیسcheckRow()
– بررسی می کند که آیا رکوردی مبنی بر شرط برقرار شده در جدولmobile_numbers
وجود دارد یا خیر. اگر وجود داشته باشدtrue
و در غیر اینصورتfalse
را برگشت می دهد.Insert()
– داده ها در در جدولmobile_numbers
اضافه می کند.Update()
– داده ها را بر اساس شرط, در جدولmobile_numbers
بروزرسانی می کند.
فرم احزار هویت موبایل
در ابتدا یم فرم HTML نمایش داده می شود که به کاربر اجازه ارسال شماره موبایل را می دهد. بعد از وارد کردن شماره همراه, فیلد ورودی کدی که پیامک شده است برای کاربر نمایش داده می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<!-- OTP Verification form --> <!DOCTYPE> <html> <head> <title>NetParadis Verification</title> <meta charset="UTF-8"> </head> <body> <form method="post" style="direction:rtl;"> <label>شماره موبايل</label> <input type="text" placeholder="09123456789" name="mobile_no" value="<?php echo !empty($recipient_no)?$recipient_no:''; ?>" <?php echo ($otpDisplay == 1)?'readonly':''; ?>/> <?php if($otpDisplay == 1){ ?> <label>کد اعتبارسنجي</label> <input type="text" name="otp_code"/> <a href="javascript:void(0);" class="resend">ارسال مجدد</a> <?php } ?> <input type="submit" name="<?php echo ($otpDisplay == 1)?'submit_otp':'submit_mobile'; ?>" value="اعتبارسنجي"/> </form> </body> </html> |
ثبت و اعتبارسنجی کد اعتبارسنجی (OTP)
بعد از ارسال (submit) , شماره موبایل و رمزعبور یکبار مصرف توسط درگاه SMS در PHP اعتبارسنجی می شود.
sendSMS()
یک تابع سفارشی است که با آن به وب سرویس پنل پیامکی متصل و SMS را ارسال می کنیم. (آموزش ارسال SMS با PHP)- یک نمونه از کلاس
DB
را برای مدیریت عملیات مربوط به دیتابیس ایجاد می کنیم.
زمانی که شماره موبایل کاربر ثبت شد, عملیات زیر انجام می شود.
- یک کد تصادفی برای اعتبارسنجی با تابع
rand()
در PHP ایجاد می شود. - از متد
checkRow()
از کلاس DB برای بررسی اینکه آیا شماره همراه قبلا در دیتابیس وجود دارد یا خیر استفاده می کنیم. - اگر موجود بود, فقط
verification_code
را در دیتابیس با متدupdate()
در کلاسDB
آپدیت می کنیم. - اگر شماره موبایل موجود نبود, داده های OTP را با متد
insert()
از کلاس DB , در دیتابیس اضافه می کنیم. - کد OTP را توسط تابع
sendSMS()
به شماره همراه کاربر ارسال می کنیم. - اگر ارسال پیامک به کاربر موفقیت آمیز بود, فیلد ورودی OTP فعال خواهید شد.
زمانی که کد توسط کاربر وارد و ارسال شد:
- کد OTP وارد شده توسط کاربر را بررسی می کنیم که صحیح است یا خیر.
- وضعیت اعتبار سنجی کاربر در دیتابیس (فیلد
verified
) را بروزرسانی می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
<?php header("Content-Type: text/html; charset=utf-8"); require_once 'functions.php'; // Load and initialize database class require_once 'DB.class.php'; $db = new DB(); $statusMsg = $receipient_no = ''; $otpDisplay = $verified = 0; // If mobile number submitted by the user if(isset($_POST['submit_mobile'])){ if(!empty($_POST['mobile_no'])){ // Recipient mobile number $recipient_no = $_POST['mobile_no']; // Generate random verification code $rand_no = rand(10000, 99999); // Check previous entry $conditions = array( 'mobile_number' => $recipient_no, ); $checkPrev = $db->checkRow($conditions); // Insert or update otp in the database if($checkPrev){ $otpData = array( 'verification_code' => $rand_no ); $insert = $db->update($otpData, $conditions); }else{ $otpData = array( 'mobile_number' => $recipient_no, 'verification_code' => $rand_no, 'verified' => 0 ); $insert = $db->insert($otpData); } if($insert){ // Send otp to user via SMS $message = 'OTP Code : '.$rand_no; $send = sendSMS( $recipient_no, $message); $otpDisplay = 1; }else{ $statusMsg = array( 'status' => 'error', 'msg' => 'مشکلي در روند اجرا پيش آمد . بعد مجدد تلاش کتيد.' ); } }else{ $statusMsg = array( 'status' => 'error', 'msg' => 'لطفا شماره موبايل خود را وارد کنيد.' ); } // If verification code submitted by the user }elseif(isset($_POST['submit_otp']) && !empty($_POST['otp_code'])){ $otpDisplay = 1; $recipient_no = $_POST['mobile_no']; if(!empty($_POST['otp_code'])){ $otp_code = $_POST['otp_code']; // Verify otp code $conditions = array( 'mobile_number' => $recipient_no, 'verification_code' => $otp_code ); $check = $db->checkRow($conditions); if($check){ $otpData = array( 'verified' => 1 ); $update = $db->update($otpData, $conditions); $statusMsg = array( 'status' => 'success', 'msg' => 'ممنونم. شماره همراه شما با موفقيت تاييد شد.' ); $verified = 1; }else{ $statusMsg = array( 'status' => 'error', 'msg' => 'کد اعتبارسنجي اشتباه است . مجددا تلاش کنيد.' ); } }else{ $statusMsg = array( 'status' => 'error', 'msg' => 'لطفا کد اعتبارسنجي پيامک شده را وارد کنيد' ); } } ?> |
وضعیت اعتبارسنجی
اگر شماره موبایل کاربر به موفقیت اعتبارسنجی شده باشد, پیام وضعیت زیر را نمایش می دهیم.
1 2 3 4 5 6 7 |
<!-- Display status message --> <?php echo !empty($statusMsg)?'<p class="'.$statusMsg['status'].'">'.$statusMsg['msg'].'</p>':''; ?> <?php if($verified == 1){ ?> <p>Mobile No: <?php echo $recipient_no; ?></p> <p>Verification Status: <b>Verified</b></p> <?php } ?> |
امیدوارم از آموزش تایید شماره موبایل با SMS در PHP نهایت استفاده را برده باشید.
برای دانلود سورس کد کامل از باکس دانلود زیر استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
سلام
لطفا راهنمایی بفرمایید چطوری از متد ارسال پترن سامانه مکس اس ام اس استفاده کرد. حتما پترن باشه. چون در این حالت ارسال آنی به بلکلیست میشه انجام داد. مستندات مکث اس ام اس در اینجا هست: https://www.max-sms.ir/documents/webservice-api/
سلام.
برای پترن اول باید متن پیامک رو به همراه پارامتر ورودی داخل پنل پیامکی ثبت کنید و بعد توسط اپراتور تایید میشه و یه آیدی به شما داده میشه و داخل کد میتونید استفاده کنید.
سلام ,
یه سوال داشتم در مورد احراز هویت جند مرحله ای :
۱: ابتدا کاربر با شماره موبایل احراز هویت میکنه و کد تایید ارسال میشه .
۲: اگر کاربر قبلا ثبت نام کرده باشه و اطلاعاتش تو دیتابیس باشه وارد برنامه میشه ولی اگر ثبت نام نکرده باشه صفحه ثبت نام ایجاد میشه که اطلاعات باید وارد کند.
مشکل من قسمت دوم هستش که چه کدی باید نوشت که تشخیص بده کاربر جدید هست یا نه ؟
ممنوم میشم راهنماییم کنید.
سلام.
کد sql بررسی شماره کاربر ذخیره شده در دیتابیس
سلام. من جدول mobile_numbers روی هاست ساختم و شماره موبایل ارسال میشه به هاست و کد تایید هم درست میشه ولی مرحله بعدش برای اینکه کد تایید از هاست به گوشی ارسال بشه مشکل دارم. بعد از ساخت کد تایید تو هاست چه کدی باید تعریف بشه تا بتونه با وب سرویس این کد تایید بفرسته سمت کاربر؟ممنون میشم راهنماییم کنید.
سلام.
هر سرویس دهنده پیامکی کد مخصوص به خود رو برای ارسال داره که اینجا برای ۲ سرویس دهنده قرار داده شده که باید اطلاعات یوزر و پس یا api رو بزنید تا از پنل شما بتونه ارسال کنه. این کد در خود سایتشون موجود هست به همراه آموزش
ممنون.اگر امکانش هست از طریق واتس آپ با شما در تماس باشم.
سلام آقای شفیعی، وقت شما بخیر
یکی از دوستان در خارج از کشور برای ارائه خدمات به مشتری از یک اسکریپت php استفاده میکنه که نیاز داره شماره موبایل مشتریهای رو با ارسال کد پیامکی تایید کنه.
شما میتونید لطف کنید بعنوان پروژه این کار رو برای ایشون انجام بدید؟
سلام. ممنون.
تلگرام یا واتساب ۰۹۲۱۰۸۱۶۸۴۳ پیام بدید
سلام و وقت بخیر
برای ارسال سامانه پیامکی رادکام چه کار می توانیم انجام دهیم ؟
سلام ممنون.
در سایت رسمی خودشان فایل نمونه php رو دانلود و استفاده کنید
باسلام
اگربخواهیم با زدن روی ارسال مجدد، کد otp در جدول آپدیت بشه تگ a موجود و کد بک-اند رو به چه شکل بایستی تغییر داد؟
سلام. باید از ajax استفاده کنید
https://netparadis.com/jquery-tutorial-24-ajax/
سلام مجدد . اقای مهندس یک ارور که الان دارم این هست
[۰۹-Feb-2021 12:03:38 UTC] PHP Notice: Undefined variable: otpDisplay in /…/login/index.php on line 17
میشه راهنمایی کنید لطفا
سلام. دقیقا بنده نمیدونم کدتون به چه شکل هست ولی به هر حال خطای notice مهم نیست و اینجا گفته شده که جایی تعریف نشده این متغییر وگرنه اگر نمایش خطا رو ببندید این خطا اختلالی درکارکرد برنامه ایجاد نمیکنه
کدها دقیقا همونی هست که شما لطف کردید تو سایت گذاشتید .
otpDisplay = 1
این متغیرو میگه تعزیف نشده که منم راستش سر در نیاوردم این چی هست که در کدها قرار داره ؟
شما باید کدهای php رو قبل کدهای html قرار بدید تا این خطا برطرف بشه
با سلام وقت بخیر
ببخشید برای ایجاد شماره پروفایل که برخی سایت ها هنگام عضویت ایجاد میکنند . راحل چیه لطفا راهنمایی کنید .
مثالا شماره پروفایل روبرو https://xxxxx.ir/1381288190
سلام. ممنون.
شماره پروفایل که با یک تابع مثل mt_rand() ایجاد میشه که یک شماره تولید میکنه مهم نمایش آن هست که در اینصورت شما باید url ها را باز نویسی کنید یعنی تعریف کنید که یک مقداری عدد در آدرس بود یا مثلا بصورت domain.com./@hasan بود به پروفایل هدایت بشه که از htaccess باید استفاده بشه یا اینکه اگر کدنویسی سایت بصورت mvc هست که راحت تر میتونید انجام بدید
در اینجا نحوه ساخت چنین url ها آموزش داده شده :
https://netparadis.com/generate-seo-friendly-url-in-php
سپاس . شماره های تصادفی که این تابع تولید میکند امکان دارد در دراز مدت شبیه به هم را تولید کند باشند ؟ یا با قرار دادن شرط و چک کردن دیتابیس باید جلوی ایجاد شماره عین هم را گرفت؟
همانجا که تولید میشه باید همزمان یک درخواست به دیتابیس بزنید و این شماره تصادفی رو چک کنید که اگر تکراری بود مجدد یکی دیگه ساخته بشه و اگر هم تکرار نبود که اوکی هست و داخل دیتابیس ثبت میشه
قربان شما بابت جواب دهی صریح و عالیتون . سپاسگذارم
خواهش می کنم. موفق باشید.
با سلام عرض ادب
استاد در کنار نوار ابزار لینک سایت شما علامت قفل هستش. برای این که سایت (سایتم وردپرس نیس) را به این طریق قفل کنیم . باید از چه کدی استفاده کرد. لطفا راهنمایی کنید.
سلام. از هاستینگ ssl بخرید
استاد خیلی وقته ssl بین المللی خریداری شده . ولی من لینک های داخلی سایت رو با http لینک دهی کردم و در فرم ادمین سشن دستی استفاده کردم . به نظرتون دلیلش اینا میتونه باشه
بله کل لینک های صفحه باید https باشند و میتونید صفحه رو view-source بزنید و بگردید کدام لینک ها http هستند و در نهایت بک اند تغییر بدید
لینک سایتتو بده
باسلام خدمت استاد
برای ارسال کد احراز صحت شماره موبایل و فراموشی رمز عبور که کد رو به موبایل شخص ارسال میکنه که برخی سایت ها استفاده میکنند از کدام سرویس پیامکی خریداری کنم.
سلام. لطف دارید
سایت کاوه نگار رو پیشنهاد می کنم.
kavenegar.com
موفق باشید.
سایت وردپرس نیس با php نوشتم پنل پیامکی باشه که زیاد پیچیده نباشه . درضمن سایت کاوه نگار تعرفه هاش بالاست . سایت دیگری سراغ ندارین.
با یک جستجوی ساده و بررسی قیمت ها میتونید ببینید کدومش قیمت مناسب هست.
اگر تعداد پیامک زیادی نمیخواید بفرستید این قیمت ها مهم نیست ولی برای تعداد بالا میتونید بگردید پیدا کنید با جستجوی خرید پنل پیامک در گوگل
سلام لطفا راهنمای استفاده از وب سرویس ارسال پیامک کد فعال سازی از طریق سامانه پیامک فراز اس ام اس را نیز توضیح و اموزش دهید.
سلام. کل کدی که برای ارسال پیامک با فراز اسمس نیاز دارید این هست :
در آرایه $param می توانید اطلاعات را ویرایش کنید.
uname و pass همان یوز و پسورد پنل farazsms شماست و from نیز شماره خط است. داخل آارایه rcpt_nm نیز بیاید شماره همزاه مقصد را وارد کنید. message نیز همان پیام ارسال هست
موفق باشید.
سلام این وب سرویس url هست و ناظر انسانی باید پیامک رو تایید کنه برای موارد تایید شماره موبایل باید از وبسریس پترن استفاده بشه که پیامک ها بدون تایید ناظر انسانی با سرعت بالا و کمتر از ۵ ثانیه ارسال بشه
لطفا این مورد رو بررسی کنید.
سلام. برای پیامک هایی که به مشتریان یا کاربرانی که داخل سایت عضو می شوند یا سفارشی ثبت می کنند باید از ارسال سریع که حالا در سرویس های مختلف نام های متفاوتی داره استفاده بشه ولی برای پیامک شخصی مثل تراکنش های شخصی سایت از همین روشی که گفته شد میتونید استفاده کنید.
برای ارسال سریع باید یک قالبی با پارامتر داخل پنل پیامکی بسازید و بعد مدیریت اون رو تایید کنه و بعد داخل کد میتونید بدون تعریف متن آیدی اون قالب رو ست کنید که حتی برای افرادی که پیامک تبلیغاتی رو بستند ارسال میشه و برای احراز هویت ثبت نام ها مناسب هست.
کد کامل ارسال سریع به اینصورت هست :
که متغییر $patter_code همان آیدی قالب است که باید داخل پنل ثبت و تایید بشه
موفق باشید.
سلام خسته نباشید
من از این وب سرویس مزخرف فراز اسم اس خریداری کردم و ویدئو یا pdf آموزشی ندارن حالا موندم چه کار کنم لطفا شما راهنمایی کنید
$pattern_code = “139”; من یوزر و پسورد و خط اختصاصی رو پر کردم حالا بگین متغیر ۱۳۹ ماله چیه؟؟؟؟؟ من باید تغییر بدم؟
همه متغییر هارو پرکردم با اطلاعات و پیامک ارسال نمیکنه . در لوکال هم تست میکنم و هیچ پیغام خطایی یا هیچ پیغامی نمایش نمیده؟
سلام. ممنون.
باید داخل پنل شما ییام اختصاصی با متن و متغییر مورد نظر ایجاد کنید و توسط مدیریت بررسی و تایید میشه و بعد ایدی اون رو داخل این متغیر قرار میدید
ببخشید یادم رفت بگم
در این کدها کدوم تابع پیام ارسال شدن یا نشدن پیام رو گذارش میده؟
این کدها فقط خطای نام کاربری و پسورد رو نشون میده؟
داخل sendSMS() باید خروجی سرویس پیامکی رو دریافت و بررسی کنید
با سلام.
چه طور می توانم از spam در هنگام ثبت نام موبایل جلوگیری کنم؟
فرض کنید یک مزاحم یا هکر از طریق اپ خود بنده شروع به درخواست ارسال زیادی verification code می کند؟
آیا برای محدود کردن این کار، شما ایده ایی دارید؟
سلام.
نیاز هست که اگر فردی یا شماره یکبار درخواست کرد برای آن دو دقیقه ارسال درخواست مجدد را محدود کنید که اینکار می تونه با کوکی سشن و دیتابیس انجام بشه. برای دیجیکالا تلگرام واتساپ به اینصورته
با عرض سلام و خسته نباشید
بنده کد های Php API رو از Sms.ir گرفتم و اطلاعات پنل خودم رو وارد کردم. وقتی در لوکال هاست تست میکنم به درستی پیامک رو ارسال میکنه ولی وقتی از دامنه و هاست خودم که لایو هست (https://neakc.ir) استفاده میکنم با ارور bool(false) مواجه میشم. در وبسایت sms.ir مشکل رو جستجو کردم و میگه “این خطا مربوط به به روز رسانی فایل pem می باشد که با تنظیمات SSL دچار اشکال شده است”.
نظر شما چیه؟ اگر راهنمایی کنید ممنون میشم.
سلام ممنون.
یکبار اسکریپت را بدون ssl اجرا کنید و نتیجه را ببینید
تشکر بابت پاسخ
یادم رفت ذکر کنم که بدون SSL هم اجرا کردم اما مشکل همچنان پابرجاست، حتی کد های Php Postman هم استفاده کردم اما مشکل رفع نشد و پیامک ارسال نمیشه، حتی یک بار تمامی مراحل و کدها رو روی هاست Zagrio.com تست کردم، یک بار هم روی Hostnegar.com (اما همچنان مشکل پا برجاست) تا اینکه با استفاده از یک سیستم ویندوزی که سایت روی IIS اجرا میشد تست کردم و پیامک فقط با یکی از کد های PHP نرم افزار postman مچ شد و ارسال شد و مشکل اینجاست که این سیستم ویندوزی مشکل دیتابیسی و مشکلات دیگه ای داره که نمیشه به عنوان هاست ازش استفاده کرد و باید از همون هاست Zagrio.com استفاده بشه که از اون طریق پیامک ارسال نمیشه و ارور (bool(false میده. میدونم مشکلم تخصصی و دشواره با تیممون هم خیلی جاها دنبالش گشتیم چیزی پیدا نکردیم😂 به هر حال تشکر بابت کمکتون
با سلام
جناب شفیعی
سایت بنده با تایید کد پیامکی، و تعداد دریافت کد ۱۲۳۴۵۶۷۸ رقمی خاستم تعداد رو به مثلا ۱۲۳۴ تغییر بدم
چطور میتونم این تغییر انجام بدم
سلام. بنده دقیق اطلاع ندارم کدتون به چه صورته یا میدونید دقیقا کدهای مربوط به پیامک در کدام فایل و خط کدها هست ولی اگر میدونید در اون بخش از توابعی مثل rand استفاده شده که میتونید تعداد عدد رو تغییر بدید.
سلام مجدد مهندس
سایت تحت php طراحی شده، متاسفانه اطلاعی از کدهای مربوط به پیامک در کدام فایل هستند رو ندارم
معمولا در کدام بخش و کدام پوشه میتونه باشه؟
سلام.
اصلا مشخص نیست در کدام بخش قرار دادند چون معماری و نحوه کدنویسی برای هر شخص یا سازمان متفاوت است. میتونید با یه برنامه نویسی هماهنگ کنید یا کل فایل ها رو دانلود کنید روی سیستم و بعد داخل یک فولدر قرار بدید و بعد نرم افزار grepWin رو دانلود و روی فولدر راست کلیک و نرم افزار را باز کنید و کلمه sms رو جستجو کنید یا موارد مشابه یا متن پیامک تا بتونید محل کد رو پیدا کنید
https://download.ir/دانلود-نرم-افزار-grepwin/
سلام خوبین ؟
میخاستم بدونم سورس کدی دارین که برای ثبت نام و ورود به سایت از همین ساختار موبایل استفاده کنه ؟؟
لوگین با موبایل و ارسال کد ورود به کاربر
رجیستر با موبایل و ایمیل و لوگین مثل ساختار بالا …
با تشکر
سلام. ممنونم.
متاسفانه دقیقا چنین موردی نداریم و باید بتونید با دانش php این دو رو ترکیب کنید :
https://netparadis.com/registration-and-login-system-php
با سلام می تونید پلاگین برای عضویت جوملا هم توضیح بدید
سلام.
قالب کلی به اینصورتی که قرار دادیم است وباید از این کدهای قرار داده شده استفاده کنید به اینصورت که بابد کمی با پلاگین نویسی جوملا آشنا باشید.
موفق باشید.
سلام علیکم
لینک برام ایمیل شد ولی با خطای Invalid download link مواجه شدم.
سلام. بررسی شد. لینک ارسالی منقضی شده
لطفا مجدد از بخش باکس دانلود ایمیل خود را وارد کنید تا لینک برای شما ارسال شود.
همچنین می توانید تمامی فایل های سایت را بدون زدن ایمیل و فقط با یکبار ثبت نام در سایت بصورت مستقیم دانلود کنید.
موفق باشید.
سلام خسته نباشین.من سورس کدتون رو دانلود کردم دیتابیسی که گفتین رو هم ساختم ولی وقتی شماره رو وارد میکنم کد اعتبارسنجی واسم ارسال نمیشه.لازمه توی سورس کد تغییری ایجاد شه؟ممنون میشم کمکم کنید
سلام ممنون.
باید یک پنل پیامکی خریداری کنید و اطلاعات آن را در سورس ویرایش کنید.
موفق باشید.
مرسی،اگه میشه آدرس جایی که باید پنل رو خریداری کنم رو بفرسین واسم
بفرمایید
https://www.melipayamak.com/price
دمت گرم
در جوملا یک فرم درج آگهی هست که یک کامپوننت هست و یک ماژول . من میخوام کد تائیدیه رو به قسمتی از فرم اضافه کنم که پس از درج آگهی برای کاربر کد احراز هویت بره و بعدش آگهیش بره تو صف تائید . دقیقا مثل دیوار موقع ثبت آگهی
این به چه صورت میشه ؟
ممنونم
سلام. کدهای ارسال پیامک رو به صورت یک تابغ دربیارید و آرگومان ها را شامل یک شماره موبایل و کد تاییدیه قرار بدید.
هر کجا که خواستید(بعد سابمیت فرم توسط کاربر ) شماره موبایل کاربر را به همراه کد را به تابع پاس بدید تا پیامک ارسال شود.
این تابع را هم درجایی که بصورت سراسرسی می شود فراخوانی کرد قرار بدید مثلا در ورودپرس داخل functions.php قرار می گیرید و از هر کجای سیستم قابل صدازدن است برای جوملا هم همچنین چیزی احتمالا هست یا اگر نبود کل کد پیامک را بعد سابمیت (جایی که داده های در دیتابیس بصورت صف تایید ثبت می شوند) قرار بدید.
موفق باشید.
درود .
شما سفارش قبول میکنید؟
جزییات سفارش را از طریق بخش تماس با ما ارسال کنید
چگونه این کد را در functions.php به صورت تابع در اورم .این کد وب سرویس پیامکی پارس گرین می باشد .لطفا کد را اگر می شود خودتان درست کنید.
سلام. این آموزش را دنبال کنید.
https://netparadis.com/php-tutorial-14-functions-1/
موفق باشید.
سلام
اطلاعاتی که در بخش header , بخش body که توسط اندروید با مثلا دستورات retrofit فرستاده میشه با چه کدی توسط php در سمت سرور دریافت میشه؟
و اگه لطف کنید هاستی رو برای خرید معرفی کنید که بشه سرور رو راه اندازی کنم و فایل ها رو قرار بدم معرفی کنید ممنون میشم.
سلام.
توسط $_REQUEST و یک جستجوی ساده گوگل “خرید هاست لینوکس” انجام بدید.
موفق باشید.
مجددا سلام ببخشید من خیلی سوال میکنم تنها سایتی که تونستم جواب بگیرم از این سایت بوده
من فایل هام رو داخل سایت gigfa.com گذاشتم و وقتی request توسط اندروید یا postman رو میفرستم این جواب رو میده
function toNumbers(d){var e=[];d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});return e}function toHex(){for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e=””,f=0;f
d[f]?”0″:””)+d[f].toString(16);return e.toLowerCase()}var a=toNumbers(“f655ba9d09a112d4968c63579db590b4”),b=toNumbers(“98344c2eee86c3994890592585b49f80”),c=toNumbers(“cf276970df8fd0a725c277324cfcd380″);document.cookie=”__test=”+toHex(slowAES.decrypt(c,2,a,b))+”; expires=Thu, 31-Dec-37 23:55:55 GMT; path=/”; location.href=”http://ahmadandroid.gigfa.com/person.json?i=1″;
This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
مشکل کجاست؟
بازم ممنون
سلام. این مشکل از سمت سرور هستش و ارتباطی با کدهای شما ندارد.
کاملا واضح و مشخص است که روی سرور مورد نظر یک ماژول پروتکشن/امنیتی برای جلوگیری از ارسال درخواست ها از سمت سرویس های APi , ربات هایی مثل postman یا cURL دارد که فقط امکان ارسال درخواست از طریق مرورگر را می دهد و یک برنامه خارجی بجز مرورگر اجازه ارسال درخواست و دریافت پاسخ را ندارد. چون این ماژول با ایجاد کوکی ها و یک سری عملیات عجیب مدیریت سیشن این مورد رو کنترل می کند که عملیات هم نیاز به جاوااسکریپت دارد.
راه هایی هم برای دور زدن این ماژول آنتی-بات testcookie وجود دارد به اینصورت که به هدر درخواست خود کوکی رو اضافه کنید. مثلا برای این api شما کوکی ولید و مادام العمری(۲۰۳۷) که میتونید اضافه کنید بنام _test و مقدار ۲ccb7a6bcd50cdf2b357af28214d848d است. (به هدر درخواست HTTP خود اضافه کنید)
نتیجه این بایپس رو که در postman اجرا شده رو میتونید ببینید



(با اضافه کردن کوکی به هدر) :
البته چون هاست شما رایگان است پس این محدودیت وجود دارد که با خرید یک هاست واقعی یا تهیه هاست رایگان https://www.000webhost.com می تونید این مشکل رو بدون دور زدن ماژول امنیتی حل کنید. (قبلا برای اجرای ربات روی این هاست تست شده)
موفق باشید.
سلام خسته نباشید من طبق کد نمونه خود سایتsms.ir این اطلاعات رو که در اختیار من قرار داده برای تست جایگذاری کردم ولی جواب زیر رو به من میده لطفا راهنماپی کنید که مشکل کار کجاست و این هم بگم که من روی localhost دارم تست میکنم
ممنون
D:\far\w\mysite\sendsmsbyheader.php:212:boolean false
سلام.
بعضی جاهای کد به خاظر اینکدینگ فایل و qoute ها مشکل داشت که به علاوه یک سری موارد دیگر حل شد.(روی لوکال تست شد.)
چند پیامک هم باهاش ارسال شد که باید از پنل چک کنید که ارسال شده یا خیر.
به هر حال کد سالم است و به جای خروحی false الان خروجی “ارسال با موفقیت انجام گردید” برگشت داده می شود.
کد کامل را از اینجا میتونید دریافت کنید که باید اطلاعات پنل پیامک را نیز تغییر بدید .
موفق باشید.
ممنون مشکل حل شد تست کردم جواب داد
خوشحالیم که حل شد. موفق باشید.
با سلام مجدد
من برای request زدن از طریق volley مشکل ندارم مشکلم در سمت سرور و پنل هستش مثلا اگه من بخوام از پنل sms.ir استفاده کنم از همین کدهای php بالا برای سمت سرور میشه استفاده کرد و چه تغییراتی در قسمت کد مربوط به پنل باید بدم
بازم ممنون از اینکه وقت میزارید و به سوالات پاسخ میدین
سلام. کدهای بالا را به روشی که گفته شده در هاست قرار بدید و بعد یک آدرس url برای API طراحی کنید تا بتوانید با ریکویست زدن به api پیامک ارسال کنید
آموزش های زیر را دنبال کنید :
https://netparadis.com/php-mysql-rest-api-for-android
https://netparadis.com/php-authorization-with-jwt-2
موفق باشید.
سلام
ممنون از اطلاعات خوبتون
من میخوام از ارسال کد تائید ثبت نام برای اندروید استفاده کنم
ممنون میشم راهنمائی کنید
سلام. خوشحالیم که مفید واقع شده.
برای اینکار شما باید در سمت وب سرور فایل ها و کتابخانه های مربوط به ارسال sms را آپلود و بوسیله url که یک api برای دسترسی به سرویس ارسال sms است استفاده کنید.
مثلا http://site.com/api2/sendSMS?phone=099999&msg=hi&key=1223
برای مدیریت درخواست ها و اجرای یک url هم میتونید در اندروید از کتابخانه volley یا راهکارهای دیگر استفاده کنید
https://developer.android.com/training/volley/simple
موفق باشید.
سلام
من دارم یه اپ اندروید بر پایه HTML5 میسازم ولی توی تایید عضویت با SMS گیر کردم
می خوام از پنل کاوه نگار استفاده کنم
راستش آشنایی چندانی با PHP ندارم بخاطر همین از شما میخوام راهنماییم کنید باید ججوری پیاده سازی کنم
اینم مستندات کاوه نگار https://github.com/kavenegar
یک دنیا تشکر
سلام. خیلی هم عالی . برای اینکار شما نیازه که یک سرور داشته باشید و کدهای php ای که این وب سرویس ارایه میده روی هاست قرار بدید و بعد اون رو بصورت یک API دربیارید و با ارسال اطلاعاتی مثل شماره موبایل و غیره از اپ اندرویدی کد تاییدیه رو به موبایل کاربر ارسال کنید که نیازه برای اینکار php و mysql رو بلد باشید تا بتونید بدون مشکل پیاده سازی کنید.
https://kavenegar.com/sdk.html
ساخت api : https://netparadis.com/?s=rest
آموزش composer : https://netparadis.com/what-composer-in-php
موفق باشید.
انجام شد. ممنونم
سلام ممنونم ولی متاسفانه اطلاع چندانی از روش انجام این کاری که شما فرمودین ندارم دارم
با سلام مجدد :من از پنل پیامکی قاصدک استفاده می کنم ولی هرکاری کردم نتونستم تنظیمات و تغییرات لازم را انجام بدم .ممکنه راهنمایی بفرمایید با تشکر فراوان
$curl = curl_init();
curl_setopt_array($curl,
array(
CURLOPT_URL => “http://api.smsapp.ir/v2/send/verify”,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => “”,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => “POST”,
CURLOPT_POSTFIELDS => “type=1¶m1=&receptor=09191111111&template=testvoice”,
CURLOPT_HTTPHEADER => array(
“apikey: yourapikey”,
“cache-control: no-cache”,
“content-type: application/x-www-form-urlencoded”,
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo “cURL Error #:” . $err;
} else {
echo $response;
}
سلام. شما باید فایل functions.php را تغییر و این کدهای خودتون رو بصورت یک تابع دربیارید.
موفق باشید.
با سلام ممنون از برنامه خوب شما .چطور میشه کد رو جوری تغییر داد که اگر کاربر شماره موبایل تکراری وارد کرد بهش اعلام کنه که این شماره قبلا ثبت شده است؟ با تشکر
سلام.خوشحالم که مفید واقع شده.
در خط ۱۶ فایل index.php نیاز است که شماره موبایل دریافت شده را در کویری sql استفاده کنید و وجود اون رو در دیتابیس چک کنید که نیاز است php و mysql بلد باشید. اگر شماره موبایل از قبل وجود داشت می توانید به اینصورت یک خطا را برگشت بدید
$statusMsg = array(
'status' => 'error',
'msg' => 'این شماره موبایل قبلا ثبت و با موفقیت اعتبارسنجی شده است'
);
موفق باشید.
سلام من میخواهم از پنل sms.ir استفاده کنم برا وریفای چیکار کنم لطفا راهنمایی کنین ممنون
سلام. از باکس دانلود سورس رو دریافت کنید و داخل کد این پنل کدش قرار گرفته.