当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 帮忙找语法错误
帖子发表于 : 2012-11-27 16:44 
头像

注册: 2011-02-11 14:09
帖子: 2899
地址: 在那不遥远的地方
系统: AnthonOS Next
送出感谢: 3
接收感谢: 13
我们高中学生会的一个在线人事数据的web api,和二维码配合,今天中午一小时写的,xampp总报后面处理结果部分的语法错误以及无法连接到数据库(localhost),对照O'Reilly的PHP & MySQL The Missing Manual没有找到语法错误……

lib/config.inc.php
[php] <?php
//MySQL connection settings
define("DBHOST", ""); // MySQL database server
define("USERNAME", ""); //MySQL username
define("PASSWD", ""); //MySQL password
define("DBNAME", ""); //Assign the database you intend to use

?>[/php]

lib/dbconnect.php
[php]< ?php
//Read config file
require 'config.inc.php';

//Connect to MySQL
mysql_connect(DBNAME, USERNAME, PASSWD)
or die("Cannot connet to database:" . mysql_error());

//Use the assigned database
mysql_select_db(DBNAME)
or die("Error using the assigned database" . mysql_error());

?> [/php]

query.php
[php] <?php

//Loading MySQL connection settings
require './lib/dbconnect.php';

//Get the requested member ID
$id = $_REQUEST['suid'];

//Build the query
$base = "SELECT name, gender, classnum, dept, year FROM ";
$match = " WHERE id = ";
$query = $base . "ia" . $match . $id . " UNION " . $base . "da" . $match . $id . " UNION " . $base . "sa" . $match . $id;

//Run the query
$result = mysql_query($query);

//Process the result
if ($result) {
$row = mysql_fetch_array($result);
$name = $row['name']
$gender = $row['gender']
$classnum = $row['classnum']
$dept = $row['dept']
$year = $row['year']
} else {
die("Invalid ID supplied");
};
?>

姓名:<?php echo "{$name}"; ?>
性别:<?php echo "{$gender}"; ?>
班级:<?php echo "{$year}"; ?>年<?php echo "{$classnum}"; ?>班
部门:<?php echo "{$dept}"; ?>
[/php]

Sent from my Lenovo A789 using Tapatalk 2


_________________
我的博客:http://www.tombu.biz
Dropbox:https://db.tt/s65JczEn
云诺:http://dwz.cn/yuniotombu
Ubuntu One:https://one.ubuntu.com/referrals/referee/918268/
坚果云:https://jianguoyun.com/d/ref/rKHDbne_NNiOijsCj26W9Q


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-27 16:45 
头像

注册: 2007-12-14 13:40
帖子: 49900
地址: 志虚国乌由市
系统: Winbuntu
送出感谢: 29
接收感谢: 414
i bat


_________________
冷轩信

渠月 · QY

本人只会灌水,不负责回答问题

无聊可以点一下→ http://u.nu/ubuntu

安装flash 还是要用
代码:
sudo apt install adobe-flashplugin


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-27 17:23 
头像

注册: 2010-06-16 1:05
帖子: 14676
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
php,直接无视掉


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-29 0:42 
头像

注册: 2006-04-12 18:54
帖子: 4671
送出感谢: 0 次
接收感谢: 7
$name = $row['name']
没分号,请查erroelog.

另外,感觉你的代码会被sql注入


_________________
荃创想


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-29 1:17 
头像

注册: 2011-02-11 14:09
帖子: 2899
地址: 在那不遥远的地方
系统: AnthonOS Next
送出感谢: 3
接收感谢: 13
jarlyyn 写道:
$name = $row['name']
没分号,请查erroelog.

另外,感觉你的代码会被sql注入

好吧,求科普……

Sent from my Lenovo A789 using Tapatalk 2


_________________
我的博客:http://www.tombu.biz
Dropbox:https://db.tt/s65JczEn
云诺:http://dwz.cn/yuniotombu
Ubuntu One:https://one.ubuntu.com/referrals/referee/918268/
坚果云:https://jianguoyun.com/d/ref/rKHDbne_NNiOijsCj26W9Q


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-29 11:54 
头像

注册: 2006-04-12 18:54
帖子: 4671
送出感谢: 0 次
接收感谢: 7
你怎么保证$id是一个参数,而不是某一个sql片段?

比如$id=' 99 or id >0 '

现在一般流行用bind params的方式来做吧。
以yii为例,一般是:

$sql="INSERT INTO tbl user (username, email) VALUES(:username,:email)";
$command=$connection->createCommand($sql);
// replace the placeholder ":username" with the actual username value
$command->bindParam(":username",$username,PDO::PARAM STR);
// replace the placeholder ":email" with the actual email value
$command->bindParam(":email",$email,PDO::PARAM STR);
$command->execute();
// insert another row with a new set of parameters
$command->bindParam(":username",$username2,PDO::PARAM STR);
$command->bindParam(":email",$email2,PDO::PARAM STR);
$command->execute();

这样的


_________________
荃创想


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-29 21:03 
头像

注册: 2011-02-11 14:09
帖子: 2899
地址: 在那不遥远的地方
系统: AnthonOS Next
送出感谢: 3
接收感谢: 13
jarlyyn 写道:
你怎么保证$id是一个参数,而不是某一个sql片段?

比如$id=' 99 or id >0 '

现在一般流行用bind params的方式来做吧。
以yii为例,一般是:

$sql="INSERT INTO tbl user (username, email) VALUES(:username,:email)";
$command=$connection->createCommand($sql);
// replace the placeholder ":username" with the actual username value
$command->bindParam(":username",$username,PDO::PARAM STR);
// replace the placeholder ":email" with the actual email value
$command->bindParam(":email",$email,PDO::PARAM STR);
$command->execute();
// insert another row with a new set of parameters
$command->bindParam(":username",$username2,PDO::PARAM STR);
$command->bindParam(":email",$email2,PDO::PARAM STR);
$command->execute();

这样的

我后来改良了一下,是用的mysql_escape_real_string()做的防注入,因为配套的学生会身份卡方案还没有定下来所以没法确定编码方式也无法用正则表达式进行审查

翻遍了O'Reilly的PHP & MySQL: The Missing Manual的安全相关的章节和索引也没有看到和SQL注入有关的内容

Sent from my Lenovo A789 using Tapatalk 2


_________________
我的博客:http://www.tombu.biz
Dropbox:https://db.tt/s65JczEn
云诺:http://dwz.cn/yuniotombu
Ubuntu One:https://one.ubuntu.com/referrals/referee/918268/
坚果云:https://jianguoyun.com/d/ref/rKHDbne_NNiOijsCj26W9Q


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-29 22:01 
头像

注册: 2006-04-12 18:54
帖子: 4671
送出感谢: 0 次
接收感谢: 7
tangmumao_wefls 写道:
jarlyyn 写道:
你怎么保证$id是一个参数,而不是某一个sql片段?

比如$id=' 99 or id >0 '

现在一般流行用bind params的方式来做吧。
以yii为例,一般是:

$sql="INSERT INTO tbl user (username, email) VALUES(:username,:email)";
$command=$connection->createCommand($sql);
// replace the placeholder ":username" with the actual username value
$command->bindParam(":username",$username,PDO::PARAM STR);
// replace the placeholder ":email" with the actual email value
$command->bindParam(":email",$email,PDO::PARAM STR);
$command->execute();
// insert another row with a new set of parameters
$command->bindParam(":username",$username2,PDO::PARAM STR);
$command->bindParam(":email",$email2,PDO::PARAM STR);
$command->execute();

这样的

我后来改良了一下,是用的mysql_escape_real_string()做的防注入,因为配套的学生会身份卡方案还没有定下来所以没法确定编码方式也无法用正则表达式进行审查

翻遍了O'Reilly的PHP & MySQL: The Missing Manual的安全相关的章节和索引也没有看到和SQL注入有关的内容

Sent from my Lenovo A789 using Tapatalk 2


http://docs.php.net/pdo.prepared-statements

这东西和编码压根没关系


_________________
荃创想


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-29 22:39 
头像

注册: 2011-02-11 14:09
帖子: 2899
地址: 在那不遥远的地方
系统: AnthonOS Next
送出感谢: 3
接收感谢: 13
jarlyyn 写道:
tangmumao_wefls 写道:
jarlyyn 写道:
你怎么保证$id是一个参数,而不是某一个sql片段?

比如$id=' 99 or id >0 '

现在一般流行用bind params的方式来做吧。
以yii为例,一般是:

$sql="INSERT INTO tbl user (username, email) VALUES(:username,:email)";
$command=$connection->createCommand($sql);
// replace the placeholder ":username" with the actual username value
$command->bindParam(":username",$username,PDO::PARAM STR);
// replace the placeholder ":email" with the actual email value
$command->bindParam(":email",$email,PDO::PARAM STR);
$command->execute();
// insert another row with a new set of parameters
$command->bindParam(":username",$username2,PDO::PARAM STR);
$command->bindParam(":email",$email2,PDO::PARAM STR);
$command->execute();

这样的

我后来改良了一下,是用的mysql_escape_real_string()做的防注入,因为配套的学生会身份卡方案还没有定下来所以没法确定编码方式也无法用正则表达式进行审查

翻遍了O'Reilly的PHP & MySQL: The Missing Manual的安全相关的章节和索引也没有看到和SQL注入有关的内容

Sent from my Lenovo A789 using Tapatalk 2


http://docs.php.net/pdo.prepared-statements

这东西和编码压根没关系

表达错误,编号的格式比如位数

Sent from my Lenovo A789 using Tapatalk 2


_________________
我的博客:http://www.tombu.biz
Dropbox:https://db.tt/s65JczEn
云诺:http://dwz.cn/yuniotombu
Ubuntu One:https://one.ubuntu.com/referrals/referee/918268/
坚果云:https://jianguoyun.com/d/ref/rKHDbne_NNiOijsCj26W9Q


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 帮忙找语法错误
帖子发表于 : 2012-11-30 10:30 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
php忘记了。perl才记得。


_________________
● 鸣学


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译