راکت

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

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");  
}

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

ثبت پرسش جدید

پاسخ‌ها

2
مهدی مشایخی
مهدی مشایخی
@MahdiMashayekhi

تخصص: برنامه نویس پایتون - ماشین لرنینگ - جنگو

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

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

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

حمید
حمید
@hamidtinker

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

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

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

شاید پاسخ شما همین‌جا باشد

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

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