使用验证码php登录到站点

使用验证码php登录到站点,php,login,captcha,Php,Login,Captcha,我想登录http://bo500.s.traaviaan.ir/(或其他服务器)使用php,但我对验证码有问题。 我不知道如何获取验证码图像并以表单形式显示它 我还使用了以下代码: <? if ( !empty($_POST['user'])){ $user = $_POST['user']; } if ( !empty($_POST['pwtraa'])){ $pw = $_POST['pwtraa']; } if ( !empty($_POST['captcha']))

我想登录
http://bo500.s.traaviaan.ir/
(或其他服务器)使用php,但我对验证码有问题。 我不知道如何获取验证码图像并以表单形式显示它

我还使用了以下代码:

<?
if ( !empty($_POST['user'])){
    $user = $_POST['user'];
}
if ( !empty($_POST['pwtraa'])){
    $pw = $_POST['pwtraa'];
}
if ( !empty($_POST['captcha'])){
    $capt = $_POST['captcha'];
}
$login_url = 'http://bo500.s.traaviaan.ir/login.php';
$post_data = "user=".$user."&pwtraa=".$pw."&captcha=".$capt;
$ch = curl_init();
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL, $login_url );
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$postResult = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL, $url);
curl_exec($ch);
?>


请帮助,抱歉英语不好

在该页面的登录表单中有以下输入:

<input type="hidden" name="login" value="1428775885">
“登录”值中的数字将与该站点后端的验证码关联

在有人登录之前,让您的PHP脚本访问该登录页面,获取captcha图像链接并保存登录表单输入id

然后为您的用户提供登录表单、验证码,并让他输入代码

然后,当您登录到另一个站点时,请确保在postdata中同时包含登录值和验证码解决方案。

`$im=ImageCreate(200,50);//验证码的创建
`$im = ImageCreate(200,50); // creation du cadre du captcha 
            $dossier = 'images_captcha'; // dossier de rangement 
             if(!is_dir($dossier)){//verification de l'existance  du dossier de rangement 
                mkdir($dossier);  //creation du dossier de rangement si celui ci n'existe pas
             }
            $lettres = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');// lettre et carractère du tri

            $alea = mt_rand(4,8);// selection aleatoire du nombre de carractère du texte captcha 
            $recp=NULL;
            $result = NULL;
            $string = NULL;
            $str = NULL;
    for($i=0; $i<$alea; $i++){ // boucle de formation des mots deux mot du captcha
            $result= $alea/2;// division du nombre de carractere du grand mot par 2
            $recp = array_rand($lettres); //tri pour recuperation d'un emplacement précis dans le tableau de lettre alphanumerique
            $recp = $lettres[$recp];//recuperation de la lettre en fonction de son emplecement recupérer précedement 

            if($result >= $i){ // recuperation et creation du deuxieme mot
                $string .= $recp;
            }else{
                $str .= $recp; 
            }
    }
            $string = $string." ".$str;//concatenation des deux mots créés 
            $gris[1] = ImageColorAllocate ($im, 110, 110, 110);//couleurs gris 
            $gris[9] = imagecolorallocate($im, 255, 128, 0);//couleurs gris
            $gris[8] = ImageColorAllocate ($im, 0, 0, 0); //couleurs noir
            $gris[0] = ImageColorAllocate ($im, 255, 255, 255); //couleurs blanc     
            $gris[2] = ImageColorAllocate ($im, 130, 130, 130); //couleurs gris
            $gris[3] = ImageColorAllocate ($im, 150, 150, 150);//couleurs gris 
            $gris[4] = ImageColorAllocate ($im, 170, 170, 170); //couleurs gris
            $gris[5] = ImageColorAllocate ($im, 190, 190, 190); //couleurs gris
            $gris[6] = ImageColorAllocate ($im, 210, 210, 210); //couleurs gris
            $gris[7] = ImageColorAllocate ($im, 230, 230, 230);//couleurs gris

            $px     = mt_rand(20,100); // detection de la position x de l'ecriture sur l'image
        if($px == 0 || $px == ""){
                $px = 50;
        }else{
                $px = $px;
        }
            $width = mt_rand(1,30);// detection de la position Y de l'ecriture sur l'image
        if($width == 0 || $width == ""){
                $width = 30;
        }else{
                $width = $width;
        }
        $rand = mt_rand(111111111,999999999).time();//creation du nom de l'image créée
            imagestring($im, 5, $px, $width, $string, $gris[7]);// ecriture sur l'image 
            imagestring($im, 5, $px, $width + 2, $string, $gris[7]);//doublé l'ecriture pour  rendre l'ecriture flou
            imagecolortransparent($im, $gris[1]);//rendre  le background transparent
            imagepng($im,"$dossier/$rand.png");//creation du bloc d'ecriture et enregistrement sous forme d'image
            $image_gerer = array_rand(array('1','2','3','4','5','6','7'));//selection aleatoire d'image
        if($image_gerer == 0){
            $image_gerer = 1;
        }
            $source = imagecreatefrompng("$dossier/$rand.png"); //recuperation de l'image source precedement enregistré
            $destination = imagecreatefrompng("$dossier/img_system/".$image_gerer.".png"); //recuperation de la photo a mettre en arriere plan 
            $posi = array_rand(array('20','30','40','50','-40','-50','60','-60','10'));// determination aleatoire de la rotation de l'image source sur l'image de fond
            $source = imagerotate($source, $posi, 1, 0);//rotation 
            $largeur_source = imagesx($source);// comme le dit le nom de la variable  : detection de la largeur de l'image source
            $hauteur_source = imagesy($source);// hauteur de la source 
            $largeur_destination = imagesx($destination);//largeur de l'image de background
            $hauteur_destination = imagesy($destination);//hauteur de l'image de background
            $destination_x = ($largeur_destination/2) - ($largeur_source/2);// emplacement de l'image source sur l'axe x 
            $destination_y =  ($hauteur_destination/2) - ($hauteur_source/2);// emplacement de l'image source sur l'axe Y
            imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 40);//fusion des deux image pour la formation final du captcha 
            imagepng($destination,"$dossier/$rand.png");//enregistrement du captcha
            //imagejpeg($destination);
            $captch['lien'] = "$dossier/$rand.png"; 
            $captch['code'] = $string;
            //destruction des image dans la memoire 
            imagedestroy($im);
            imagedestroy($destination);
            //retour des information 
            echo $captch;`
$dossier='images_captcha';//范围档案 如果(!is_dir($docsier)){//validation de l'existance du docsier de rangement mkdir($dossier);//创建现有文件的范围 } 元乐乐乐及三元三至三至三至三至三至三至三至三元三至三元三至三元三至三元三至三元三元临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临临‘U’、‘V’、‘W’、‘X’、‘Y’、‘Z’、‘0’、‘1’、‘2’、‘3’、‘4’、‘5’、‘6’、‘7’、‘8’、‘9’;//三人行 $alea=mt_rand(4,8);//验证码文本名称选择 $recp=NULL; $result=NULL; $string=NULL; $str=NULL;
对于($i=0;$i),您应该正确格式化此代码,并实际解释它以及发布的原始代码中存在的问题。
`$im = ImageCreate(200,50); // creation du cadre du captcha 
            $dossier = 'images_captcha'; // dossier de rangement 
             if(!is_dir($dossier)){//verification de l'existance  du dossier de rangement 
                mkdir($dossier);  //creation du dossier de rangement si celui ci n'existe pas
             }
            $lettres = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');// lettre et carractère du tri

            $alea = mt_rand(4,8);// selection aleatoire du nombre de carractère du texte captcha 
            $recp=NULL;
            $result = NULL;
            $string = NULL;
            $str = NULL;
    for($i=0; $i<$alea; $i++){ // boucle de formation des mots deux mot du captcha
            $result= $alea/2;// division du nombre de carractere du grand mot par 2
            $recp = array_rand($lettres); //tri pour recuperation d'un emplacement précis dans le tableau de lettre alphanumerique
            $recp = $lettres[$recp];//recuperation de la lettre en fonction de son emplecement recupérer précedement 

            if($result >= $i){ // recuperation et creation du deuxieme mot
                $string .= $recp;
            }else{
                $str .= $recp; 
            }
    }
            $string = $string." ".$str;//concatenation des deux mots créés 
            $gris[1] = ImageColorAllocate ($im, 110, 110, 110);//couleurs gris 
            $gris[9] = imagecolorallocate($im, 255, 128, 0);//couleurs gris
            $gris[8] = ImageColorAllocate ($im, 0, 0, 0); //couleurs noir
            $gris[0] = ImageColorAllocate ($im, 255, 255, 255); //couleurs blanc     
            $gris[2] = ImageColorAllocate ($im, 130, 130, 130); //couleurs gris
            $gris[3] = ImageColorAllocate ($im, 150, 150, 150);//couleurs gris 
            $gris[4] = ImageColorAllocate ($im, 170, 170, 170); //couleurs gris
            $gris[5] = ImageColorAllocate ($im, 190, 190, 190); //couleurs gris
            $gris[6] = ImageColorAllocate ($im, 210, 210, 210); //couleurs gris
            $gris[7] = ImageColorAllocate ($im, 230, 230, 230);//couleurs gris

            $px     = mt_rand(20,100); // detection de la position x de l'ecriture sur l'image
        if($px == 0 || $px == ""){
                $px = 50;
        }else{
                $px = $px;
        }
            $width = mt_rand(1,30);// detection de la position Y de l'ecriture sur l'image
        if($width == 0 || $width == ""){
                $width = 30;
        }else{
                $width = $width;
        }
        $rand = mt_rand(111111111,999999999).time();//creation du nom de l'image créée
            imagestring($im, 5, $px, $width, $string, $gris[7]);// ecriture sur l'image 
            imagestring($im, 5, $px, $width + 2, $string, $gris[7]);//doublé l'ecriture pour  rendre l'ecriture flou
            imagecolortransparent($im, $gris[1]);//rendre  le background transparent
            imagepng($im,"$dossier/$rand.png");//creation du bloc d'ecriture et enregistrement sous forme d'image
            $image_gerer = array_rand(array('1','2','3','4','5','6','7'));//selection aleatoire d'image
        if($image_gerer == 0){
            $image_gerer = 1;
        }
            $source = imagecreatefrompng("$dossier/$rand.png"); //recuperation de l'image source precedement enregistré
            $destination = imagecreatefrompng("$dossier/img_system/".$image_gerer.".png"); //recuperation de la photo a mettre en arriere plan 
            $posi = array_rand(array('20','30','40','50','-40','-50','60','-60','10'));// determination aleatoire de la rotation de l'image source sur l'image de fond
            $source = imagerotate($source, $posi, 1, 0);//rotation 
            $largeur_source = imagesx($source);// comme le dit le nom de la variable  : detection de la largeur de l'image source
            $hauteur_source = imagesy($source);// hauteur de la source 
            $largeur_destination = imagesx($destination);//largeur de l'image de background
            $hauteur_destination = imagesy($destination);//hauteur de l'image de background
            $destination_x = ($largeur_destination/2) - ($largeur_source/2);// emplacement de l'image source sur l'axe x 
            $destination_y =  ($hauteur_destination/2) - ($hauteur_source/2);// emplacement de l'image source sur l'axe Y
            imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 40);//fusion des deux image pour la formation final du captcha 
            imagepng($destination,"$dossier/$rand.png");//enregistrement du captcha
            //imagejpeg($destination);
            $captch['lien'] = "$dossier/$rand.png"; 
            $captch['code'] = $string;
            //destruction des image dans la memoire 
            imagedestroy($im);
            imagedestroy($destination);
            //retour des information 
            echo $captch;`