PHP-da seans o'zgaruvchisini yangilang

Okey, foydalanuvchi o'z profil rasmini o'zgartirganda muammo yuzaga keldi. Agar men aqldan ozganim bilan to'g'ri tushungan bo'lsam (mening fikrimcha), bu mening sessiyam yangilanmaganligi sababli ... Shunday qilib, bu foydalanuvchining ma'lumotlar bazasiga rasm faylini yuklashga qodir bo'lgan yuklash faylidir, rasm qo'shiladi va agar rasmni ma'lumotlar bazasida o'zgartirgan bo'lsam ham, men hali ham eski rasmni ko'rsam ham yaxshi lekin ishlaydi ... Yangi rasmni ko'rish uchun tizimga kirish va kirishni boshlaganda,

  • Ishtirokchisiz tizimga kirgan holda sessiyamni yangilashim mumkin bo'lgan ba'zi bir usul bormi?
  • Mening seansim bu tartibsizligimi?

Bu yordam beradimi, bilmayman, lekin bu mening kodim

<?php
if(isset($_FILES['file']) )
{

move_uploaded_file($_FILES['file']['tmp_name'],'files/'.$_FILES['file']['name']);

session_start();
$username = $_SESSION['user'];
$userpic = 'files/'.$_FILES['file']['name'];
$id = $_SESSION['id'];

include ("connect.php");
$sql = $con->prepare('UPDATE users SET username=?, userpic=? WHERE id = ?');
$sql->bind_param("ssi",$username,$userpic,$id);
$sql->execute(); 
$sql->close();
$con->close();  
echo '<div id = "check"> Your image was succesfully uploaded</div>';
}
else{
echo "no files";}
?>

Va bu mening kirishim bo'lsa, u ham osonlashtiradi:

<?php 

include('connect.php');

$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users";

$result = $con->query($query);

while($row = $result->fetch_object())
{
    if($username == $row->username)
    {

            $checkPassword = password_verify($password,$row->password);
            if($checkPassword ){  //betyder om det är sant
                session_start();
                $_SESSION['loggedIn'] = true; 
                $_SESSION['user'] = $row->username;
                $_SESSION['admin'] = $row->admin;
                $_SESSION['userpic'] = $row->userpic;
                $_SESSION['id'] = $row->id;
                header("Location:music.php?success");
                exit();
                $fail = false;
            }


    }
    else{
        $fail = true;
        if($fail){      
    echo "<script>
    alert('You typed in wrong password or username, please try again mate!');
    window.location.href='music.php';
    </script>";

    }

    }
}?>

Taqdirdan ko'ra ko'proq yordam bering, lekin uni oddiy ahmoq tutishga harakat qiling

1
Foydalanuvchini tasvirni yangilash ... avval siz mavjud papkadan mavjud rasmni ajratib olish va yangi qiymatni yangilash bilan suhbat qiymatini yangilashingiz kerak va HTML-da allaqachon yuklangan bo'lsa ajax orqali tasvirni src-ni yangilash uchun yangi ..... else foydalanuvchi tizimdan chiqmaydi yoki yangilanmaydi, tasvir o'zgarmaydi.
qo'shib qo'ydi muallif Naincy, manba
Foydalanuvchini tasvirni yangilash ... avval siz mavjud papkadan mavjud rasmni ajratib olish va yangi qiymatni yangilash bilan suhbat qiymatini yangilashingiz kerak va HTML-da allaqachon yuklangan bo'lsa ajax orqali tasvirni src-ni yangilash uchun yangi ..... else foydalanuvchi tizimdan chiqmaydi yoki yangilanmaydi, tasvir o'zgarmaydi.
qo'shib qo'ydi muallif Naincy, manba
Picni muvaffaqiyatli yuklaganingizdan so'ng, siz $ _SESSION ['userpic'] = $ row-> userpic; `o'zgaruvchining qiymatini o'zgartirishingiz kerak.
qo'shib qo'ydi muallif prakash tank, manba
$ _SESSION ['userpic'] = $ userpic; 'foydalanuvchilar jadvalini qachon yangilash kerak. Eski tasvirni eslab o'tilgan @Naincy bilan bog'lash.
qo'shib qo'ydi muallif prakash tank, manba
$ _SESSION ['userpic'] = $ userpic; 'foydalanuvchilar jadvalini qachon yangilash kerak. Eski tasvirni eslab o'tilgan @Naincy bilan bog'lash.
qo'shib qo'ydi muallif prakash tank, manba
Barcha javoblar uchun rahmat! Albatta yordam berildi!
qo'shib qo'ydi muallif Unknown Potato, manba
Barcha javoblar uchun rahmat! Albatta yordam berildi!
qo'shib qo'ydi muallif Unknown Potato, manba

6 javoblar

Foydalanuvchi rasmini o'rnatganingizda jadvaldagi mazmunni bog'langan foydalanuvchi bilan yangilaysiz. Biroq, sessiya o'zgaruvchilar mos keladigan qiymat bilan yangilamaysiz.

So'rovni muvaffaqiyatli bajarganingizdan so'ng, muvaffaqiyatli xabarni qaytarishdan oldin sessiya o'zgaruvchisining qiymatini belgilang:

[...]
$_SESSION['userpic'] = $userpic;
echo '<div id = "check"> Your image was succesfully uploaded</div>';
[...]

Tartibga solish: tasvirning o'zgarishi bu pageloadda bo'lmaydi, keyin sodir bo'ladi. Buning sababi, avvalgi qiymatdan shu nuqtaga qadar foydalanayapsiz.

Agar so'rovni tugatsangiz, to'liq sahifa yukini/yo'naltirishni bajarish uchun umumiy yondashuv. Masalan, chiqish xabarini sessiya o'zgaruvchisida saqlashingiz, foydalanuvchini qayta yo'naltirishingiz va chiqadigan xabarlar mavjudligini tekshirishingiz mumkin.

Misol:

[...]
$sql->execute(); 
$sql->close();
$con->close();
$_SESSION['userpic'] = $userpic;
$_SESSION['messages'] = '<div id = "check"> Your image was succesfully uploaded</div>';
header("Location: index.php");

So'ngra, xabarni xohlagan joyga index.php ichida bir joyda shunday bir narsa qo'shasiz:

if (isset($_SESSION['messages']) and strlen($_SESSION['messages']) > 0) {
    echo $_SESSION['messages'];
    unset($_SESSION['messages']);
}
2
qo'shib qo'ydi
u suhbatni yangilaydi, foydalanuvchi yangilanmaguncha, rasm haqiqiy vaqtda o'zgarmaydi.
qo'shib qo'ydi muallif Naincy, manba
Oh namuna uchun rahmat! Ajoyib javob va tushunish oson!
qo'shib qo'ydi muallif Unknown Potato, manba

Foydalanuvchi rasmini o'rnatganingizda jadvaldagi mazmunni bog'langan foydalanuvchi bilan yangilaysiz. Biroq, sessiya o'zgaruvchilar mos keladigan qiymat bilan yangilamaysiz.

So'rovni muvaffaqiyatli bajarganingizdan so'ng, muvaffaqiyatli xabarni qaytarishdan oldin sessiya o'zgaruvchisining qiymatini belgilang:

[...]
$_SESSION['userpic'] = $userpic;
echo '<div id = "check"> Your image was succesfully uploaded</div>';
[...]

Tartibga solish: tasvirning o'zgarishi bu pageloadda bo'lmaydi, keyin sodir bo'ladi. Buning sababi, avvalgi qiymatdan shu nuqtaga qadar foydalanayapsiz.

Agar so'rovni tugatsangiz, to'liq sahifa yukini/yo'naltirishni bajarish uchun umumiy yondashuv. Masalan, chiqish xabarini sessiya o'zgaruvchisida saqlashingiz, foydalanuvchini qayta yo'naltirishingiz va chiqadigan xabarlar mavjudligini tekshirishingiz mumkin.

Misol:

[...]
$sql->execute(); 
$sql->close();
$con->close();
$_SESSION['userpic'] = $userpic;
$_SESSION['messages'] = '<div id = "check"> Your image was succesfully uploaded</div>';
header("Location: index.php");

So'ngra, xabarni xohlagan joyga index.php ichida bir joyda shunday bir narsa qo'shasiz:

if (isset($_SESSION['messages']) and strlen($_SESSION['messages']) > 0) {
    echo $_SESSION['messages'];
    unset($_SESSION['messages']);
}
2
qo'shib qo'ydi
u suhbatni yangilaydi, foydalanuvchi yangilanmaguncha, rasm haqiqiy vaqtda o'zgarmaydi.
qo'shib qo'ydi muallif Naincy, manba
Oh namuna uchun rahmat! Ajoyib javob va tushunish oson!
qo'shib qo'ydi muallif Unknown Potato, manba

Foydalanuvchiga rasmni o'zgartirganda ushbu qadamlar bilan erishish mumkin

  • Yangi rasmni yuklash
  • Muvaffaqiyatli yuklangan - DB ni yangilash
  • Eski rasmni jilddan ajratish
  • Seansni yangi rasm ma'lumotlari bilan yangilash
  • Agar ajaxdan foydalansangiz, img yangi src-i qaytaring va DOM-ni ishlating
  • foydalanuvchi ajaxdan foydalanmaguncha, u sahifani o'zgartirmaguncha.
1
qo'shib qo'ydi

Foydalanuvchiga rasmni o'zgartirganda ushbu qadamlar bilan erishish mumkin

  • Yangi rasmni yuklash
  • Muvaffaqiyatli yuklangan - DB ni yangilash
  • Eski rasmni jilddan ajratish
  • Seansni yangi rasm ma'lumotlari bilan yangilash
  • Agar ajaxdan foydalansangiz, img yangi src-i qaytaring va DOM-ni ishlating
  • foydalanuvchi ajaxdan foydalanmaguncha, u sahifani o'zgartirmaguncha.
1
qo'shib qo'ydi

Siz seansingizda yangilamaysiz !.

Sizning sessiyaingiz hozirda login vaqtida joylashtirilgan va siz yangilashingiz kerak $ _ SESSION ["userpic"] = $ userpic; - yuklash skriptingizda

1
qo'shib qo'ydi

Siz seansingizda yangilamaysiz !.

Sizning sessiyaingiz hozirda login vaqtida joylashtirilgan va siz yangilashingiz kerak $ _ SESSION ["userpic"] = $ userpic; - yuklash skriptingizda

1
qo'shib qo'ydi
PhP |BotsUz
PhP |BotsUz
93 ishtirokchilar

Phpni o'rganishni Hohlasangiz https://t.me/joinchat/AAAAAE-KRc5dd5tPMmGmWA A'zo bo'lin