小编TK1*_*123的帖子

我应该为ImageMagick使用PHP扩展还是只使用PHP的Exec()函数来运行终端命令?

我需要对我网站上的用户上传的图片进行以下图像处理:

  1. 调整图像大小(如果大于某个维度)
  2. 将所有图像格式转换为jpg
  3. 在所有图像的底部添加水印

我是否需要使用MagickWand或iMagick扩展,还是可以在PHP的exec函数中运行终端命令?

是否有理由将PHP扩展作为首选?哪个会更快更好的性能(这个网站可能有很多用户,在任何给定时间都会有大量的图像处理)?

php image imagemagick image-processing

3
推荐指数
2
解决办法
9408
查看次数

如何在PHP中组成$ _SESSION的唯一名称?

作为我正在进行的登录系统的一部分,我在每个客户端命名的唯一会话中跟踪失败的登录尝试:

if($login_failed) {

            // update failed login attempts
            $session_name = 'failed_attempts'.$_SERVER['REMOTE_ADDR'];

            if(!isset($_SESSION[$session_name])) {
                $_SESSION[$session_name] = 1;               
            }
            else {
                $_SESSION[$session_name] += 1;  
            }

}
Run Code Online (Sandbox Code Playgroud)

如您所见,为了确定每个会话的唯一名称,我将用户的IP地址附加到字符串"failed_login_attempts"的末尾.

如果用户达到5次失败尝试,我需要在每次后续尝试时填写验证码.

我只是担心可能会有一些网络为许多用户分配了相同的IP地址,在这种情况下,如果1个用户无法登录,他们都会开始看到验证码,即使只有1个用户需要显示验证码.

这是合理的还是永远不会有2个用户可以拥有相同的IP,例如他们可能拥有相同的前3个八位字节,但最后一个数字将是不同的,在这种情况下我不必担心.

如果有多个用户共享同一个IP的机会,那么确定我的会话名称的唯一标识符的好方法是将未登录的用户链接到会话?

php ip session networking

3
推荐指数
1
解决办法
1756
查看次数

更清洁的方式来编写这个MySQL查询?

这是我目前的查询:

SELECT * FROM users
WHERE blah blah...
AND users.who = '1'

AND users.seeking = '2' 
OR users.seeking = '5' 
OR users.seeking = '8' 
OR users.seeking = '9' 
OR users.seeking = '11' 
OR users.seeking = '13' 
OR users.seeking = '14' 
OR users.seeking = '15' 

AND users.account_status = '1';
Run Code Online (Sandbox Code Playgroud)

如您所见,搜索字段可以有多个值.而不是写这么多OR是有一个更漂亮的方法来指定该字段的所有可接受的值,以便由我的select语句返回?

mysql

3
推荐指数
1
解决办法
76
查看次数

如何检测第一次播放HTML5 <video>的时间?

每次单击播放按钮时,都会触发警报.因此,它将在第一次播放视频时播放,但也会在后续播放时触发,如果用户暂停,则再次播放:

$('video').bind('play', function() {
   alert('I have been played!');
});
Run Code Online (Sandbox Code Playgroud)

我需要在第一次播放视频时才发射一次事件.如何才能做到这一点?

也许jquery one函数可以与它结合起来实现它?

javascript jquery html5 html5-video

3
推荐指数
1
解决办法
2819
查看次数

如何强制下载图像?

我在我的页面上有一个动态生成的图像,如下所示:

<img id="my_image" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEA/gD+AAD/etc............" />
Run Code Online (Sandbox Code Playgroud)

而不是告诉我的用户右键单击图像并点击保存我想要公开下载链接,点击后将提示下载图像.怎么做到这一点?

最初我在js中尝试这样做:

var path = $('#my_image').attr('src');
window.open('./download.php?file=' + path);
Run Code Online (Sandbox Code Playgroud)

并在download.php中:

<?php
    header('Content-Description: File Transfer');
    header("Content-type: application/octet-stream");
    header("Content-disposition: attachment; filename= " . $_GET['file'] . "");
?>

<img src="<?= $_GET['file'] ?>" />
Run Code Online (Sandbox Code Playgroud)

但问题是,Base64 url​​ stirngs如此之大,超出了GET请求字节限制.

我对JavaScript或PHP的解决方案持开放态度.

javascript php jquery base64

3
推荐指数
1
解决办法
5438
查看次数

jQuery:仅当页面上当前没有运行AJAX时才提交表单

当城市输入字段模糊时,我通过ajax请求得到somne​​thing,并将其设置为与城市字段所在的相同形式的隐藏字段的值.

$('input#city').on('blur', function() {
    $.ajax({
        url: 'get/something?param=val',
        success: function(response) {
            $('input:hidden[name="something"]').val(response);
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

如果用户在模糊城市字段后立即提交表单,有时由于延迟,则不会填充隐藏字段,因为另一端的SQL花费的时间太长.

这两个字段所在的表单也是通过ajax提交的:

$('form#find-users').on('submit', function() {
    if(NO_AJAX_CURRENTLY_RUNNING_ON_PAGE) {
        // do stuff
    }
});
Run Code Online (Sandbox Code Playgroud)

如何检测页面上是否没有运行ajax?这将确保完成城市ajax并在处理表单之前填充隐藏字段.

编辑

实际上它不会,它只会阻止提交表单.但是,如果我可以检测到,那么我可以使用setInterval并继续尝试运行该代码,直到它运行,因为ajax已完成.理想情况下,jQuery中会有一些东西等待其他ajax完成然后提交.

javascript ajax jquery

3
推荐指数
1
解决办法
4233
查看次数

getElementsByTagName:如何选择多种类型的标签?

我有一个for循环,在其中我检查当前迭代的元素是否有任何a标签或form标签内部,如果是,我做了一些东西给他们.无论如何,我可以检查或者像这样:

var form_or_a_tag = elem[i].getElementsByTagName('a');
var form_or_a_tag = elem[i].getElementsByTagName('form');
Run Code Online (Sandbox Code Playgroud)

但我怎样才能将它们结合起来?

这些都失败了:

var form_or_a_tag = elem[i].getElementsByTagName('a form');
var form_or_a_tag = elem[i].getElementsByTagName('a, form');
var form_or_a_tag = elem[i].getElementsByTagName('a') || elem[i].getElementsByTagName('form');
Run Code Online (Sandbox Code Playgroud)

基本上我想存储在变量form_or_a_tagall forma标签中,这些标签位于当前正在迭代的元素中.

javascript

3
推荐指数
2
解决办法
4401
查看次数

如何检查插件的功能是否存在?

我有这个代码:

$(document).ready(function() {
    $('.tabs-container').tabs({ 
        tabs: '.bar', 
        tabs_container: '.foo' 
    });
});
Run Code Online (Sandbox Code Playgroud)

有时候不会加载tabs插件脚本,这会导致页面的其余部分由于控制台中的错误而中断js:

TypeError: $(...).tabs is not a function
Run Code Online (Sandbox Code Playgroud)

在将该插件附加到元素之前,如何检查选项卡是否存在?

javascript jquery

3
推荐指数
1
解决办法
151
查看次数

从第5点开始选择每个奇数元素

如果我想从第5个点开始选择每个第4个元素,我会这样做:

.elem:nth-child(4n+5) {
    //something
}
Run Code Online (Sandbox Code Playgroud)

但是如何从第5点开始为每个奇数元素做到这一点?此语法不起作用:

.elem:nth-child(:oddn+5) {
    //something
}
Run Code Online (Sandbox Code Playgroud)

css css-selectors css3

3
推荐指数
1
解决办法
138
查看次数

如何修复此JOIN查询?

我有这个问题:

SELECT * 
FROM people 
JOIN pets ON people.id = pets.owner_id;
Run Code Online (Sandbox Code Playgroud)

它会为有宠物的人返回结果.但并非所有人都有宠物.我希望查询返回人员表中的所有人,如果他们碰巧有宠物也返回宠物.

但由于宠物是可选的,即使没有宠物的人,如何让这个查询返回?

mysql sql

2
推荐指数
1
解决办法
89
查看次数