Autor Zpráva
Lolkovnik
Profil *
Mám fci na generaci captchy.
 function captcha($text)
{
    header("Content-type: image/png");
    $img = imagecreatefromPNG("bg.png");
    $white = imagecolorallocate($img, 245, 245, 245);
    $black = imagecolorallocate($img, 0, 0, 0);
    $grey = imagecolorallocate($img, 172, 172, 172);
    putenv('GDFONTPATH=' . realpath('.'));
    imagettftext($img, 25, 1, 14, 34, $grey, "actionj.ttf", $text);
    imagettftext($img, 25, 1, 12, 32, $black, "actionj.ttf", $text);
    imagepng($img);
        imagedestroy($img);
}

Potom mám formulář, ale ty data se mi tam nenačtou proč?

<?php 
require_once("rand_code.php");
$text = code(4);
?><form action="captcha.php" method="post">
<fieldset>
<legend>Captcha formulář</legend>
<label style="width: 150px; float: left">Obrázek</label>
<p><?php captcha($text); ?></p>
<input type="text" value="" name="code">
<input type="submit" value="Ověřit správnost mého kódu" name="odeslat">
</fieldset>
</form>

Obrázek captcha.php nelze zobrazit, protože obsahuje chyby. A nevypíše se ani formulář, když dám stránku bez formu a dát jen <?php captcha($text); ?> tak se normálně zobrazí, co dělám špatně?

Děkuji všem
suky
Profil
header("Content-type: image/png");

Je pred ni vystup...
Lolkovnik
Profil *
Tak předkládam kompletní kod
<?php
require_once("rand_code.php");
/**
 * @file captcha.php
 * @description Form with captcha
 * @author Filip Beneš
 * @copyright 2008
 */
$text = code(4);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8">
	<meta name="author" content="Filip Beneš">

	<title>Captcha formulář</title>
</head>

<body>
<form action="captcha.php" method="post">
<fieldset>
<legend>Captcha formulář</legend>
<label style="width: 150px; float: left">Obrázek</label>
<p><?php captcha($text); ?></p>
<input type="text" value="" name="code">
<input type="submit" value="Ověřit správnost mého kódu" name="odeslat">
</fieldset>
</form>

a tady soubor s funkcemi
<?php
/**
 * @file rand_code.php
 * @description generating a rand code 
 * @author Filip Beneš
 * @copyright 2008
 */
function captcha($text)
{
	header("Content-type: image/png");
    $img = imagecreatefromPNG("bg.png");
    $white = imagecolorallocate($img, 245, 245, 245);
    $black = imagecolorallocate($img, 0, 0, 0);
    $grey = imagecolorallocate($img, 172, 172, 172);
    putenv('GDFONTPATH=' . realpath('.'));
    imagettftext($img, 25, 1, 14, 34, $grey, "actionj.ttf", $text);
    imagettftext($img, 25, 1, 12, 32, $black, "actionj.ttf", $text);
    imagepng($img);
    imagedestroy($img);
}
function code($mista)
{
    $souhlasky = array("b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p",
        "q", "r", "s", "t", "v", "w", "x", "z");
    $samohlasky = array("a", "e", "i", "o", "u", "y");
    $code = "";
    $hlaska = "a";
    for ($i = 1; $i <= $mista; $i++) {
        if ($hlaska == "a") {
            $nahoda = rand(0, count($souhlasky) - 1);
            $code .= $souhlasky[$nahoda];
            $hlaska = "b";
        } elseif ($hlaska == "b") {
            $nahoda = rand(0, count($samohlasky) - 1);
            $code .= $samohlasky[$nahoda];
            $hlaska = "a";
        }
    }
    return strtoupper($code);
}
?>
A nevidím nikde volné místo, soubory mam uložené v utf-8 bez BOM
spook
Profil
suky
Profil
<form action="captcha.php" method="post">
<fieldset>
<legend>Captcha formulář</legend>
<label style="width: 150px; float: left">Obrázek</label>
<p>

Tohle ti neprijde jako vystup? :o)
spook
Profil
mno nevim jestli to chápu dobře, ale funkce se podle mě vyková až při jejím volání, takže vstupů před úpravou hlaviček tam máš celkem dost(imho)

zkus:
<p><?php 
ob_start("captcha");
captcha($text); 
ob_end_flush();
?></p>


//omlovám se prázdnej příspěevek, kterej byl odeslán omylema prosím moderátory o jeho smazání;)
djlj
Profil
Ten obrázek se přece musí generovat v jiném souboru…
Lolkovnik
Profil *
<p><?php ob_start("captcha"); captcha($text); ob_end_flush(); ?></p>
Tak tohle sice nevypíše chybu ale nevypíše to vůbec nic

Ten obrázek se přece musí generovat v jiném souboru…
Nevím, jak bych to teda měl upravit...
djlj
Profil
<img src="captcha.php">

V souboru captcha.php bude pak ten tvůj kód.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: