设置变量$ _GET global(添加好友)

时间:2013-04-08 00:37:11

标签: php mysql sql get

好吧,我正在尝试编写一个添加好友脚本并且他正在工作,但是当我的脚本(在一个函数中)尝试搜索$_GET['id']以查看要发送好友请求的个人资料的ID,脚本找不到因为是profile.php中的函数而不直接在文件中

所以我可以设置$_GET会话,但如果我输入用户个人资料然后进入另一个会话,如果我尝试向第一个个人资料发送好友请求,则会发送请求到最后一个(在会话中注册)

那么如何制作$_GET“全球”?

这是我的代码:

OTHER_PROFILE.PHP

    <?php include_once("includes/head.php"); ?>
    <?php require_once("includes/connect/connect.php"); ?>
    <?php require_once("includes/functions.php"); ?>
    <?php get_directory() ?>
    <?php login_validation() ?>
    <?php first_login(); ?>
    <?php count_logins(); ?>
    <?php get_shortcuts_menu_by_user(); ?>
    <?php include_once("includes/body.php"); ?>
    <?php 
    global $userid; 
    global $userid_profilee;
    $_SESSION['userid'] = $userid;
    $_SESSION['id'] = $_GET['id'];
    ?>

    <script src="alert.js" ></script>

    <?php 
    other_profile_main_photo();
    echo "<br><br>";
    ?>

    <?php include_once("includes/body_begin.php"); ?>
    <?php echo "<br><br>";?>
    <?php include("includes/footer.php"); ?>

FUNCTIONS.PHP (只是功能部分)

<?php require_once("/connect/connect.php"); ?>
<?php require_once("/jquery.php"); ?>
<?php
######### FRIEND REQUEST ########

function friend_request_send(){

global $db;

global $userid;
$userid = $_SESSION['userid'];
$userid_profilee = $_SESSION['id'];

$query_id_requester = "SELECT * FROM friend_requests";
$result_set1 = mysql_query($query_id_requester, $db)  or die(mysql_error()) ;

$query_id_requests = "SELECT friend_requests FROM members WHERE id=\"{$userid_profilee}\" ";
$result_set3 = mysql_query($query_id_requests, $db)  or die(mysql_error());

$query_id_requester_check = "SELECT * FROM friend_requests WHERE user_id=\"{$userid_profilee}\"";
$result_set4 = mysql_query($query_id_requester_check, $db);
$query_id_user_check = "SELECT * FROM friend_requests WHERE user_id_requester=\"{$userid}\"";
$result_set5 = mysql_query($query_id_user_check, $db);

## If already exists a friend request do this:
if ($id_requests = mysql_fetch_array($result_set3)){
if (($id_requester_check = mysql_fetch_array($result_set4)) && ($id_user_check = mysql_fetch_array($result_set5))){
echo "Ja fizeste pedido de Amizade!";
return ;
}
else
{
}
}



if ($id_requester = mysql_fetch_array($result_set1)){
$id_requests_1 = $id_requests['friend_requests'] + 1;
mysql_query("UPDATE members SET friend_requests=\"{$id_requests_1}\" WHERE id=\"{$userid_profilee}\"");
mysql_query("INSERT INTO friend_requests (user_id, user_id_requester) VALUES (\"{$userid_profilee}\", \"{$userid}\")");
echo "<div class=\"nNote nSuccess hideit\">
            <p><strong>SUCCESS: </strong>Pedido de Amizade enviado com sucesso!</p>
        </div>";
}

else
{
echo "Pedido de Amizade nao enviado!";
}
}    

如果我尝试将$userid_profilee = $_SESSION['id'];更改为$userid_profilee = $_GET['id'];

,则会出现错误
  

注意:未定义的索引:第13行的C:\ xampp \ htdocs \ includes \ functions.php中的id

1 个答案:

答案 0 :(得分:4)

让我们首先指出一些事情,只是为了全面了解上述变量的工作原理!

  

根据定义

     
    

$_GET$_SESSION超全球自动全局变量。这只是意味着它们在整个脚本的所有范围内都可用。无需全局$ variable; 即可在函数或方法中访问它们。

  

话虽如此,这些变量包含

  

$_GET通过URL参数传递给当前脚本的关联变量数组。

     

$_SESSION关联数组,包含当前脚本可用的会话变量。有关如何使用此文档的详细信息,请参阅Session functions文档。

在Web应用程序中,在用户之间共享信息的唯一方法是在服务器上存储该信息!在你的情况下,你决定去一个mysql数据库。这是与php一起最常见的选择!

注意:访问mysql数据库的新标准接口不再通过mysql_* functions了!此扩展已经弃用,将在下一版本的php中删除!它更适合与mysqli_* functions一起使用或使用两种面向对象的替代方案中的一种mysqlipdo

好的,现在让我们进入添加友谊示例!从概念上讲,您只需要三个页面来完成任务,我不会详细介绍,因为最后代码很容易编写。 ..但你需要了解会话/获取变量以及它们如何不同,并且仍然能够互相交流!

login.php 这是我将检查数据库中是否存在用户并设置已记录用户的个人资料ID的地方

session_start(); // this must be on any page after the login

// if : the user exists and the password matches then

// grab the $profile_id from the database and push it to the session array

$_SESSION['logged_profile_id'] = $profile_id; 

// else : error wrong username or password

other_profile.php 此页面从数据库中抓取人员的信息,并解决“添加好友”按钮或链接

<?php session_start() ?>

<!-- includes + validation + loading person from the database and get info [id, name, status, etc] -->

<a href="addfriend.php?friend_profile_id=<?php echo $profile_id; ?>">Add Friend</a>


<!-- other includes and stuff -->

addfriend.php 这是您的$ _GET变量即将到来的地方......它将当前引用存储给朋友!

session_start();

$_SESSION['logged_profile_id'] // this is the logged in user

$_GET['friend_profile_id'] // and this is the new friend that can be added to the database

正如您所看到的,全局并不意味着您可以根据不同的用户传递变量!每个用户在自己的页面中属于自己的会话,并且唯一的方式是交叉信息,就是使用某种数据库!它可以是dbms或其他任何文件!它只需要在服务器上,并且两个用户都必须能够在其上进行读写!

记住:你必须在会话需要传输的每个页面上调用session_start,而且必须在将任何内容发送到浏览器之前调用session_start,所以最好将它放在页面的开头!