1

関数を介して PHP 変数の値を渡そうとしているときに、いくつかの問題に直面しています。関数の 1 つ内で変数を使用しようとするたびに、その値は nil になります。より具体的に説明します。php ファイルに次のコードがあります。 :

$myvar = $Session['username'];

function updateuserinformation(){

        if(trim($_FILES["fileUpload"]["tmp_name"]) != ""){

            $images = $_FILES["fileUpload"]["tmp_name"];
            $new_images = "thumbnails_".$_FILES["fileUpload"]["name"];
            copy($_FILES["fileUpload"]["tmp_name"],"Photos/".$_FILES["fileUpload"]["name"]);
            $width=200; //*** Fix Width & Heigh (Autu caculate) ***//
            $size=GetimageSize($images);
            $height=round($width*$size[1]/$size[0]);
            $images_orig = ImageCreateFromJPEG($images);
            $photoX = ImagesX($images_orig);
            $photoY = ImagesY($images_orig);
            $images_fin = ImageCreateTrueColor($width, $height);
            ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
            ImageJPEG($images_fin,"Photos/".$new_images);
            ImageDestroy($images_orig);
            ImageDestroy($images_fin);

            print $data["foo"];

            echo"$myvar";

            mysql_query("UPDATE users SET userpictureaddress = 'http://www.litsdevelopment.com/litsapplication/userimages/MATEUS' WHERE username = 'Mateus' ");

        }
}

関数で $myvar 値を使用しようとしていますが、コードを実行するたびに機能しません。すでにグローバル、グローバル、配列、およびセッションを試しましたが、何も機能しませんでした。もちろん、少し間違いを犯していますその一部ですが、これを行う正しい方法を知っている人はいますか?

4

3 に答える 3

2

PHP で変数スコープがどのように機能するかを理解したい場合は、以下をお読みください。

http://php.net/manual/en/language.variables.scope.php

$myvar = $Session['username'];

function updateuserinformation(){
    global $myvar;

        if(trim($_FILES["fileUpload"]["tmp_name"]) != ""){

            $images = $_FILES["fileUpload"]["tmp_name"];
            $new_images = "thumbnails_".$_FILES["fileUpload"]["name"];
            copy($_FILES["fileUpload"]["tmp_name"],"Photos/".$_FILES["fileUpload"]["name"]);
            $width=200; //*** Fix Width & Heigh (Autu caculate) ***//
            $size=GetimageSize($images);
            $height=round($width*$size[1]/$size[0]);
            $images_orig = ImageCreateFromJPEG($images);
            $photoX = ImagesX($images_orig);
            $photoY = ImagesY($images_orig);
            $images_fin = ImageCreateTrueColor($width, $height);
            ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
            ImageJPEG($images_fin,"Photos/".$new_images);
            ImageDestroy($images_orig);
            ImageDestroy($images_fin);

            print $data["foo"];

            echo"$myvar";

            mysql_query("UPDATE users SET userpictureaddress = 'http://www.litsdevelopment.com/litsapplication/userimages/MATEUS' WHERE username = 'Mateus' ");

        }
}

しかし、@JohnConde が指摘しているように、セッションから読み取ろうとしている場合、本当に $_SESSION を意味しているように見えます。

于 2012-04-06T23:24:07.123 に答える
2
  1. あなたは電話しませんでしたsession_start()
  2. つづりを間違えた$_SESSION
  3. 関数で変数を使用し、ベスト プラクティスに従う場合は、関数で使用する変数をパラメーターとして渡す必要があります。

    session_start();
    $myvar = $_SESSION['username'];
    
    function updateuserinformation($myvar){
    
        if(trim($_FILES["fileUpload"]["tmp_name"]) != ""){
    
            $images = $_FILES["fileUpload"]["tmp_name"];
            $new_images = "thumbnails_".$_FILES["fileUpload"]["name"];
            copy($_FILES["fileUpload"]["tmp_name"],"Photos/".$_FILES["fileUpload"]["name"]);
            $width=200; //*** Fix Width & Heigh (Autu caculate) ***//
            $size=GetimageSize($images);
            $height=round($width*$size[1]/$size[0]);
            $images_orig = ImageCreateFromJPEG($images);
            $photoX = ImagesX($images_orig);
            $photoY = ImagesY($images_orig);
            $images_fin = ImageCreateTrueColor($width, $height);
            ImageCopyResampled($images_fin, $images_orig, 0, 0, 0, 0, $width+1, $height+1, $photoX, $photoY);
            ImageJPEG($images_fin,"Photos/".$new_images);
            ImageDestroy($images_orig);
            ImageDestroy($images_fin);
    
            print $data["foo"];
    
            echo"$myvar";
    
            mysql_query("UPDATE users SET userpictureaddress = 'http://www.litsdevelopment.com/litsapplication/userimages/MATEUS' WHERE username = 'Mateus' ");
    
        }
    

    }

于 2012-04-06T23:25:28.450 に答える
1

変数を関数に渡すか、関数内でそれがグローバルであることを宣言する必要があります。

例えば

function updateuserinformation($myvar){

また

global $myvar;
echo $myvar;

また、セッション変数を操作する前に、 を呼び出す必要がありますsession_start()

于 2012-04-06T23:20:10.327 に答える