我试图了解SQL注入如何工作,以及如何防止它.HTML登录页面包含一个表格,一个表格,一个用户名和密码字段,以及一个提交按钮.与mySQL数据库一起使用的PHP代码如下所示:
$conn = mysqli_connect($Host, $User, $Password, $DbName);
if (!$conn) {
echo "Database connection error.";
exit;
}
$query = "SELECT user_name, password from visitors where user_name = '".$_POST['user_name']."';";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
$user_pass = md5($_POST['pass_word']);
$user_name = $row['user_name'];
if(strcmp($user_pass,$row['password']) != 0) {
echo "Login failed";
}
Run Code Online (Sandbox Code Playgroud)
为了防止SQL注入攻击,我试图实现准备好的语句,看看W3S网站和其他人.我想我需要更换
$query="SELECT user_name, password from visitors where user_name='".$_POST['user_name']."';";
Run Code Online (Sandbox Code Playgroud)
用这样的东西:
$stmt = $conn->prepare("SELECT user_name, password from visitors where user_name= ?");
if ($stmt->execute(array($_GET[‘user_name’]))) {
while ($row = $stmt->fetch()) {
$user_name = $row;
}
} …Run Code Online (Sandbox Code Playgroud) 我正在写Smalltalk的第一个程序.我有一个实现方法的超类,然后是一个继承自这个类的子类,并覆盖超类的方法.我认为我对自我语句有困难,因为当子类调用方法时,会调用超类和子类的平衡,因此存在累积效应,而不是 - 或选择.
这是有问题的代码的摘录:
Object subclass: Account [
| balance |
...
getBalance [
^balance
]
calculateInterest [
balance:= (self getBalance)*0.2 + self getBalance.
]
]
Account subclass: PersonalAccount [
...
calculateInterest [
super calculateInterest.
balance := (self getBalance)*0.25 + self getBalance.
]
]
Run Code Online (Sandbox Code Playgroud)
我该如何纠正这个问题?
我在Smalltalk中有一个类,它存储OrderedCollection对象.每个对象都有一个名称.我想迭代OrderedCollection对象并打印出每个对象的名称.例如,在Java中我会有类似的东西:
for(int i = 0; i < array.length; ++i) {
System.out.println(array[i].getName());
}
Run Code Online (Sandbox Code Playgroud)
这是我在Smalltalk中得到的,其中"list"是OrderedCollection:
1 to: list size do: [
:x | Transcript show: 'The object name:' list at: x printString; cr.
]
Run Code Online (Sandbox Code Playgroud) 我已经阅读了有关此问题的先前StackOverflow帖子,并且在使两个不同的着色器集在一个WebGL程序中正常工作时仍然存在问题.
下面是代码的骨架框架.我有两组独立的着色器,具有不同的变量名称以防止交叉污染.我创建了两个initShader()函数,每个着色器一个,然后调用initBuffers()和draw()函数.结果是,只有第二个着色器生效,并且只显示使用此着色器绘制的项目,尽管单独标识着色器并在drawcene()中调用.
任何有关如何解决此问题的建议将不胜感激.
Declare: vertexShaderA
Declare: fragmentShaderA
Declare: vertexShaderB (use distinct variable names to that of vertexShaderA)
Declare: fragmentShaderB (use distinct variable names to that of fragmentShaderA)
// main script
initShadersA(){
…
gl.useProgram(shaderProgramA);
…
}
initShadersB(){
…
gl.useProgram(shaderProgramB);
…
}
…
setMatrixUniformsA();
setMatrixUniformsB();
function initBuffers(){
…
}
function drawScene(){
…
gl.bindBuffer(gl.ARRAY_BUFFER, vertexPositionBuffer);
gl.vertexAttribPointer(shaderProgramA.vertexPositionAttributeA, vertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
…
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, vertexIndexBuffer);
gl.uniform1i(shaderProgramA.samplerUniform, 0);
setMatrixUniformsA();
gl.drawElements(gl.TRIANGLES, vertexIndexBuffer.numItems, gl.UNSIGNED_SHORT, 0);
…
gl.bindBuffer(gl.ARRAY_BUFFER, vertexPositionBuffer);
gl.vertexAttribPointer(shaderProgramB.vertexPositionAttributeB, vertexPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
…
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, vertexIndexBuffer); …Run Code Online (Sandbox Code Playgroud) 我想在Ada把我的头围绕在OOP上.为了做到这一点,我需要了解如何使用gnatmake命名,编译和链接包文件.
这个网站(http://www.infres.enst.fr/~pautet/Ada95/chap22.htm)有很好的例子,但我不明白如何编译程序的各个部分.
我在看e_c22_p2.ada和e_c22_p3.ada.从这些文件中我创建了一个名为Conveyance1.ads的文件,并在其中添加了e_c22_p2的内容,以及一个名为Vehicle1.adb的文件,并在其中添加了e_c22_p3.ada的内容.我使用了gnatmake Vehicle1.adb,但是有编译错误.
e_c22_p2.ada包含:
-- Chapter 22 - Program 2
package Conveyance1 is
-- This is a very simple transportation type.
type TRANSPORT is
record
Wheels : INTEGER;
Weight : FLOAT;
end record;
procedure Set_Values(Vehicle_In : in out TRANSPORT;
Wheels_In : INTEGER;
Weight_In : FLOAT);
function Get_Wheels(Vehicle_In : TRANSPORT) return INTEGER;
function Get_Weight(Vehicle_In : TRANSPORT) return FLOAT;
-- This CAR type extends the functionality of the TRANSPORT type.
type CAR is new TRANSPORT;
function Tire_Loading(Vehicle_In : CAR) …Run Code Online (Sandbox Code Playgroud) 我正在编写我的第一个Haskell程序,我在使用用户输入的输入值创建函数时遇到了困难.我还不太了解这种语言,所以我开始简单地通过创建一个读取用户输入值的函数并将其作为整数返回.然后,在主调用函数中,我想使用此值作为另一个函数的输入.这是代码场景:
module Main where
square :: Int -> Int
square n = n*n
getInt :: IO Integer
getInt = do
putStrLn "Enter a positive integer: "
s <- getLine
putStrLn("The number you entered is " ++ s)
let num = read s :: Integer
return num
main :: IO ()
main = do
num <- getInt
print num -- works
print $ square (getInt) -- breaks down here
print $ square (num) -- also does not work
print $ square …Run Code Online (Sandbox Code Playgroud) 我将a HashMap<String, Double>转换为HashMap<String, Double>内容按值排序的位置。当我打印出以下内容时:
Stream<Map.Entry<String, Double>> sorted = map.entrySet().stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue())).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
数据以正确的顺序打印出来,按值排序。但是,我不需要打印数据,我想将此流的内容折叠到具有新排序顺序的新HashMap中。我尝试了一些选择,但是当我这样做时,我似乎会找回原始的,未排序的HashMap:
return map.entrySet()
.stream()
.sorted(Collections.reverseOrder(Map.Entry.comparingByValue()))
.collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue()));
Run Code Online (Sandbox Code Playgroud)
如何修改流,以便将已排序的HashMap发送回去?
这是我在 WebGL 中的第一个实验:我试图将一个立方体、八面体和四面体添加到单个画布上。我分别对每个形状进行编程并测试它们:它们每个都在自己的画布中工作。当我尝试将它们加在一起时,就会出现问题。目前我只看到八面体在旋转(不,它没有遮挡其他形状,我已经检查过)。当我注释掉八面体时,我看到立方体和四面体在旋转,但它们的颜色缓冲区已经混合在一起并且不是我想要的(当我尝试分离它们的颜色缓冲区时,没有任何东西呈现在屏幕上)。我意识到我编码这些的方式存在不一致,但目前的配置是我可以同时显示这两个对象的唯一方法。现在最近添加的八面体使前两个消失了。
我感觉这个问题与顶点和颜色缓冲区有关,但我没有足够的经验和背景来知道要修改什么。我是否为每一个实例化了一个颜色缓冲区?那是有道理的。我试过这个,但前两种形状效果不佳,因此混合了颜色缓冲区。
如果有人能就此提出建议/帮助我,将不胜感激。已经花了无数个小时试图解决这个问题。
var canvas;
var gl;
var NumVertices = 36;
var points = [];
var colors = [];
var pointsT = [];
var colorsT = [];
var pointsO = [];
var colorsO = [];
var xAxis = 0;
var yAxis = 1;
var zAxis = 2;
var axis = 0;
var theta = [ 0, 0, 0 ];
var thetaLoc;
window.onload = function init()
{
canvas = document.getElementById( "gl-canvas" );
gl = WebGLUtils.setupWebGL( canvas );
if ( …Run Code Online (Sandbox Code Playgroud) 我一直在寻找解决这个问题的方法,但我很困难.我在html文件中声明一个div来保存图像,然后在Javascript中动态添加图像路径.但没有图像显示.当我声明div和图像路径时,然后图像显示,我宁愿不去这条路线.
html看起来像这样:
<div id="left" class="photos"></div>
Run Code Online (Sandbox Code Playgroud)
和这样的Javascript:
document.getElementById('left').src = "images/1001.jpg";
Run Code Online (Sandbox Code Playgroud)
这可能是什么问题?可能有一些我不知道的潜在机制?