2013-05-04 4 views
0

Я создаю систему запроса другу, что позволяет пользователю посылать запрос друг другу добавить в список друзей, как Facebook и у меня есть 2 условия, если:PHP MySQL + создать систему запрос друг

  • пользователем является владелец профиля, он не может добавить его самостоятельно я отзовусь Msg Согласовать об ошибке
  • пользователя не владельцем профиля будет эхо сообщения, что говорят ждать, то просьба отправить

, если пользователь уже отправил запрос, я отправлю сообщение, чтобы сообщить пользователю, что запрос был отправлен.

но ошибка в том, что я нахожусь в первом состоянии, так как система отображения, что пользователь является владельцем профиля, но это неправильно

кто может мне помочь ??

это кусок кода

function addAsFriend(a,b){ 
    //alert("Member with id:" + a + "request friendship with the memeber with id:" + b); 
    var url = "script_for_profile/request_as_friend.php"; 
    $("#add_friend").text("please wait...").show(); 
    $.post(url,{request:"requestFreindship",mem1:a,mem2:b},function(data){ 
    $("#add_friend").html(data).show().fadeOut(12000); 
    }); 
} 

<div class="interactContainers" id="add_friend"> 
       <div align="right"><a href="#" onclick="return false" onmousedown="javascript:toggleInteractContainers('add_friend');">Cancel</a></div> 
       Add <?php echo $username ?> as Friend?&nbsp; 
       <a href ="#" onclick="return false" onmousedown="javascript:addAsFriend(<?php echo $_SESSION['user_id']; ?>,<?php echo $userid; ?>);">Yes</a> 

request_as_friend.php

<?php 
//var we need for both members 
$mem1=preg_replace('#[^0-9]#i','',$_POST['mem1']); 
$mem2=preg_replace('#[^0-9]#i','',$_POST['mem2']); 

if(!$mem1||!$mem2) 
{ 
    echo "Error .missing data"; 
    exit(); 
} 
if($mem1==$mem2) 
{ 
    echo "Error you can not add yourself as friend"; 
    exit(); 
} 
require_once('../include/connect.php'); 


if($_POST['request']=="requestFriendship") 
{ 
    //check that there is not a request pending where this viewer is requesting this profile owner 
    $sql = mysql_query("SELECT id FROM friend_requests WHERE mem1='$mem1' AND mem2='$mem2'limit1")or die(mysql_error()); 
    $numRows = mysql_num_rows($sql); 
    if($numRows > 0) 
    { 
     echo "You have a friend request pending already for this member. they must approve it when they view their request list"; 
     exit(); 
    } 
     //check that there is not a request pending where this profile owner is not already requesting this viewer 
    $sql = mysql_query("SELECT id FROM friend_requests WHERE mem1='$mem2' AND mem2='$mem1'limit1")or die(mysql_error()); 
    $numRows = mysql_num_rows($sql); 
    if($numRows > 0) 
    { 
     echo "This user has requested you as friend already! Check your friend Request on your profile"; 
     exit(); 
    } 
    $sql = mysql_query("INSERT INTO friend_requests(mem1,mem2,timedate) VALUES('$mem1','$mem2',now())") or die (mysql_error("friend request insertionn error")); 
    //$sql = mysql_query("INSERT INTO pms(to,from,time,sub,msg) VALUES('$mem2','XXXXX',now(),'New Friend Request','YOU Have a New friend request waiting for approval.<br /><br />Navigate to your profile and check your friend request.<br /><br />Thank you.')") or die (mysql_error("friend request PM insertionn error")); 

    echo "Friend Request sent succesfully. this member must approve the request"; 
    exit();  
} 
?> 

ответ

0

Что почтовые возвращает массив для MEM1 и mem2?

Однако вы не должны сравнивать данные сообщения. Или не оба.

Например, вы вошли в систему, ваш идентификатор хранится в сеансе. Вы открываете профиль пользователя, а именно: http://yoursite.com/viewprofile.php?id=1001. Затем после перехода от JQuery вы должны проверить в PHP, как л:

if ($_GET['id'] = $_SESSIOM['id']) { 
    //you cannot add yourself 
} 
+0

Системный дисплей показывает, что идентификатор пользователя совпадает с сеансом ['user_id'], но это неверно. – user2338686

+0

сбрасывает сеанс, и запрос возвращает одинаковые идентификаторы? –

+0

да сеанс и запрос равны одинаковому id – user2338686

0

Я был совершенно неправильно, вам не нужно создавать какие-либо дополнительные флаг, просто хранить user_id - который вы извлечения из базы данных при пользователь регистрируется в - сохраните его в сеансе, а затем, когда он нажимает на кнопку , добавьте друга. Проверьте флажок $_SESSION['user_id'] с идентификатором другого пользователя перед выполнением функции дружбы, если они оба одинаковы, означает, что это тот же человек, иначе добавить друзей.

+0

и как его использовать здесь ?? я имею в виду, что я добавляю логическое поле в базу данных, тогда я буду проверять php правильно, если я ошибаюсь. – user2338686

+0

вы можете сохранить его значение в сеансе после извлечения из базы данных, когда пользователь входит в систему, хотя у вас есть некоторые проблемы с безопасностью, связанные с захватом сеанса, вы можете проверить его значение перед тем, как добавить друга: –

+0

, что я должен сделать: create $ is_owner = 0; после запроса sql я добавляю $ _SESSION ['isowner'] = 1; то я использую этот сеанс на странице профиля – user2338686

Смежные вопросы