Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用来自URL的get变量执行MYSQL查询_Php_Mysql_Variables_Urlvariables - Fatal编程技术网

Php 使用来自URL的get变量执行MYSQL查询

Php 使用来自URL的get变量执行MYSQL查询,php,mysql,variables,urlvariables,Php,Mysql,Variables,Urlvariables,我正在使用post变量,并尝试使用url中的get变量登录用户 过程如下: 用户可以获得自己的url,即kayden.domain.com 当他们创建自己的帐户时,他们有自己的用户名和密码 当他们来到kayden.domain.com时,他们会使用这些凭证 为了验证,我正在检查post变量(用户名和密码),并尝试使用$\u GET['user\u group']进行验证 当我只使用post变量时,脚本可以工作,但是当它要获取时,它就不工作了。代码如下: PHP: $SUBDOMAIN=mysql

我正在使用post变量,并尝试使用url中的get变量登录用户

过程如下:

用户可以获得自己的url,即kayden.domain.com

当他们创建自己的帐户时,他们有自己的用户名和密码

当他们来到kayden.domain.com时,他们会使用这些凭证

为了验证,我正在检查post变量(用户名和密码),并尝试使用$\u GET['user\u group']进行验证

当我只使用post变量时,脚本可以工作,但是当它要获取时,它就不工作了。代码如下:

PHP:

$SUBDOMAIN=mysql\u real\u escape\u字符串($\u GET['user\u group']);
//处理POST变量
$username=$\会话[“用户名”];
//$password=$_POST[“password”];
//设置会话变量
$\u会话[“用户名”]=$username;
$secret=$info['password'];
//检查是否存在登录cookie
如果(isset($\u COOKIE['ID\u my\u site']))
//如果有,它会让您登录并引导您进入“成员”页面
{ 
$username=$\u COOKIE['ID\u my\u site'];
$pass=$\u COOKIE['Key\u my\u site'];
$check=mysql\u query(“从user\u name='$username'和user\u group='$user\u group''的帐户中选择用户名、密码)或die(mysql\u error());
而($info=mysql\u fetch\u数组($check))
{
如果(@$info['password']!=$pass)
{
}
其他的
{
标题(“Location:members.php”);
}
}
}
//如果已提交登录表单
if(isset($_POST['submit']){//if表单已经提交
//确保他们填好了
如果(!$_POST['user\u name']|!$_POST['password']){
死亡('您没有填写必填字段');
}
//对照数据库检查它
如果(!get_magic_quotes_gpc()){
$\u POST['user\u name']=addslashes($\u POST['user\u name']);
$\u GET['user\u group']=addslashes($\u GET['user\u group']);
}
$check=mysql\u query(“从user\u name=”、$\u POST['user\u name']、“$\u group=”、“$\u GET['user\u group']。””)或die(mysql\u error());
//如果用户不存在,则给出错误
$check2=mysql\u num\u行($check);
如果($check2==0){
die('我们的数据库中不存在该用户');
}
而($info=mysql\u fetch\u数组($check))
{
$_POST['password']=md5($_POST['password']);
$\u POST['password']=$\u POST['password'];
//如果密码错误,则给出错误
如果(@$_POST['password']!=$info['password']){
die('密码不正确,请重试');
}
其他的
{ 
//如果登录是确定的,那么我们添加一个cookie
$\u POST['user\u name']=带斜杠($\u POST['user\u name']);
$hour=time()+3600;
setcookie(ID_my_site,$_POST['user_name',$hour);
setcookie(Key_my_site,$_POST['password',$hour);
//然后将它们重定向到成员区域
标题(“Location:members.php”);
} 
} 
} 
其他的
{  
//如果他们没有登录
?> 

您正在使用POST方法提交表单。 因此,您需要将它与$\u POST一起使用

如果你想和GET以及POST一起使用它
然后使用
$\u REQUEST['varName']

您正在使用POST方法提交表单。 因此,您需要将它与$\u POST一起使用

如果你想和GET以及POST一起使用它 然后使用
$\u请求['varName']

两层答案:

第1部分

您可以使用PHP$\u请求变量从GET(查询字符串)、POST和COOKIE获取详细信息

例如:

$ugData = $_REQUEST['user_group'];
$unData = $_REQUEST['user_name'];
有关这方面的更多信息,请参见:

第二部分

代码中的这一行:

$check = mysql_query("SELECT user_name,password FROM accounts WHERE user_name = '".$_POST['user_name']."' and user_group='".$_GET['user_group']."'")or die(mysql_error()); 
恶意用户可以创建一个包含
user\u组
user\u name
值的请求,该值包含其他SQL,您的脚本将毫无疑问地执行该请求

您应该始终验证任何外部输入,因为您不能相信它总是包含您期望的内容

有关这方面的更多信息,请参见:

http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php

如何应对这种情况的一个简单示例是:

$ugData = mysql_real_escape_string($_REQUEST['user_group']);
$unData = mysql_real_escape_string($_REQUEST['user_name']);
这将跳过
$\u请求
输入,从而阻止任何编制恶意请求的人。但是,它不会验证给定的用户组/用户名是否为有效值。

两层答案:

if ( isset ( $_GET['user_group'] ) { $SUBDOMAIN = mysql_real_escape_string($_GET['user_group']); } if ( isset ( $_POST['user_group'] ) { $SUBDOMAIN = mysql_real_escape_string($_POST['user_group']); } 第1部分

您可以使用PHP$\u请求变量从GET(查询字符串)、POST和COOKIE获取详细信息

例如:

$ugData = $_REQUEST['user_group'];
$unData = $_REQUEST['user_name'];
有关这方面的更多信息,请参见:

第二部分

代码中的这一行:

$check = mysql_query("SELECT user_name,password FROM accounts WHERE user_name = '".$_POST['user_name']."' and user_group='".$_GET['user_group']."'")or die(mysql_error()); 
恶意用户可以创建一个包含
user\u组
user\u name
值的请求,该值包含其他SQL,您的脚本将毫无疑问地执行该请求

您应该始终验证任何外部输入,因为您不能相信它总是包含您期望的内容

有关这方面的更多信息,请参见:

http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php

如何应对这种情况的一个简单示例是:

$ugData = mysql_real_escape_string($_REQUEST['user_group']);
$unData = mysql_real_escape_string($_REQUEST['user_name']);
这将跳过
$\u请求
输入,从而阻止任何编制恶意请求的人。但是,它不会验证给定的用户组/用户名称是否为有效值

if ( isset ( $_GET['user_group'] ) { $SUBDOMAIN = mysql_real_escape_string($_GET['user_group']); } if ( isset ( $_POST['user_group'] ) { $SUBDOMAIN = mysql_real_escape_string($_POST['user_group']); } 如果(isset($\u GET['user\u group'])){ $SUBDOMAIN=mysql\u real\u escape\u字符串($\u GET['user\u group']); } 如果(isset($\u POST['user\u group'])){ $SUBDOMAIN