Atsimenu kazakada senai ieskojau pamokos kurioje butu parodyta, kaip atvaizduoti vartotojo informacija paveiksliuke, tiksliau parase.Taciau nieko gero neradau, tai teko paciam ismokti, taciau buvau visiskai zalias ir tas PHP buvo man "kosmosas".Taciau dabar kai biski geriau ja suprantu, pasirodo buvo labai lengva pasidaryti ta parasa ;)
Taigi, kad zmonems nereiktu ieskoti ilgai ir nuobodziai parodysiu kaip tai reiktu pasidaryti, paprastai ir greitai.
<?php
$c = new mysqli("localhost","root","","vvp"); // naudoju localhost todel pas mane butu : ("localhost","root","","db")
if ($c->connect_errno) {
echo "Negaliu prisijungti prie Duomenu Bazes: (" . $c->connect_errno . ") " . $c->connect_error;
}
// isgauname zaidejo informacija
$getusername = $_GET['zaidejas']; // zaidejo vardas is URL "zaidejas=" kurio turetume ieskoti duomenu bazeje
// duodame uzklausa serveriui
// naudojame PHP OOP PREPARED STATEMENTS
// jie apsaugo mus nuo SQL injekciju per $_GET parametra ir t.t.
// daugiau apie juos cia http://php.net/manual/en/mysqli.quickstart.prepared-statements.php
$stmt = $c->prepare("SELECT id,username,cash,moneybank FROM users WHERE username=?");
$stmt->bind_param("s",$getusername);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows == 0){ // jeigu vartotojas nerastas stabdome kodo veikima
die;
}
else{ // jeigu rastas tesiame
$stmt->bind_result($id,$username,$cash,$moneybank); // jeigu 16-oje eiluteje isgauname tik "username" tada cia ir rasome tik $username pvz: "SELECT username FROM..."
// tada cia bus bind_result($username) ir t.t.
$stmt->fetch();
header('Content-Type: image/jpeg'); // narsyklei nusamkome failo tipa: siuo atveju JPG paveiksliukas
$im = imagecreatefromjpeg("rp/img/thumb.jpg"); // cia ir taip aisku
$black = imagecolorallocate($im, 0, 0,0); // nustatome teksto spalva http://www.colorpicker.com
$font = 'fonts/op.ttf'; // nustatome norima teksto srifta
imagettftext($im, 10, 0, 10, 30, $black, $font, 'Zaidejas: '.$username.''); // vienas tekstas vienoje eiluteje
imagettftext($im, 10, 0, 10, 45, $black, $font, 'Pinigai banke: '.$moneybank.''); // vienas tekstas vienoje eiluteje
imagettftext($im, 10, 0, 10, 60, $black, $font, 'Pinigai rankose: '.$cash.''); // vienas tekstas vienoje eiluteje
imagepng($im);//sukuriame paveiksliuka
imagedestroy($im); // atlaisviname atminti / apkrova serveriui
}
$c->close; // uzdarome prisijungima prie serverio virsuje
?>
Naudojimas
<a href="sig.png?zaidejas=zaidejovardas">
Pasistengiau viska paaiskinti, taciau jei kils kokiu klausimu ,rasyk cia ;)
Naudojimo budai:
Noredami tureti tokia nuoroda: <img src="sig.png?zaidejas=nick" />
idekite si koda i .htaccess
faila:
RewriteEngine On
RewriteRule ^sig\.png$ sig.php
Noredami tureti tokia nuoroda: <img src="zaidejas/nick" />
idekite si koda i .htaccess
faila:
RewriteCond %{SCRIPT_FILENME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^zaidejas/(.*)$ sig.php?zaidejas=$1
SkepticalHippo prieš 9 metus
Labai šaunus dalykas. Tik norėčiau pridėti, kad ne visur leidžia dėti paveikslėlius su .php ir kitomis neaiškiomis galūnėmis. Tokiais atvejais patogiausia būtų priversti šitą kodą išsaugoti paveikslėlį tiesiai į serverį ir susikurti užklausą, kuri karts nuo karto jį atnaujintų (kas 5min).
Erlisbl prieš 9 metus
Jo berods ant IPB forumu neeina .php failu i parasus deti.Tai galima su .htacces pasidaryti is .php i .png ir tiek ;)
SkepticalHippo prieš 9 metus
@Erlisbl galėtum tą .htaccess koduką įdėti ir čia. Būtų labai super! :) :+1:
Erlisbl prieš 9 metus
EDIT:
Pataisiau pagr. pranesima, dabar galite naudoti faila, kaip : sig.png?zaidejas=
Erlisbl prieš 9 metus
@Bičas
Nelabai dirbu su .htaccess
, taciau padariau taip , kad butu nuoroda ne zaidejas.png
, taciau zaidejas/test
UPDATE:
RewriteCond %{SCRIPT_FILENME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^zaidejas/(.*)$ sig.php?zaidejas=$1
Prisiraso i .htaccess
Dabar naudojimas: <img src="zaidejas/test" />
Erlisbl prieš 9 metus
.png galunes jau nebereikia. Naudojimas kaip parasiau be galunes ir veikia IPB forumuose :D
o pagal tave , kaip padarei tai butu
zaidejas/nick/.png
Bet tiek to del taves spec. Surasiu kaip taip padaryt(kaip tu nori) :-D
Erlisbl prieš 9 metus
Be to ,Bicai, atsakant i pasakyma apie nick.png
, to padaryti kiek supratau negalima, nes turiu kazku perduoti $_GET
parametra :(
leoleva prieš 9 metus
Nice, kad naudoji mysqli ir prepare statements, bet vistiek nepatarčiau pasitikėti vartotoju ir filtruoti $_GET, nes niekad nežinai kas gali atsitikti. Jeigu neįves, tai mes klaidą undefined index
, jeigu įves array gausi dar kažkokią klaidą, kurios pavadinimo neatsimenu.. Bet vistiek spaudžiu dešinę už tai, kad daliniesi ;)
Erlisbl prieš 9 metus
Jeigu neives naudosiu isset
, o visa kita uz mane padaro prepared statements
. :D