该脚本使用PHP,而DB则使用MySQL.这是脚本本身.
$unsafe_variable = $_GET["user-input"];
$sql=sprintf("INSERT INTO table (column) VALUES('%s')",$unsafe_variable);
mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)
有人说如果用户将;DROP TABLE blah;字符串分配给变量$ unsafe_variable,则会删除该表.
但我试过这个例子,
http://localhost/test.php?user-input=DROP%20TABLE%20my_table
Run Code Online (Sandbox Code Playgroud)
但它没有删除表,而是在表中插入了一个新行(;DROP TABLE blah;).
有人可以解释一下如何用sql注入来攻击这个脚本吗?
今天只有我注意到并发现了使用===运算符的重要性.您可以在以下示例中看到它:
$var=0;
if ($var==false) echo "true"; else echo "false"; //prints true
$var=false;
if ($var==false) echo "true"; else echo "false"; //prints true
$var=0;
if ($var===false) echo "true"; else echo "false"; //prints false
$var=false;
if ($var===false) echo "true"; else echo "false"; //prints true
Run Code Online (Sandbox Code Playgroud)
问题是,是否有任何使用===运算符而不是使用==运算符的情况?
程序员通常充当用户界面的设计者.你可以争论它是否好.但是,特别是在小公司中,这是一个不变的现实.
作为程序员,你个人认为,我们的设计UI是什么?我个人认为不是这样,特别是当你打算在Web应用程序上工作时,他们也会让你设计UI.
****如果我错了,请纠正我.****
我问这个问题是因为我需要知道这个限制,因为我在我的PHP脚本中生成SELECT查询,并且在查询中WHERE的一部分是在循环内部生成的.
确切地说,它看起来像这样
$query="SELECT field_names FROM table_name WHERE ";
$condition="metadata like \"%$uol_metadata_arr[0]%\" ";
for($i=1; $i<count($uol_metadata_arr); $i++){
$condition.=" OR metadata like \"%$uol_metadata_arr[$i]%\" ";
}
$query.=$condition;
$result=mysql_query($query);
Run Code Online (Sandbox Code Playgroud)
所以,这就是为什么我需要知道我的$ query字符串可以有多长,因为数组$ uol_metadata_arr可能包含很多项.
在NetBeans中,当您插入Breakpoint和Debug项目时,它将运行代码,直到Breakpoint停在我们放置Breakpoint的行中。然后,我们可以逐步执行代码。如果我们按F8这步过操作,NetBeans的执行下一行。有时我们想返回到上一条执行的行,因为我们想更改该行并查看其工作方式。
所以,问题是我怎么能说的NetBeans到步后退(如果我们可以这样称呼它),那么它不执行下一行代码,而是执行上一行代码?我记得在Visual Basic 6.0中(现在我不知道,因为不再使用它了),我们可以管理当前的执行行,即我们可以将调试指针拖放到调试期间所需的行上,然后它将开始从我们放置的位置直接执行代码。NetBeans中可能吗?
更新1
我使用NetBeans调试PHP应用程序。PHP用于php_xdebug-2.1.0RC1-5.3-vc9-nts.dll 调试PHP代码。
我创建了一个新皮肤,需要在标题中显示一条文本,例如“您有 3 封新邮件”。我如何从模板或插件(如果我需要创建一个)来做到这一点?
谢谢。
我写了以下java代码:
public static void main(String[] args) {
Vector vector = new Vector();
for(int i=1; i<=10; i++)
vector.addElement(i);
Enumeration vEnum = vector.elements();
while(vEnum.hasMoreElements())
System.out.println(vEnum.nextElement());
}
Run Code Online (Sandbox Code Playgroud)
在编译它时会收到以下警告消息:
Note: TestJavaApplication.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Run Code Online (Sandbox Code Playgroud)
Netbeans抱怨"过时收藏"的消息.
在这种情况下,你推荐我什么?
注意,我需要在J2ME应用程序中使用Vector作为存储元素顺序的动态数组.我很乐意使用Hashtable但不幸的是它不存储其元素的顺序.
编辑1
审查后,这个答案我从改变报关Vector vector = new Vector();进入Vector<String> vector = new Vector<String>();.现在又收到另一条警告信息:
TestJavaApplication.java:2: warning: com.sun.org.apache.xerces.internal.parsers.IntegratedParserConfiguration is Sun proprietary API and may be removed in a future release
import com.sun.org.apache.xerces.internal.parsers.IntegratedParserConfiguration;
^
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在使用jQuery SVG插件生成SVG对象.问题是如何在脚本中将其转换为图像.
我的脚本如下:
<html>
<head>
<script type="text/javascript" src="jquery-latest.min.js"></script>
<script type="text/javascript" src="jquery.svg.js"></script>
<script type="text/javascript">
$(function(){
$("#draw").click(function(){
$('#svg_container').svg();
svg = $('#svg_container').svg('get');
svg.clear(true);
svg.circle(200, 220, 150, {fill: "red", stroke: "blue", strokeWidth: 5});
alert(svg.toSVG()); //this prints svg source of the generated image, i.e. circle
});
});
</script>
</head>
<body>
<div id="svg_container" style="position: absolute; left: 100px; top: 100px; width: 400px; height: 400px; border: thin solid #4297D7;"></div>
<button id="draw">Draw</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何将这个svg转换成任何类型的图像吗?
提前致谢.
UPDATE
问题解决了,我已将解决方案作为答案发布,请在此处查看.