mews/captcha 图片验证码代码可以。 captcha_src 可以返回图片地址。 返回的地址去请求为 200. 但是就是没有图片。请问如何解决这个问题?

问答:使用 mewebstudio/captcha 包,验证码不显示?
跟这个遇到的情况一模一样。
助教的回答毫无作用。

库按照GitHub上的步骤接入的。
接入成功的证明就是
captcha_src('flat')
返回的下面这这样的URL。
http://xxx.test/captcha/flat?ztpYdOXd
然后这个URL请求的是200返回。
但是这个URL得不到一张img

如果不能成为拯救世界的神,那就堕落到征服世界的魔吧。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

@Yu

指定路径增加相应位置增加这个函数。

在生成图片前加上ob_clean(),清除图片缓存就好了

ob_clean();

file

6年前 评论
讨论数量: 26

我也遇到了这样的问题.

Ubuntu v18

laravel v5.6

按照教程的代码发现报这样的错误:

flat:1 GET http://192.168.xx.xx/captcha/flat?0.8183671021373469 404 (Not Found)

之所以出现这样的状况是因为我并未将 web 服务器根目录指向 public 目录。

因此在生成URL的时候404.

解决办法:

原代码:onclick="this.src='/captcha/flat?'+Math.random()"

修改为:onclick="this.src='captcha/flat?'+Math.random()"

就好了。

推测出现这类问题是路由的原因,如果这个方法不行可以参考这个思路。

5年前 评论

讨论很热烈,但是说话的态度不够友好。

6年前 评论

@Yu

正确的处理姿势,关于这点非常抱歉我目前所学的可能帮不到你、
我也是才转开发、野生自学的、知识最近还在补充、

自己目前的理解是 再增加一个Http/Controllers/CaptchaController 然后增加方法

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Mews\Captcha\Captcha;
use Illuminate\Routing\Controller;

class CaptchaController extends Controller
{
    public function getCaptcha(Captcha $captcha, $config = 'default')
    {
        ob_clean();
        return $captcha->create($config);
    }
}

routes/web.php 内增加路由

有错误请指出、共同进步、

之所以这么执着前面的代码、

是因为这个项目我完整的走了两次一次没过脑子(求快) 一次稍微的过了一下脑子(求记忆) 都没有发生这个问题、

6年前 评论

@Administrator
@sde_wang
@broqiang
教程的最终源码在统一环境下配置以后是可以显示的

我已经git reset 回去。然后 看了最终源码的Add captcha (c6fde8d6)这一commit 的 所有修改对着改。
依然不能显示,所以请排除代码缺乏或者写错的情况。

请从已经能调用完成函数并且已经有了正确的 captcha img 的 url。 只是这个url不知道为什么没有图片上来帮助我分析一下。
这是我自己的项目,返回码什么的都是正常的就是没有img
file

这是教程项目源码部署的
file
出了返回有无图片数据以外 所有header 信息看上去都是一样的。

6年前 评论

你就生成了这一个配置就可以了?
config/captcha.php

php artisan vendor:publish --provider='Mews\Captcha\CaptchaServiceProvider' 

这个配置我是配置过的,按照GitHub上的readme。然后依然无法显示。 只是给你的代码里面没有这个而已。

另外不用看前面的代码,前面代码跟captcha无关。 为啥这么执着前面的代码。

6年前 评论

今天我也遇到同样的问题,也是尝试了各种方法,依然不能显示。后来终于在一个帖子找到了解决办法,在这个文件中清除下缓存,加下ob_clean()就可以了。

file

file

5年前 评论

@Carl0v0 有点久远。 等如果再次学习的时候 回来试试你的方法

5年前 评论

我看到了。只是能显示了,依然不知道为啥。正确的处理姿势是什么。然后看我的回复。我在controller里面调用是没用的。

6年前 评论

这样相当于在 vendor 里面进行修改。 按照的我理解,相当不科学的啊。

6年前 评论

@Yu
file

尝试一下这个操作、如果有效你在自己的类里面增加一个方法调用自己的方法 增加这个来处理吧

6年前 评论

@Administrator

是的 看你后面这个图改了一下 可以了。
这又是为什么。
我搜索以后是加到了这里,所以没有啥用。

file

6年前 评论

@Yu

指定路径增加相应位置增加这个函数。

在生成图片前加上ob_clean(),清除图片缓存就好了

ob_clean();

file

6年前 评论

建议

http://larabbs.test/captcha/flat?MugoJtaN

还是请再次检查一下代码吧。我这边也是可正常使用的、

你Git 撤回到上一个步骤、重新再操作一遍试试、环境务必一致 :wink:

6年前 评论

@Yu

我经过这里处理了一下 显示了

运行以下命令生成配置文件 config/captcha.php:

$  php artisan vendor:publish --provider='Mews\Captcha\CaptchaServiceProvider' 

file

我知道这不符合规范、但是有效、请找到另外的替代方法 或者自己重写覆盖一下?

应该是你前面的步骤不规范?我无法返回这个课程的上一章节重新走一遍、(我找不到是哪个对应的:cry: )
file

6年前 评论

@Yu

兄弟,这是练习项目的话 方便上传到github上供我安装测试看一下吗(不一定能帮到忙、但是沉迷想解决问题)

6年前 评论

@Administrator
Git 撤回的意义在哪里?
ob_clean() 早已试过。无效。

6年前 评论

@Yu

这么晚还在学习吗?

请务必尝试一下这个操作,占用不了你多久的时间的。

file

另外方便的话点击我是链接进行部署一遍查看效果,这是教程最终的源码

相关链接一

6年前 评论

@broqiang

/etc/php/7.2/cli/conf.d/20-gd.ini,
gd
GD Support => enabled
GD headers Version => 2.2.5
GD library Version => 2.2.5
gd.jpeg_ignore_warning => 1 => 1

@sde_wang
按照教程一模一样的代码。如果需要可以贴
register.blade.php

@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">
                <div class="panel panel-default">
                    <div class="panel-heading">用户注册</div>

                    <div class="panel-body">
                        <form class="form-horizontal" method="POST" action="{{ route('register') }}">
                            {{ csrf_field() }}

                            <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
                                <label for="name" class="col-md-4 control-label">用户名</label>

                                <div class="col-md-6">
                                    <input id="name" type="text" class="form-control" name="name"
                                           value="{{ old('name') }}" required autofocus>

                                    @if ($errors->has('name'))
                                        <span class="help-block">
                                        <strong>{{ $errors->first('name') }}</strong>
                                    </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                                <label for="email" class="col-md-4 control-label">E-Mail 地址</label>

                                <div class="col-md-6">
                                    <input id="email" type="email" class="form-control" name="email"
                                           value="{{ old('email') }}" required>

                                    @if ($errors->has('email'))
                                        <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                                <label for="password" class="col-md-4 control-label">密 码</label>

                                <div class="col-md-6">
                                    <input id="password" type="password" class="form-control" name="password" required>

                                    @if ($errors->has('password'))
                                        <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group">
                                <label for="password-confirm" class="col-md-4 control-label">重复密码</label>

                                <div class="col-md-6">
                                    <input id="password-confirm" type="password" class="form-control"
                                           name="password_confirmation" required>
                                </div>
                            </div>

                            <div class="form-group {{ $errors->has('captcha') ? ' has-error' : '' }}">
                                <label for="captcha" class="col-md-4 control-label">验证码</label>

                                <div class="col-md-6">
                                    <input id="captcha" class="form-control" name="captcha">

                                    <img class="thumbnail captcha" src="{{ captcha_src('flat') }}"
                                         onclick="this.src='/captcha/flat?'+ Math.random()" title="点击图片重新获取验证码">

                                    @if ($errors->has('captcha'))
                                        <span class="help-block">
                                        <strong>{{ $errors->first('captcha') }}</strong>
                                    </span>
                                    @endif
                                </div>
                            </div>

                            <div class="form-group">
                                <div class="col-md-6 col-md-offset-4">
                                    <button type="submit" class="btn btn-primary">
                                        注册 <i class="glyphicon glyphicon-arrow-right"></i>
                                    </button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endsection

@Administrator
请不要怀疑输入的代码问题。完全教程来。
环境也是使用教程里面的 homestead 。没有做过教程以外的任何操作。
注意一开始我已经贴出来相同的提问,并不是我一个人遇到这问题。
其次 mews/captcha 已经生成 URL 。不存在库啊 环境啊不对的情况。

那我就想问一个问题。 mews/captcha 生成的图片到底成功不成功应该如何检查。

6年前 评论

PHP 是什么环境,会不会是 PHP 没有安装 GD 库,记得很久以前用 CMS 的时候没有 GD 库就不显示图片,而且不会报错,不过 用 mews/captcha 的时候都安装了 GD 库,没出过问题,没有 GD 库会不会报错也不清楚了。

可以web 界面打印下 phpinfo ,或者命令行下 php -i | grep -i gd

6年前 评论

是不是img 标签写错了 ? 你这个应该把具体代码贴出来

6年前 评论

@Summer 重新编辑自己评论的时候 : 不会自动提示表情~

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!