最近有很多人指责我只提一个字 - "goto".
这让我很奇怪,为什么它被认为是一个令人讨厌的词.
我知道之前有几个关于这个主题的讨论,但它并没有让我信服 - 答案只是说"它很糟糕"甚至没有尝试解释,有些带来理由,与PHP,IMO等脚本语言无关.
无论如何,我将问一个非常特别的问题:
让我们进行比较goto
和throw
陈述.
在我看来,两者都做同样的事情:避免基于某些条件执行某些代码.
如果是这样 - throw
与goto有同样的缺点吗?(如果有的话)?
如果不是 - 那就是惠特.
任何经验丰富的人,谁能说出以下两个代码片段的代码结构之间的基本概念差异?
关于这些非常的代码片段,不是"在理论上"或"一般"或"这里是一个不错的XKCD漫画!".
为什么第一个被认为是辉煌的而后一个被认为是最致命的罪?
#$a=1;
#$b=2;
/* SNIPPET #1 */
try {
if (!isset($a)) {
throw new Exception('$a is not set');
}
if (!isset($b)) {
throw new Exception('$b is not set');
}
echo '$a + $b = '.($a + $b)."<br>\n";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "<br>\n";
}
/* SNIPPET #2 …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来测试php/mysqli连接的连接部分.我正在从Vista上的LAMP服务器迁移到Ubuntu上的相同,并且正在使mysqli工作.我知道所有正确的模块都已安装,PhpMyAdmin可以完美运行.我已经迁移了一个站点,并没有mysqli连接正常工作.我得到的错误是"在非对象上调用成员函数xxx()",当查询本身错误或查询是从错误的连接准备时,通常会弹出.我知道查询本身是好的,因为它在具有完全相同的数据库结构和数据的其他服务器上工作正常.这让我有了联系.我试着编写一个非常简单的测试连接并将其放在一个循环中,例如..
if(***connection here ***)
{ echo "connected"; }
else
{ echo "not connected"; }
Run Code Online (Sandbox Code Playgroud)
它呼应"连接",这很棒.但只是为了检查我在连接中更改了密码,以便我知道它无法连接,它仍然回显"已连接".所以,if/else测试显然不是要走的路....
我是javascript的新手.我想用havascript在html中创建一个按钮.当用户尝试按下按钮时,特定的<#id>将变为"Bold"并再次按下"Unbold".
我怎样才能做到这一点 ?请参考任何帮助材料.谢谢 !
我是PDO的新手,也是一般用PHP的OOP所以请好一点:)基本上我正在尝试基于PDO创建一个连接对象,以便我可以在我的网站中调用一个连接.
我需要一些准备好的语句,根据我使用我正在尝试在下面创建的相同db对象传递的ID查找不同的结果.
如何创建和访问我在下面设置的db类,然后使用其中的函数来提取我需要的相关信息?任何例子都很棒,所以我可以了解最佳实践等.
提前谢谢了.
class db {
private static $connection;
private function __construct(){}
private function __clone(){}
private static function connect($db_server="localhost", $db_user="user", $db_pass="password") {
if(!$this->connection){
try{
$this->connection = new PDO($db_server, $db_user, $db_pass);
} catch (PDOException $e) {
$this->connection = null;
die($e->getMessage());
}
}
return $this->connection;
}
}
$dbh = new db::connect();
$stmt = $dbh->prepare("SELECT * FROM questions where id = ?");
if($stmt->execute(array($_REQUEST['testid']))) {
while ($row = $stmt->fetch()) {
print_r($row);
}
}
Run Code Online (Sandbox Code Playgroud) 据我所知,新的PHP密码散列扩展(或一般的bcrypt)最重要的特性之一是算法的速度,这大大减慢了暴力攻击方法.
但它仍然以某种速度运行,对于字典攻击来说肯定是足够的,并且强制弱密码,[据说]短于六个字母数字字符.
所以我想知道,它的速度肯定很慢,特别是哪种密码强度可以安全使用."尽可能强大"并不是一个答案,因为密码强度始终是安全性和可用性之间的权衡 - 所以,我正在寻找可以被认为是安全的甚至是未来证明的最小强度.
请注意我是一个实践者 - 所以,基于具体数字的某些答案比长期和多风的理论推理更为可取,结论不确定.
为了澄清一点,最糟糕的情况是:用户数据库被盗,有人会尝试破译密码.由于强盐,彩虹餐桌不是一个选择.因此,唯一剩下的向量是字典攻击和暴力.假设我们为用户提供预先生成的密码,消除字典攻击.这就是为什么密码强度是我唯一关心的问题.
更新:
似乎我不太了解.对我来说,这个问题非常实用,而且相当负责.而且非常重要.
如果没有确定足够的密码强度,可以质疑这种新算法的使用.如果密码仍然不安全,为什么还要用好算法呢?所以 - 我坚信 - 除了建议使用新的哈希算法外,还应该始终建议最小密码强度.我想知道.
换句话说,如果存在关于一个部分的特定确定性 - 算法("使用这个,而不是其他!") - 显然应该确定另一个部分 - 密码强度,可以用相同级别的权限说出.否则最弱的部分会破坏最强的部分.
我有一个使用while循环创建的按钮.所以while循环为mysql表中的每一行创建一个表行.
我有一行代码用于按钮,它为表的每一行再次创建,每个按钮具有基于id
该记录的不同值.
$order .= '<td><a href="#myModal" class="btn btn-default btn-small" id="custId" data-toggle="modal" data-id="'.$row['ID'].'">Edit</a></td>';
Run Code Online (Sandbox Code Playgroud)
问题是我想使用它$row['ID']
并在模态中查看它,所以我可以使用mysqli查询检索具有相同ID的记录.
这是模态的代码.
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Edit Data</h4>
</div>
<div class="modal-body">
i want to save the id in a variable here so i can use it in a php script for this modal
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) 如果有来自4个不同浏览器的相同查询同时每3或10秒有新的notif,我会调用AJAX检查数据库.但是在循环100+之后的某个时刻,服务器返回错误508(检测到循环).这只是一个简单的网站,所以我认为我不需要VPS服务器.
我在SELECT中添加了时间戳作为查询区分,put unset,flush,mysqli_free_result,pause,mysqli_kill,mysqli_close,但仍然出现错误.进入流程达到20/20.
脚本
var counter = 1;
var notiftimer;
$(document).ready(function() {
ajax_loadnotifs();
});
function ajax_loadnotifs() {
$.ajax({
type: "post",
url: "service.php",
dataType: "json",
data: { action:'loadnotifs' },
success: function(data, textStatus, jqXHR){
$("div").append($("<p>").text(counter++ + ": succeeded"));
notiftimer = setTimeout(function() {
ajax_loadnotifs();
}, 3000);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR.responseText);
}
});
}
Run Code Online (Sandbox Code Playgroud)
service.php
$link = mysqli_connect('localhost', 'root', 'root', 'testdb');
$notifs = array();
$query = "SELECT id, message FROM notifs LIMIT 20";
if (!$temp_notifs = mysqli_query($link, $query)) {
die(json_encode(array("errmsg" => …
Run Code Online (Sandbox Code Playgroud) 我在php项目中工作,它给出的错误如下:
Warning:
Run Code Online (Sandbox Code Playgroud)
require_once(ROOT_PATH/lib/confs/Conf.php)[function.require-once]:无法打开流:第20行的..\htdocs\GProject\lib\exception\ExceptionHandler.php中没有这样的文件或目录
致命错误:require_once()[function.require]:在..\htdocs\GProject\lib \中打开所需的'ROOT_PATH/lib/confs/Conf.php'(include_path ='.; C:\ php5\pear')失败第20行的异常\ ExceptionHandler.php
但在\ExceptionHandler.php
文件中,第20行是
require_once ROOT_PATH . '/lib/confs/Conf.php';
Run Code Online (Sandbox Code Playgroud)
我有自己的文件Conf.php lib/confs/Conf.php
,即使我收到错误.
可能是什么问题.提前致谢.
我正在开发一个php/MySQL项目,要求我在用户输入用户名时实时检查用户名.
这是我的username.php,其中用户实际输入用户名和密码,并从中触发check.php ...
<html>
<head>
<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#username").change(function(){
$("#message").html("<img src='images/loader.gif' /> checking...");
var username = $("#username").val();
$.ajax({
type:"post",
url:"check.php",
data:"username =" + username,
success:function(data){
if(data==0){
$("#message").html("<img src='images/tick.png' /><span style='font-size:13px; color: black'> Username available</span>");
}
else{
$("#message").html("<img src='images/err.png' /><span style=font-size:13px; color: red'> Username already taken</span>");
}
}
});
});
});
</script>
</head>
<body>
<table>
<tr>
<td>Username</td>
<td>:</td>
<td><input type="text" name="username" id="username"/><td>
<td id="message"><td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input type="text" name="password" id="password" /><td>
</tr>
</table> …
Run Code Online (Sandbox Code Playgroud) 我正在使用Laravel 5.1,并希望有一个带有几行文本字段的表单及其相应的图像上传.
形成:
<div id="row">
<input name="description[]" type="text">
<input name="image[]" type="file">
</div>
<div id="row">
<input name="description[]" type="text">
<input name="image[]" type="file">
</div>
Run Code Online (Sandbox Code Playgroud)
控制器:
foreach($request->description as $key => $val){
if($val != null){
$data = new Finding;
$data->description = $val; //save description for each loop
$file = array('image' => Input::file('image'));
if (Input::file('image')->isValid()) {
$destinationPath = 'uploads';
$extension = Input::file('image')->getClientOriginalExtension();
$fileName = rand(1000,1000).'.'.$extension;
Input::file('image')->move($destinationPath, $fileName);
$path = Input::file('image')->getRealPath();
$data->image_location = $fileName[$key]; //save filename location to db
$data->save();
flash('success', 'Uploaded Successful');
return Redirect::to('/upload');
} else …
Run Code Online (Sandbox Code Playgroud)