Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Token?
Forum PHP.pl > Forum > Przedszkole
Strarus
cześć:)
Chciałbym zrobić najprostszy token. Mam taki kod generujący znaki:
Kod
$str = 'd4qs6f;

$znaki = str_shuffle($str);

echo ($znaki);


Zmienną $znaki zapisujemy do sesji i ją potem wykorzystujemy do walidacji, czy ktoś poprawnie wpisał kod z tokena. Jednakże po przeszukaniu kilku for i chwili na google nie znalazłem nic ciekawego. Chodzi mi o jak najprostsze rozwiązanie, które umożliwi mi umieszczenie zmiennej $znaki na obrazku *.jpg, który mam na serverze. Im prościej, tym lepiej smile.gif
SirZooro
Poszukaj informacji o bibliotece GD i o zabezpieczeniach CAPTCHA.
Strarus
mówię, że zależy mi na najprostszych rozwiązaniach smile.gif a te są choć proste to trudne haha.gif na tę chwilę chciałbym wiedzieć w jaki sposób mogę szybko i prosto nałożyć tekst ze zmiennej na obraz?
Darti
Cytat(SirZooro @ 9.12.2008, 20:47:55 ) *
Poszukaj informacji o bibliotece GD i o zabezpieczeniach CAPTCHA.

Cytat(Strarus @ 9.12.2008, 20:59:32 ) *
mówię, że zależy mi na najprostszych rozwiązaniach smile.gif a te są choć proste to trudne haha.gif na tę chwilę chciałbym wiedzieć w jaki sposób mogę szybko i prosto nałożyć tekst ze zmiennej na obraz?


Pierwszy raz widzę na forum, żeby odpowiedź na pytanie była wyżej niż samo pytanie ....
Strarus
No dobrze... Znalazłem to w książce:
Kod
<?php
function watermark($imgName, $text, $font, $size)
{
  if(!($img = imagecreatefromjpeg($imgName))){
    echo("Nie mogę otworzyć pliku: $imgName");
    return false;
  }

  $sW = imagesx($img);
  $sH = imagesy($img);

  $arr = imagettfbbox($size, 0, $font, $text);
  $width = abs($arr[2] - $arr[0]) + 5;
  $height = abs($arr[1] - $arr[7]) + 1;

  $white = imagecolorallocate($img, 255, 255, 255);

  $posX = $sW - $width;
  $posY = $sH;
  imagettftext($img, $size, 0, $posX, $posY - 5, $white, $font, $text);

  $name = substr($imgName, 0, strlen($imgName) - 4);
  $name = $name."-watermarked.jpg";

  imagejpeg($img, $name);
  imagedestroy($img);
}

if($argc != 5){
  echo("Wywołanie skryptu: skrypt.php nazwa_obrazu.jpg tekst font wielkość_czcionki");
  exit;
}
watermark($argv[1], $argv[2], $argv[3], $argv[4]);
//watermark("obraz1.jpg", "Copyright 2007 by ML", "arial.ttf", 14);
?>


Jednakże to jest za duże!!!. Zależy mi na czymś takim: funkcja(obraz.jpg($zmienna)); jeśli się da oczywiście smile.gif Znaczy w sensie prostoty, że nie tak dużo kodu smile.gif
Darti
  1. <?php
  2. function watermark($imgName, $text, $font, $size)
  3. {if(!($img = imagecreatefromjpeg($imgName))){echo("Nie mogę otworzyć pliku: $imgName");return false;}
  4.  $sW = imagesx($img);$sH = imagesy($img);$arr = imagettfbbox($size, 0, $font, $text);
  5.  $width = abs($arr[2] - $arr[0]) + 5;$height = abs($arr[1] - $arr[7]) + 1;
  6.  $white = imagecolorallocate($img, 255, 255, 255);
  7.  $posX = $sW - $width;$posY = $sH;
  8.  imagettftext($img, $size, 0, $posX, $posY - 5, $white, $font, $text);
  9.  $name = substr($imgName, 0, strlen($imgName) - 4);
  10.  $name = $name."-watermarked.jpg";imagejpeg($img, $name);
  11.  imagedestroy($img);}
  12. if($argc != 5){echo("Wywołanie skryptu: skrypt.php nazwa_obrazu.jpg tekst font wielkość_czcionki");exit;}
  13. watermark($argv[1], $argv[2], $argv[3], $argv[4]);
  14. ?>


Czy tak lepiej ?
Strarus
Kurde... Ja ciemny coś jestem dzisiaj... haha.gif Inny znalazłem:
Kod
<?php
function getImageWithText($text, $font, $size)
{
  $arr = imagettfbbox($size, 0, $font, $text);
  $width = abs($arr[2] - $arr[0]) + 5;
  $height = abs($arr[1] - $arr[7]) + 1;
  $img = imagecreatetruecolor($width, $height);
  $white = imagecolorallocate($img, 255, 255, 255);
  $black = imagecolorallocate($img, 0, 0, 0);

  imagefill($img, 0, 0, $white);
  imagettftext($img, $size, 0, 0, $height - 5, $black, $font, $text);
  
  return $img;
}

$img = getImageWithText("napis", "arial.ttf", 30);
imagejpeg($img, "obraz.jpg");
imagedestroy($img);
?>


Ale nie działa... Brakuje mi na cba.pl biblioteki GD... Nie ma prostszych rozwiązań?
Darti
uff zrób sobie kilka obrazków z literkami i cyframi i losowo je pokazuj
  1. <?php
  2. $obrazki = array('1','2','a');
  3.        for ($i=0; $i<=5; $i++)
  4.        {
  5.            $random = array_rand($obrazki);
  6.            echo "<img src='{$random}.gif'>";
  7.            $token .= $obrazki[$random];
  8.        }
  9. ?>
Strarus
i co? dać, że jeśli jest a65sd or ad45s or 65a4ds or 56a4d itd. to true? na to by chyba zadziałało
Kod
' or 1=1
... Może jednak jest jakaś metoda? Cały czas przeszukuje google ale nic sensownego nie mogę znaleźć...

Znalazłem coś smile.gif
Kod
<?php

$rysunek = ImageCreateFromJpeg("banner.jpg");


$nieb = ImageColorAllocate($rysunek, 0, 255, 255);


ImageString($rysunek, 5, 3, 2, "token", $nieb);


header("Content-type: image/jpeg");
ImageJpeg($rysunek);

echo $rysunek;
?>


Niestety nie mogę niczego na stronie umieścić... Czy mogę to zapisać do jakiejś zmiennej, którą będę mógł otworzyć w innym pliku? Czy muszę użyć tablicy?

Dobra... Poradziłem sobie smile.gif Teraz kolej na sesje... Nie mogę ich przenieść...
Kod
  
<body>
<img src="token.php" alt="token" /><br /><br />
<?php
        echo $_SESSION["token"];
?>
</body>


i token.php
Kod
<?php

$str = 'a8g6d9';

$token = str_shuffle($str);

// Otwieramy plik graficzny
$rysunek = ImageCreateFromJpeg("banner.jpg");

// Definicje kolorów jako składowe RGB
$nieb = ImageColorAllocate($rysunek, 0, 255, 255);

// Lokacja łańcucha i jego wartość
ImageString($rysunek, 5, 3, 2, $token, $nieb);

// Stworzenie wynikowej grafiki
header("Content-type: image/jpeg");

ImageJpeg($rysunek);

$HTTP_SESSION_VARS["token"] = $token;

?>
Help sad.gif
sowiq
Napisałeś wyżej, że nie masz na serwerze GD, a teraz jej używasz i działa? smile.gif
Strarus
Bo jedne skrypty działały inne nie smile.gif Nie ważne czy mam czy nie (jak coś to cba.pl) winksmiley.jpg Chcę to jakoś wrzucić do jakiejś tablicy, tylko, że mi nie wychodzi... Bo muszę wraz z tokenem przesyłać jego zawartość w zmiennej aby możliwa była weryfikacja smile.gif

ref
Piniek
Przenoszę na przedszkole.
sowiq
Cytat(Strarus @ 10.12.2008, 11:25:32 ) *
Bo jedne skrypty działały inne nie smile.gif Nie ważne czy mam czy nie (jak coś to cba.pl) winksmiley.jpg
No comment.

http://letmegooglethatforyou.com/?q=captcha+PHP+download i idź z Bogiem.
piotrooo89
a jeśli to Ci nie "pyknie" to zawsze możesz użyć ajax'a http://psyrens.com/captcha/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.