我使用各种编程语言编程多年。我也有一些标记和脚本语言的经验。我是PHP的新手。我正在努力为他修复我爸爸的网站,我正在学习很多东西。我已经解决了很多问题,但目前卡住了。我父亲从5.1到5.4使用的PHP主机升级打破了网站。我注意到其中一个变化是现在需要定义变量。数据库正在更新,不再链接到图片。这是PHP:
if ($act=="update"){
$id = $_POST['id'];
$email = $_POST['email'];
$aim = $_POST['aim'];
$icq = $_POST['icq'];
$yahoo = $_POST['yahoo'];
$homepage = $_POST['homepage'];
$myip = $_POST['myip'];
if (!$myip)
$myip = $ip;
$email2 = $_POST['email2'];
$password = $_POST['password'];
$title = $_POST['title'];
$download = $_POST['download'];
$approved = $_POST['approved'];
$allowdelete = $_POST['allowdelete'];
$author = $_POST['author'];
$facebook = $_POST['facebook'];
if (isset($_POST['piclink']))
$piclink = $_POST['piclink'];
$domain = $_POST['domain'];
$option3 = $_POST['option3'];
$secret = $_POST['secret'];
if (isset($piclink)){
$picfile = "";
$download = "0";
$domain = parse_url_domain($piclink);
}
$myip = $_REQUEST['ip'];
if (!$myip)
$myip = $ip;
$email=addslashes($email);
$aim=addslashes($aim);
$icq=addslashes($icq);
$yahoo=addslashes($yahoo);
$homepage=addslashes($homepage);
$picfile=addslashes($picfile);
if (isset($dt))
$dt=addslashes($dt);
$myip=addslashes($myip);
$email2=addslashes($email2);
$password=addslashes($password);
$title=addslashes($title);
$download=addslashes($download);
$approved=addslashes($approved);
$allowdelete=addslashes($allowdelete);
$author=addslashes($author);
$facebook=addslashes($facebook);
$piclink=addslashes($piclink);
$domain=addslashes($domain);
$option3=addslashes($option3);
$secret=addslashes($secret);
//die("IP =".$myip);
$q="update $table set email='$email',aim='$aim',icq='$icq',yahoo='$yahoo',homepage='$homepage',picfile='$picfile' ,ip='$myip',email2='$email2',password='$password',title='$title',download='$download',appro ved='$approved',allowdelete='$allowdelete',author='$author',facebook='$facebook',piclink='$ piclink',domain='$domain',option3='$option3',secret='$secret' where id='$id'";
$result=mysql_query($q);
//dt='$dt' was removed from update as it blanked out date
}
if ($piclink) {
$url1 = $piclink;
} else {
$url1 = "http://plankingaround.com/pics/";
$url1 .= $picfile;
}
除了数据库中的piclink和/或picfile列之外,其他所有内容都会更新。
非常感谢任何帮助!
答案 0 :(得分:0)
这不是您所要求的,但您正在使用的网站存在严重的安全问题 - SQL注入。
http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string
在部分更新后,SQL将失败:
appro ved='$approved',
您可以在 mysql_query($ q);
之后立即用 mysql_error()回显错误答案 1 :(得分:0)
使用mysql被认为是非常糟糕的做法。你应该升级mysql - > mysqli ...这将帮助您防止SQL注入,并解决您的一些问题。因为mysql很快就会被新的PHP更新所弃用。
以下是如何执行此操作的示例:
$query = "UPDATE $table
SET
email=?,
aim=?,
icq=?,
yahoo=?,
homepage=?,
picfile=?,
ip=?,
email2=?,
password=?,
title=?,
download=?,
approved=?,
allowdelete=?,
author=?,
facebook=?,
piclink=?,
domain=?,
option3=?,
secret=?
WHERE id=?";
if($stmt = $mysqli->prepare($query)){
$stmt->bind_param('sssssssssssssssssssi', $email, $aim, $icq, $yahoo, $homepage, $picfile, $myip, $email2, $password, $title, $download, $approved, $allowdelete, $author, $facebook, $pic link, $domain, $option3, $secret, $id);
$stmt->execute();
}else die("Failed to prepare stmt");