1

$user_idファイルからif(isset(...))ステートメントに変数を返そうとしています。別の if ステートメントを実行しますが、ページを設定していることをテストするechoために変数を出力しようとしています。$user_id

<?php 
include 'core/init.php';
include 'init.image.php';
protect_page();
include 'includes/overall/overall_header.php';

if(isset($_GET['username']) === true && empty($_GET['username']) === false){
$username       = $_GET['username'];


if(user_exists($username) === true){
$user_id        = user_id_from_username($username);
$profile_data   = user_data($user_id, 'first_name','last_name','email', 'username');
?>

    <h1><?php echo $profile_data['first_name']; ?>'s Yor Page</h1>

<div id="navWrapper">
    <ul>
        <li>
            <a href="#"><img src="uploads/profile/blank_profile.gif" width="150" height="150" id="blank_profile"></a>
        </li>

        <nav>
            <ul>
                <li>
                    <a href="<?php echo $profile_data['username'];?>?action=albums">Albums</a>
                </li>
                <li>
                    <a href="<?php echo $profile_data['username'];?>?action=music">Music</a>
                </li>
            </ul>
        </nav>
    </ul>
</div>

<?php
if(isset($_GET['action']) && $_GET['action']=='albums'){

$albums = get_profile_albums($user_id);

if(empty($albums)){
echo 'No Albums';
}else{

foreach($albums as $album){
if (empty($album['image'])) {
    $album['image'] = 'uploads/profile/blank_profile.gif';
}
?>
 <p><?php echo $album['name'],' (', $album['count'], ')'?> <br />
  <a href="<?php echo $profile_data['username'];?>?action=album_id=<?php echo $album['id'];?>">
    <img src="uploads/thumbs/<?php echo $album['id'];?>/<?php echo $album['image'];?>" />
  </a><br />
  <?php echo $album['description'];?>...<br />
</p>
<?php
}
}

}
if(isset($_GET['action']) && $_GET['action']=='album_id=$album['id']'){
echo $user_id;
}



if(isset($_GET['action']) && $_GET['action']=='music'){
echo'<h1>Music</h1>';
}

}else{
    echo 'Sorry, that user doesn\'t exist';
}
}else{
header('Location: index.php');
exit();
}

include 'includes/overall/overall_footer.php';
?>
4

2 に答える 2

3

一重引用符は文字列を解析しませんが、二重引用符は解析します。例えば:

$album_id = 1;
echo 'album_id=$album_id ';
echo "album_id=$album_id";

結果としてalbum_id=$album_id album_id=1

したがって、評価されたものではなく、等しい$_GET['action']=='album_id=$album_id'かどうかをチェックしています。$_GET['action']'album_id=$album_id'$album_id

あなたの小切手は、これらの行に沿ったものでなければなりません:

if (/* ... */ && $_GET['action']=="album_id=$album_id") {

編集:提案。

$_GET['action'] 一度確認して保管してください$action。そこから、if/else if/else考えられるアクションの各タイプ (音楽、アルバム、アルバムなど) をチェックするステートメントを作成します。アクションのタイプに追加のユーザー提供データが必要な場合は、それをそれぞれの if ブロックに含めます。例えば:

 $action = $_GET['action'];
 // URL: /script.php?action=albums
 if ($action == 'albums') {
     // ...
 }
 // URL: /script.php?action=album&album_id=12
 else if ($action == 'album') {
     if (!empty($_GET['album_id'])) {
          $album_id = $_GET['album_id'];
          echo "User with id $user_id is trying to access album with id $album_id";
     }
     // ...
 }
 // ...

もういや$_GET['action']=="album_id=$album_id"

于 2012-08-02T00:35:22.087 に答える
0

変数を正しく渡しています。

次の行で私がもっと気にかけているのは次のとおりです。

if(isset($_GET['action']) && $_GET['action']=='album_id=$album_id'){

'album_id=$album_id'正しくないように見え、おそらくifが起動しない理由です...$album_id一重引用符で囲まれた変数を使用しようとしているようです。これは値を置き換えず、そのまま維持$album_idします。これがあなたの意図したものであるかどうかはわかりませんが、そうでない場合は、問題の原因である可能性があります。

于 2012-08-02T00:16:45.597 に答える