Pereiti prie turinio

Nežinau kaip padaryti SQL


Rekomenduojami pranešimai

Sveiki,

Susidūriau su keletu problemų ir nežinau kaip tai padayti.

Noriu atvaizduoti iš mysql sutrumpintus url (pvz. duomenų bazės lentelė url ir joje esantis alias kuriame visi sutrumpinti adresai + atvaizdavus reikia random redirect visų šitų adresų kad kiekviena karta perkrovus skripta iš duomenų bazės būtų paimtas vis kitas ten esantis url ir jis iš kart redirectintų į tą adresa pvz: http://adresas.lt/R8s8 (alias iš db)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

SELECT alias FROM url ORDER BY RAND() LIMIT 1

 

Tiesa, rand() gali būti lėtas su didelėmis lentelėmis. Galima bandyti programos pusėje rinkti atsitiktinį ID nuo 1 iki MAX(id) ir tada pagal jį rinktis iš lentelės.

 

O pats skriptas su atvaizdavimu, kaip atrodytų ? ir gal įmanoma visa tai su 301 redirect padaryt ?

Redagavo sinonimas
Nuoroda į pranešimą
Dalintis kituose puslapiuose
<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");

$query = mysqli_query($con,"SELECT FLOOR(RAND() * COUNT(*)) AS `rand` FROM `url`");
$row = mysqli_fetch_assoc($query);

$query = mysqli_query($con,"SELECT * FROM `url` LIMIT ".$row['rand'].",1");
$row = mysqli_fetch_assoc($query);
header ('HTTP/1.1 301 Moved Permanently');
header('Location: http://adresas.lt/'.$row['alias']); 

mysqli_close($con);
?> 

Redagavo Avice
Nuoroda į pranešimą
Dalintis kituose puslapiuose

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");

$query = mysqli_query($con,"SELECT FLOOR(RAND() * COUNT(*)) AS `rand` FROM `url`");
$row = mysqli_fetch_assoc($query);

$query = mysqli_query($con,"SELECT * FROM `url` LIMIT ".$row['rand'].",1");
$row = mysqli_fetch_assoc($query);
header ('HTTP/1.1 301 Moved Permanently');
header('Location: http://adresas.lt/'.$row['alias']); 

mysqli_close($con);
?> 

Pasiskaityk Justino parasa ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jis rašo,kad naudokite PDO.PDO > mysqli

Nereik būt radikalu. :D MySQLi yra okay, tiesiog PDO yra dar kiek naujesnis už mysqli ir ne specifinis vienai duomenų bazei.

 

Aišku, čia tai irgi nesąmonė daroma:

$query = mysqli_query($con,"SELECT * FROM `url` LIMIT ".$row['rand'].",1");

Tik tiek, kad dabar yra saugi reikšmė, paprasčiausias int'as iš duomenų bazės. Bet vis tiek skauda žiūrėti :D

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nereik būt radikalu. :D MySQLi yra okay, tiesiog PDO yra dar kiek naujesnis už mysqli ir ne specifinis vienai duomenų bazei.

 

Aišku, čia tai irgi nesąmonė daroma:

 

Tik tiek, kad dabar yra saugi reikšmė, paprasčiausias int'as iš duomenų bazės. Bet vis tiek skauda žiūrėti :D

kodėl?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

kodėl?

Kodėl nesąmonė? Nes sujunginėjami argumentai tiesiai į string. Saugumas automagiškai nepriklauso nuo PDO ar MySQLi, o nuo to, ar naudoji juose esantį parametrų bindinimą. Jei taip pat, kaip čia padarei, padarytum su vartotojo įvestais duomenimis, tai prilygtų mirties nuosprendžiui.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kodėl nesąmonė? Nes sujunginėjami argumentai tiesiai į string. Saugumas automagiškai nepriklauso nuo PDO ar MySQLi, o nuo to, ar naudoji juose esantį parametrų bindinimą. Jei taip pat, kaip čia padarei, padarytum su vartotojo įvestais duomenimis, tai prilygtų mirties nuosprendžiui.

Tokioj situacijoje nera ko jaudintis. Ka daryciau kitajs atvejajs cia jau kitas reikalas.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 mėnesio...

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");

$query = mysqli_query($con,"SELECT FLOOR(RAND() * COUNT(*)) AS `rand` FROM `url`");
$row = mysqli_fetch_assoc($query);

$query = mysqli_query($con,"SELECT * FROM `url` LIMIT ".$row['rand'].",1");
$row = mysqli_fetch_assoc($query);
header ('HTTP/1.1 301 Moved Permanently');
header('Location: http://adresas.lt/'.$row['alias']); 

mysqli_close($con);
?> 

 

Kaip padaryti, kad atidarius random url iš duomenų bazės praėjus tarkim 5 sek įvyktų automatinis 301 redirect kuris iš kitos duomenų bazės lentelės ištrauktų url ir po ~10 sek vėl redirektintų su 301 redirect į dar viena db lentele su vėl kitais url.

 

Trumpiau tarent trijų random url redirect vienas po kito

Redagavo sinonimas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...