小编DS9*_*DS9的帖子

在结构js中缩放时保持strokeWidth

注意:我已经提出了SO问题,但它对我的情况没用,因为

1)我试图维持以前的边界,但截至目前它在缩放时重新计算边界.

我添加了下面的代码,以在缩放对象时自动停止增加边框.现在问题是我已经为对象添加了一个5px边框,但是当缩放对象时,它不会保留我之前添加的边框.

canvas.on('object:scaling', (e) => {
  var o = e.target;
  if (!o.strokeWidthUnscaled && o.strokeWidth) {
    o.strokeWidthUnscaled = o.strokeWidth;
  }

  if (o.strokeWidthUnscaled) {
    o.strokeWidth = o.strokeWidthUnscaled / o.scaleX;
  }
});
Run Code Online (Sandbox Code Playgroud)

现在我想要的是防止在缩放对象时增加边框.边界应该保持原样.

这是片段/ Codepen

var canvas = new fabric.Canvas('canvas1');

$('.add_shape').click(function() {
  var cur_value = $(this).attr('data-rel');
  if (cur_value != '') {
    switch (cur_value) {
      case 'rectangle':
        var rect = new fabric.Rect({
          left: 50,
          top: 50,
          fill: '#aaa',
          width: 50,
          height: 50,
          opacity: 1,
          stroke: '#000',
          strokeWidth: 1
        });
        canvas.add(rect);
        canvas.setActiveObject(rect); …
Run Code Online (Sandbox Code Playgroud)

javascript canvas fabricjs fabricjs2

10
推荐指数
3
解决办法
2449
查看次数

检测canvas元素是否在画布边界之外

我工作的一个项目中,管理员可以创建一个名片模板,使他们能够像插入占位符变量{first_name},{last_name},{website}等于是一个卡将通过使用户填写自己的名字,姓氏等,所以基本上占位符创建将被用户提供的实际内容所取代.为此,我将从管理员创建的模板创建一个SVG图像,并将这些占位符变量替换为服务器端的用户数据.

问题在于,如果用户提供的内容太长,则可能会延伸到画布边界之外,因此在打印实际卡时可能会被切断.

有没有办法检测到,在替换占位符后,canvas元素会延伸到画布边界之外?如果是这样,有没有办法找到该元素并使其收缩直到它适合边界?基本上,我想类似这样,但在服务器端.

这是我用来生成SVG图像的一些示例代码:

$message_string = array('{first_name}','{last_name}');
$replace_string = array('Fist Name of User','Last Name Of User');
$front_svg_url = $svg_url.$res_code[0]['front_side_svg_image'];
$front_raw_svg = file_get_contents($front_svg_url);
$front_side_svg = str_ireplace($message_string, $replace_string, $front_raw_svg);
$file_name = uniqid($prefix).".svg";
$file_handle = fopen("$folder_name/".$file_name, 'w');
fwrite($file_handle, $front_side_svg);
fclose($file_handle);
Run Code Online (Sandbox Code Playgroud)

在服务器端我只是替换变量,所以我不知道如何在服务器上实现这一点.我愿意接受任何可以实现我预期产出的想法.

javascript php svg canvas fabricjs

10
推荐指数
1
解决办法
265
查看次数

Google API中的评论

我使用下面的代码来查找Google对房产的评价.我想要做的是,我正在对财产进行审查,然后我会将其与该财产的旧审查(在数据库中)进行比较.如果它大于系统的属性,则它会发送电子邮件.

此文件每小时运行一次(作为cron文件),我在Google API中启用结算,因此最大限制为1,50,000.

但由于某种原因,API不会返回确切的评论数.例如:
我为具有4条评论的一个属性运行此文件,但API返回0 2或3次,然后在一段时间后返回4条评论.

我不知道背后的原因.我还注意到,我们可以在Google搜索页面和Google+中查看评论.同样,您可以在多个位置撰写评论,例如在Google+和Google地图中.

并检查评论,我使用谷歌加网址.那么评论是否可能存在,但在另一个领域(如Google搜索页面,但不在Google+中)?

/* call api to get review count of Google */
$url = "https://maps.googleapis.com/maps/api/place/details/json?";
$params = array(
    "placeid" => $google_place_id,
    "key" => $google_api_key
);
$url .= http_build_query($params);
$resjson = file_get_contents($url);
$msg = $resjson;
Yii::log($msg,'info', 'application');
$resjson = json_decode($resjson,true);

$review_count = $resjson['result']['user_ratings_total']=='' ? 0 : $resjson['result']['user_ratings_total'];
/* If review is greater than 0 then check old review and if it's not same then send email */
if($review_count>0)
{
    if(sizeof($ressql)>0)
    {
        /* if google plus …
Run Code Online (Sandbox Code Playgroud)

php google-plus-one google-places-api

8
推荐指数
1
解决办法
3064
查看次数

电子邮件通知失败

我正在使用phpmailer在Yii1中发送邮件.我开发的系统每天发送数千封电子邮件.通常它的工作正常,但有时系统无法发送电子邮件.邮件成功发送一段时间后(如果系统第一次无法发送电子邮件,则会再次尝试).我有时会收到不同类型的电子邮件错误.不确定如何解决这些错误:

  1. 邮寄错误:

以下发件人地址失败:test@test.com:MAIL不接受服务器,xxxx SMTP; 客户端未通过身份验证,以便在MAIL FROM [MWHPR11CA0017.namprd11.prod.outlook.com] SMTP服务器错误期间发送匿名邮件:5.7.57 SMTP; 客户端未通过身份验证,无法在MAIL FROM [MWHPR11CA0017.namprd11.prod.outlook.com]期间发送匿名邮件

  1. 以下发件人地址失败:

test@test.com:MAIL不接受服务器

  1. SMTP错误:

数据未被接受.STP服务器错误:2.1.5收件人确定

  1. 以下发件人地址失败:

test@test.com:MAIL不接受服务器,354,开始邮件输入; 以<CRLF>结束.<CRLF> SMTP服务器错误:启动邮件输入; 以<CRLF>结束.<CRLF> SMTP服务器错误:启动邮件输入; 以<CRLF>结束.<CRLF>

  1. SMTP错误:

以下收件人失败:xxx@xxx.com

所以上面是我有时会遇到的不同类型的错误.对于#5,似乎收件人不正确,所以一个人没事.但其他人呢?怎么解决?

php email phpmailer

8
推荐指数
1
解决办法
470
查看次数

如何使用fabric js的toSVG数据在服务器端(PHP)创建SVG和PNG图像

我使用fabric js创建了一个画布,用户可以在那里创建名片.现在我正在努力创建可缩放/可打印图像(SVG和PNG).

我正在尝试使用结构jS的toSVG数据在服务器端创建SVG和PNG图像的几种方法.因此,用户可以使用该SVG打印卡.

我尝试过以下选项(以下所有链接都是指我在SO中的问题,我要求找到合适的方法):
1)使用Canvas JSON在PHP端生成SVG
无成功
2)使用原始svg数据在服务器端生成png
部分成功:面临Word换行,字体问题等问题.也无法获得可打印的图像.(如果使用更高的DPI然后问题看起来像附加SS)检查下面的SS:

在此输入图像描述

3)使用SVG原始数据生成可打印PDF
部分:无法获取可打印的PDF

4)在imagick中使用svg的原始数据生成svg
无成功:无法创建svg图像(BG问题,图像问题).

5)使用原始数据直接创建SVG

$file_name = uniqid($prefix).".svg";
$file_handle = fopen("$folder_name/".$file_name, 'w');
fwrite($file_handle, $raw_svg);
fclose($file_handle);
Run Code Online (Sandbox Code Playgroud)

NO Success:字体未加载,不可缩放(表示可打印质量)

所以我的问题是创建SVG和PNG的最佳方法是渲染BG Image,Uploaded Images,diff.具有可打印质量的字体等.

注意:我更关注SVG,因为客户更喜欢,如果我可以在PNG中获得可打印的质量,它也可以工作.我也用imagick来实现SVG到PNG的对话.但是无法获得可打印的质量(在SS上面出现更高的DPI问题).

javascript php svg imagemagick fabricjs

7
推荐指数
1
解决办法
663
查看次数

防止从MySQL和PHP发送重复记录

我有一个表作为ad_banner_queue,我用它来根据广告的权重生成队列.广告被插入广告表中.如果队列中的所有现有广告都已传递给用户,则会生成队列.

现在的问题是,如果同时发出请求并且Rand()返回相同的记录,我应该如何阻止发送重复的广告?

以下是代码:

<?php
/* To Get the random Ad */
public function getBanner($params) {
    /* Fetch the Random from table */
    $ads_queue = (new \yii\db\Query())
            ->select('ad_quque_id, banner_image, unique_code')
            ->from('ad_banner_queue')
            ->join('inner join', 'advertisement', 'ad_banner_queue.ad_id = advertisement.ad_id')
            ->where('is_sent=0')
            ->orderBy('RAND()')
            ->one();

    /* In case of queue is not there generate the new queue */
    if ($ads_queue === false) {
        $output = $this->generateAdQueue();
        //In case of something went wrong while generating the queue
        if ($output == false) {
            return array();
        }

        //Now fetch …
Run Code Online (Sandbox Code Playgroud)

php mysql yii2

7
推荐指数
2
解决办法
658
查看次数

PHP + MySQL中的递归逻辑

我正在尝试应用递归逻辑.

我在tbl_appointment表中有以下数据(recur_type:1 =每周,2 =每月,0 =不递归):

appointment_id    user_id    date        recur_type    .....
18                56         2014-06-02  1
19                56         2014-06-15  2
20                56         2014-06-20  0
21                56         2014-07-20  2
Run Code Online (Sandbox Code Playgroud)

我有以下标准来获取数据:如果我获取2014年7月(第7个月)的数据,那么

  1. appointment_id(21) 获取(1行)并...
  2. appointment_id(18) 是每周递归,7月重复被提取(4行):

    appointment_id    user_id    date        recur_type    .....
    18                56         2014-07-07  1
    18                56         2014-07-14  1
    18                56         2014-07-21  1
    18                56         2014-07-28  1
    
    Run Code Online (Sandbox Code Playgroud)

    注意:日期已更改,因为每周的约会是递归的,这意味着我会在每个日期添加7天.2014-06-02 + 7天= 2014-06-09等.因此,7月,日期是2014-07-07.

  3. appointment_id(19) 是每月递归,7月重复获取(1行):

    appointment_id    user_id    date        recur_type    .....
    19                56         2014-07-15  2
    
    Run Code Online (Sandbox Code Playgroud)

    注意:日期已更改,因为每个月的约会是递归的,这意味着我会在该日期添加一个月.

最终输出是(总共6行):

appointment_id    user_id    date        recur_type    ..... …
Run Code Online (Sandbox Code Playgroud)

php mysql

6
推荐指数
1
解决办法
357
查看次数

如果会话名称在两个不同的网站上相同会发生什么?

我有两个差异.我的项目XAMPP就是Project1Project2.
当我登录时Project1,我检查身份验证,如果成功,则存储会话.会话名称是$_SESSION['username'].
以上过程与之相同Project2.

现在,为了防止直接访问,我使用这个代码(在两个项目中):

if($_SESSION['username']=="")
{
  header("location:index.php");
}
Run Code Online (Sandbox Code Playgroud)

所以当我登录时Project1,我也可以访问Project2(无需登录).
为了防止这种情况,我知道如果我创建差异.两个项目的会话名称然后它被解决.

上面的内容是在我的本地服务器上.所以我可以创造差异.我所有项目的会话名称.

但是假设我的网站在线,如果我的会话名称与diff匹配会发生什么.现场?
有数百万个网站,我的会话名称有可能与其他网站的会话名称相匹配.然后,有些用户可能会使用其他网站(在同一浏览器中)访问我的网站而他可能无法访问我的网站登录.

那么如果两个差异的会话相同会发生什么.网站?用户无需登录即可访问我的网站吗?如果是,那么我应该怎么做才能防止它呢?

提前致谢.

UPDATE

根据@Let me see的回答,如果两个站点在同一台服务器上运行,那么它们可能会共享数据.
所以假设服务器正在共享那么我应该怎么做以防止它呢?

php session

5
推荐指数
2
解决办法
5526
查看次数

在imagick php中使用svg原始数据生成SVG图像

我正在尝试使用svg原始数据创建svg图像,我从fabric js获取.我使用下面的代码使用svg原始数据生成svg但它无法正常工作.

public function generate_svg($raw_svg='',$prefix='',$folder_name='card_image')
{
    $file_name = '';       
    if($raw_svg!='')
    {
        try{           
            $file_name = uniqid($prefix).".svg";
            $image = new \Imagick();
            $image->readImageBlob($raw_svg);
            $image->setImageFormat("svg");
            $image->writeImage($folder_name.$file_name);
        } catch (ImagickException $ex) {
            echo $ex->getMessage();
        }
    }
     return $file_name;
}
Run Code Online (Sandbox Code Playgroud)

现在问题是背景图片有点像下面这样:

在此输入图像描述

那我该怎么做才能解决这个问题呢?

它应该如下所示(忽略方形和圆形),问题是整个背景看起来像黑色而不是bg图像:

在此输入图像描述

所以问题是背景图像没有加载,所以我必须添加额外的库来做那个或其他任何事情?

Imagick版本:6.7.7

    convert -list delegate | grep svg  

    cdr =>          "uniconvertor' '%i' '%o.svg'; /bin/mv '%o.svg' '%o"
    cgm =>          "uniconvertor' '%i' '%o.svg'; /bin/mv '%o.svg' '%o"
    dot =>          "dot' -Tsvg '%i' -o '%o"
    dxf =>          "uniconvertor' '%i' '%o.svg'; /bin/mv '%o.svg' '%o"
    fig =>          "uniconvertor' '%i' …
Run Code Online (Sandbox Code Playgroud)

php svg imagemagick imagick

5
推荐指数
1
解决办法
1054
查看次数

IAM角色名称在Yii 1中被视为类

我已将策略附加到EC2 IAM角色以访问AWS服务.之后我在Yii 1控制器文件中使用了以下代码:

ExampleController.php

class ExampleController extends Controller
{
    public function init()
    {
        require_once dirname(dirname(__FILE__)) . '/extensions/awsv3/vendor/autoload.php';
        $config = array(
                'version' => 'latest',
                'region' => 'us-west-2',
        );
        $s3_instance = new \Aws\Ssm\SsmClient($config);
        $result = $s3_instance->getParameters([
            'Names' => array('host_name'),
            'WithDecryption' => true
        ]);
        //converting S3 private data to array to read
        $keys = $result->toArray();
        var_dump($keys);
        exit("Exit");
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

PHP警告
包括(TestRole.php):无法打开流:没有这样的文件或目录

注意:TestRole是IAM角色名称.

我在单个PHP文件中使用了相同的代码(与Yii1不相关)

test.php的

require_once 'protected/extensions/awsv3/vendor/autoload.php';
$config = array(
        'version' => 'latest',
        'region' => 'us-west-2',
);
$s3_instance = new \Aws\Ssm\SsmClient($config);
$result = …
Run Code Online (Sandbox Code Playgroud)

php amazon-ec2 yii amazon-web-services aws-sdk

5
推荐指数
1
解决办法
108
查看次数