Avatar billede Morten Professor
20. august 2020 - 08:50 Der er 3 kommentarer

Database / Sikker call-back / stramme regler for hent-ning af data

Hej

Vil høre om der er nogen der kender til at få en database til at være helt striks med data. jeg koder i php og mysql.
Jeg oplever mit program ikke helt er heavy nok med regler til feks. et id som bliver generert.
Jeg har været igang med at lave et kurv system mellem 3 domæner 2 alias til en primary domæne. Har fået det hele til at spille sammen, men men så ikke alligevel jeg oplever at se, det som en anden person har taget i kurven, det er en tabel i databasen styre det med et id. En cookie med det id til at skrifte side, hvor der kommer et id i url så, hvor der så oprettes det id på det andet alias. til coockie, så den hele tiden følger med. rundt på siderne.

Håber der er nogen der har nogle ideer.

Med venlig hilsen
Morten
Avatar billede Slater Ekspert
20. august 2020 - 09:46 #1
Det lyder som om du kigger i den forkerte retning. Vi har i hvert fald ikke mulighed for at sige noget ud fra hvad du fortæller her.

Du kan ikke komme til at se noget fra en anden persons kurv fordi php eller mysql ikke er "strikse nok" med data. På en eller anden måde må du have sat et forkert id, lavet en id-generator der ikke er unik, eller skrevet noget kode der ikke tjekker for det korrekte. Og det kan vi ikke se.
Avatar billede Morten Professor
20. august 2020 - 12:03 #2
Har lidt kode til lidt af det der gør at man kan se sin kurv fra flere alias:
GUID genrator:
mt_srand((double)microtime()*10000);
        $charid = strtoupper(md5(random_bytes(5)));
        $hyphen = chr(45);// "-"
        $uuid = substr($charid, 0, 8).$hyphen
            .substr($charid, 8, 4).$hyphen
            .substr($charid,12, 4).$hyphen
            .substr($charid,16, 4).$hyphen
            .substr($charid,20,12);

        return $uuid;

Hentning af kurven igennem id:
{
    global $wpdb;
    $table_name = $wpdb->prefix . "**********************";
    $getShowData = $wpdb->get_results($wpdb->prepare("SELECT *
                                  FROM $table_name WHERE ip = %s ", $_COOKIE['guid']));
    $getAllValues = array();
    foreach ($getShowData as $data) {
        if ($data->ip == $_COOKIE['guid']) {
            foreach (WC()->cart->get_cart() as $getData => $value) {
                $getAllValues[] = $value['variation_id'];
            }
            $areThere = in_array($data->variation_id, $getAllValues);

            if (!$areThere) {
                WC()->cart->add_to_cart($data->product_id, 1, $data->variation_id);
            }
        }
    }
}

Håber det kan give en ide til hvad der sker.
Avatar billede mr_chaos Praktikant
18. september 2020 - 22:31 #3
Din GUID er ikke unik nok, husk at alt hvad der kommer fra klienten kan fakes.

Så i stedet for bruge en cookie, så ville jeg nok vælge bare at bruge PHP sessions, og så kan du altid gøre det mere sikkert derfra.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester