2011-06-30 12 views
0

私は、あなたの "チーム名"のいずれかを選択できる簡単なスクリプトを用意しています。あなたが選択してうんざりすると、チーム名のハッシュバージョンである選択肢の値でphp setcookieを実行することになっています。送信ボタンをクリックすると、チームの名前のためにクッキーを設定する」、PHP setcookieにパーセント記号が追加されています

<?php 
include 'include/db.php'; 

    if(isset($_POST['submitteam'])) { 
     $team_hash = $_POST['teams']; 
     setcookie('ver_aet', $team_hash, time()+2592000); 
     header('Location: index.php'); 
    } 

    $email = $_COOKIE['ver_ame']; 


     //Find the User Id from the Email Hash 
     $sql_finduid = "SELECT * FROM users_sensitive WHERE email_hash = '$email'"; 
     $sql_finduid_result = mysql_query($sql_finduid); 
     while ($row = mysql_fetch_array($sql_finduid_result)) { 
      $user_id = $row['user_id']; 
     } //End Find User Id 
     /* 
     $sql_finduid = mysql_query("SELECT user_id FROM users WHERE email = '$email'"); 
     $user_id = mysql_result($sql_finduid) or die(mysql_error()); 
     */ 

     //Find the Team Id from the User Id above 
     $sql_findteams = "SELECT * FROM team_members WHERE user_id = '$user_id'"; 
     $sql_findteams_result = mysql_query($sql_findteams); 
     if(mysql_num_rows($sql_findteams_result) < 1){ 
       header('Location: registerteam.php?ver_ame=' . $email); 
      } else { 

     while ($row = mysql_fetch_array($sql_findteams_result)) { 
      $team_id = $row['team_id']; 
      /* 
      $sql_finduid = mysql_query("SELECT user_id FROM users WHERE email = '$email'"); 
      $user_id = mysql_result($sql_finduid) or die(mysql_error()); 
      */ 



      if((mysql_num_rows($sql_findteams_result)) <= 1) { 

       $sql_findteamname = "SELECT * FROM teams WHERE team_id = '$team_id'"; 
       $sql_findteamname_result = mysql_query($sql_findteamname); 
       while ($row = mysql_fetch_array($sql_findteamname_result)) { 
        $team_name = $row['team_name']; 
        $team_hash = $row['team_name_hash']; 
       } 

       setcookie('ver_aet', $team_hash, time()+2592000); 
       header('Location: index.php'); 

      } else { 

    //setcookie('ver_ame', $teamname_hash, time()+2592000); 
    //setcookie('ver_aet', $email, time()+2592000); 
    //header('Location: index.php'); ?> 

Select the team you would like to view: <br /> 
      <form method="post" action="<?PHP echo $_SERVER['PHP_SELF']; ?>"> 
       <select name="teams"> 
        <?PHP   
        $sql_findteams = "SELECT * FROM team_members WHERE user_id = '$user_id'"; 
        $sql_findteams_result = mysql_query($sql_findteams); 
        while ($row = mysql_fetch_array($sql_findteams_result)) { 
         $team_id = $row['team_id']; 
         /* 
         $sql_finduid = mysql_query("SELECT user_id FROM users WHERE email = '$email'"); 
         $user_id = mysql_result($sql_finduid) or die(mysql_error()); 
         */ 

         $sql_findteamname = "SELECT * FROM teams WHERE team_id = '$team_id'"; 
         $sql_findteamname_result = mysql_query($sql_findteamname); 
         while ($row = mysql_fetch_array($sql_findteamname_result)) { 
          $team_name = $row['team_name'] . "&nbsp;"; 
          $team_hash = $row['team_name_hash'] . "<br />"; 
         ?> 
         <option value="<?= $team_hash; ?>"><?= $team_name . $team_hash; ?></option> 
       <?PHP 
         } 
        } 
       ?> 
       </select> 
       <input type="submit" name="submitteam" value="Submit" /> 
      </form> 
     </div> 
    </div> 
</div> 

基本的にHTML:ここ

は、関連するコードですあなたのメールのクッキーを見つけ、所属するチームの数を確認し、チームが1つある場合はチームのクッキーを作成し、そうでない場合は続行してください。ユーザーが1つを選択する。ループ "

私は現在、正確なハッシュ番号を引き出していることを示すために$ team_hashを表示しています(それはです)。私がsubmitを押すと、ページの先頭にループしてsetcookie文を実行します。 。d2fea5c982b6cb3f5bffc4998d96cbe5 が実際に設定されているもの::d2fea5c982b6cb3f5bffc4998d96cbe5%3Cbr +%2F%3E

はどこにクッキーが、クッキーは、それが設定された後、それ全体でランダムパーセント記号を持つ終わるようだ

設定する必要がありますどのような設定これらの余分なものは?

+0

% 2Fと%3Eは、文字列にHTML/URLエンコード文字ですhttp://www.w3schools.com/tags/ref_urlencode.asp – niktrs

答えて

0

あなたは01何らかの形でbr/>があり、PHPはそれをエンコードしています。

右ここ

$team_hash = $row['team_name_hash'] . "<br />"; 
+1

あなたにCommunistPancakeをありがとう!あなたとフランソワは、私の髪を引き出すのを手伝ってくれました! – ntgCleaner

+0

問題ありません。お役に立てて嬉しいです。 – CommunistPancake

2

問題はあなたが$team_hash = $row['team_name_hash'] . "<br />";をやっているハッシュの終わりに<br />を追加していると、あなたはオプションの値を設定しているとき、あなたが使用しているということです$team_hashには、<br />が含まれています。 set cookieを実行しているときには、<br />にURLがエンコードされているため、なぜあなたのクッキーの最後にあるのですか。

簡単な変更行に:

$team_hash = $row['team_name_hash']; 
+0

うわー!私は再びそれをやった。私はそこに「テスト」のマークを残して、かなり似た問題を抱えていました。それは二度学んだ教訓でした。フランソワーありがとう!あなたは私を大いに助けました! – ntgCleaner

+0

@ntgCleaner - ようこそ。 –

関連する問題