حمید
2 سال پیش توسط حمید مطرح شد
2 پاسخ

مشکل در ربات تلگرام

با سلام سال نو مبارک
این کد های مربوط به بررسی نام کاربری و مرز عبور در ربات من هست

function bot($method, $datas=[])
{
    $url = "https://api.telegram.org/bot" . API_KEY . "/" . $method;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $datas);
    $res = curl_exec($ch);
    if(curl_error($ch))
    {
        var_dump(curl_error($ch));
    }
    else
    {
        return json_decode($res);
    }
}

function makeKeyboard(array $opt)
{
    $key = array(
        'keyboard' => $opt,
        'resize_keyboard' => true,
        'one_time_keyboard' => true,
        'selective' => true
    );

    return json_encode($key, TRUE);
}

function inline(array $opt)
{
    $key = array(
        'inline_keyboard' => $opt
    );

    return json_encode($key, TRUE);
}

function inlinebtn($text)
{
    $opt = array(
        array(
            array(
                'text' => $text,
                'callback_data' =>$text
            )
        )
    );

    return $opt;
}

$menu = array(array("ورود"));
$update = file_get_contents('php://input');
file_put_contents('bot.txt', $update);
$update = json_decode($update, TRUE);
$chat_id = $update['message']['from']['id'];
$message = $update['message']['text'];
$return_message = urlencode($message);
$btn = makeKeyboard($menu);

if($message == '/start')
{
    bot('sendMessage', "chat_id=$chat_id&text=به ربات سیوان مال خوش آمدید!&reply_markup=$btn");
}

if($message == "ورود")
{
    bot('sendMessage', "chat_id=$chat_id&text=نام کاربری خود در سایت را وارد نمایید&reply_markup=$btn");
}

if (in_array($message, $userEmailValid))
{
    bot('sendMessage', "chat_id=$chat_id&text=رمز عبور خود را وارد نمایید&reply_markup=$btn");
}

$currentUsers = App\User::where("email", $message)->get();
$user_entered_password = '';

foreach($currentUsers as $currentUser)
{
    $user_entered_password = $currentUser->password;
}

if (password_verify($message, $user_entered_password))
{
    bot('sendMessage', "chat_id=$chat_id&text=شما وارد شدید&reply_markup=$btn");
}
else
{
    bot('sendMessage', "chat_id=$chat_id&text=نام کاربری یا رمز عبور اشتباه است&reply_markup=$btn");
}

ولی زمانی که رمز رو وارد می کنم میدونم درست هست رمز ، اما باز هم مقدار false بر میگردونه در قسمت

if (passwordverify($message, $userenteredpassword))  
{  
bot('sendMessage', "chatid=$chatid&text=شما وارد شدید&replymarkup=$btn");  
}  
else  
{  
bot('sendMessage', "chatid=$chatid&text=نام کاربری یا رمز عبور اشتباه است&replymarkup=$btn");  
}

ممنون میشم راهنمایی بفرمایید.


ثبت پرسش جدید
مهدی مشایخی
تخصص : برنامه نویس پایتون - ماشین لرن...
@MahdiMashayekhi 2 سال پیش آپدیت شد
0

سلام روز بخیر
به نظر می‌رسه مشکلی که در کد شما وجود دارد مربوط به تفاوت میان دو نوع هش کردن پسورد هست.

در صورتی که شما در دیتابیس از تابع passwordhash برای هش کردن پسورد استفاده کردید، باید در کد خود از تابع passwordverify استفاده کنید تا بتونید پسورد ورودی کاربر را با پسورد هش شده در دیتابیس چک کنید.

در صورتی که در دیتابیس از تابع دیگری برای هش کردن پسورد استفاده کردید، باید از همان تابع در کد خود استفاده کنید.
در هر صورت، با توجه به کدی که دارید، احتمالاً تابع passwordverify کار نمی‌کنه چون پسورد شما با نوع هش کردن پسورد در دیتابیس مطابقت ندارد.


حمید
@hamidtinker 2 سال پیش مطرح شد
0

ممنون از جوابتون دوست من
من از این تابع برای هش کردن پسورد استفاده کردم موقع ثبت نام در سایت

$inputs['password'] = password_hash($request->password, PASSWORD_DEFAULT);

و وقتی از password_verify استفاده میکنم مقدار false بر میگردونه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام