2012-02-13 80 views
2

所以我试图读取这个遗留代码 - 我读这个错误,或者代码重复多次?它似乎是以多种不同的方式分配$ cuid多个不同的时间 - 它是否获得了不同的值?我能看到的唯一两种方式是通过cookie和GET请求。我应该如何阅读这段代码?

$id = ""; 
$cuid = ""; 
session_start(); 
if (isset($_SESSION['id'])) { 
    $id = $_SESSION['id']; 
    $cuid = $id; 
    $valid_user = $_SESSION['valid_user']; 
    $cuname = $_SESSION['cuname']; 
    $website = $_SESSION['website']; 
    $site = $website; 
    $email_contact = $_SESSION['email_contact']; 

} 
$cuid = $_GET['cuid']; 
include_once("dbfunctions.php"); 
if (isset($_SESSION['id'])) { 
    $cuid = $_SESSION['id']; 
} elseif (isset($cuid)) { 
    $_SESSION['id'] = $cuid; 
} 

编辑:好吧,我现在该怎么会对它使用$ _GET [ 'CUID'],如果$ _GET [ 'CUID']有一个值,不管是什么。基本上,有几个网站使用它,我们希望用户能够从其中的几个网站进行导航,并且每次都会获得不同的徽标,但是如果他们不从其他网站导航,那么在整个体验中保持相同的徽标。

我只是检查$ _GET ['cuid']是否有一个值,如果它做了,别的什么都不做,但是如果没有,请检查$ _SESSION ['id'] 。我在正确的道路上吗?

+1

这肯定是不好的和冗余代码。它可以减少一半。您应该与CSI:PHP分享。 http://csiphp.com/blog/ – 2012-02-13 19:09:13

+0

它从查询字符串(GET)中提取'cuid'。但是,如果设置了$ _SESSION ['id']',那么它将'cuid'设置为该会话变量。如果没有'$ _SESSION ['id']'set已经设置,那么在'elseif'上,它将$ _SESSION ['id']'设置为查询字符串'cuid'。 – seanbreeden 2012-02-13 19:10:11

+1

它看起来像**糟**遗产代码:D – aletzo 2012-02-13 19:10:57

回答

1

可以忽略与$cuid所有代码,直到说

$cuid = $_GET['cuid']; 

不要紧什么$cuid设置为以前,因为它被设置为$_GET内容不管是什么就行了。

因此,要总结:

  • $cuid默认情况下
  • 设置为$_GET['cuid']如果保存在会话中,该值从那里
  • 检索如果存储在会话,它使用当前值保存到会话中

或者使用代码解释:

if(isset($_SESSION['id'])) { 
    $cuid = $_SESSION['id']; 
} 
else { 
    $cuid = $_GET['cuid']; 
    $_SESSION['id'] = $cuid; 
} 
0

是,它(如果它是被进一步使用并可能$id)的会话ID就足以测试isset($_SESSION['id'])和设置$cuid。在其他块中,$cuid可以设置为$_GET['id']$_SESSION['id']

2

您可以重写整个事情如下:

$id = ""; 
$cuid = $_GET['cuid']; 
include_once("dbfunctions.php"); 

session_start(); 
if (isset($_SESSION['id'])) { 
    $id = $_SESSION['id']; 
    $cuid = $id; 
    $valid_user = $_SESSION['valid_user']; 
    $cuname = $_SESSION['cuname']; 
    $website = $_SESSION['website']; 
    $site = $website; 
    $email_contact = $_SESSION['email_contact']; 

} else 
    $_SESSION['id'] = $cuid; 
+0

如果尚未设置,则不会将get-param中的标识保存到会话中 – 2012-02-13 19:15:55

+0

这不是等效的代码。如果以前没有定义,你忘记了将$ _SESSION ['cuid']设置为$ _GET ['cuid']的部分 – Optimist 2012-02-13 19:16:12

+0

你在说什么?没有任何像$ _SESSION ['cuid'] – dynamic 2012-02-13 19:21:53