微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当插入Mysql db时,Facebook用户数据为空

如何解决当插入Mysql db时,Facebook用户数据为空

| 我目前正在IFrame中开发PHP facebook canvas。这个想法是为了让用户使用Facebook提供的来自Facebook的api用户数据将图片上传MysqL数据库。 一切顺利,直到我必须将Userdata和图片一起保存为止。在我推送提交并上传图片之后。它会重新加载页面显示图片,但不会同时插入来自facebook的userdata。我在Internet上尝试了很多选项,但不在乎。它不会插入用户数据和图片我有一个看起来像这样的索引文件
        <?PHP 
    setcookie(\"fag\");
    session_start();
    ?>
    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\">
    <head>
    <Meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
    <link type=\"text/css\" rel=\"stylesheet\" href=\"css/style.css\" />
    <title>Facebook</title>
    <?PHP
    define(\'MyConst\',TRUE);
    include_once \'ClassLibrary/User_AR.PHP\';
    include_once \'ClassLibrary/FacebookApi.PHP\';
    include_once \'ClassLibrary/ImageUpload.PHP\';
    $sr = new User_AR();
    $fb = new FacebookApi();
    $iu = new ImageUpload();
                $info = $fb->getUserInfo();
                $_COOKIE[\"fag\"] = $info;
                    foreach ($info as $key => $v )
            {
            switch ($key)
            {
            case \"ID\":
                echo $v;
                break;
            case \"Name\":

                echo $v;
                break;
            case \"Email\":
                echo    $v;
                break;
            case \"Img\":
                echo $v;

                break;
            }
            }
    ?>

    </head>

    <body>

    <?PHP 

             if (isset($_POST[\"sendPhoto\"])) {
                echo \"Is Set\";

                if ($sr->exists($info[\"ID\"]) == false) {
             $iu->processForm();
                }else{
                $iu->displayForm();
                }
            }
            else
            {
                $iu->displayForm();
                echo \"Is not Set\";
            }
    $arr = array($sr->getAllUsers());
     for($i = 0; $i < count($arr); $i++){
    foreach ($arr[$i] as $key => $value) {
            echo \"<div class=\".\'\"\'.\"userBox\".\'\"\'.\">\".\"<div class=\".\'\"\'.\"innerBox\".\'\"\'.\">
            <div class=\".\'\"\'.\"Title\".\'\"\'.\">Navn :</div><div class=\".\'\"\'.\"Values\".\'\"\'.\">\".$value[\"Name\"].\"</div>\".
            \"<div class=\".\'\"\'.\"Dato\".\'\"\'.\">Dato :</div><div class=\".\'\"\'.\"Values\".\'\"\'.\">\".date(\"m.d.y\").\"</div>\".
            \"<div class=\".\'\"\'.\"Title\".\'\"\'.\">Billede :</div><div class=\".\'\"\'.\"img\".\'\"\'.\"><img alt=\".\'\"\'.\"BrugerBillede\".\'\"\'.\" height=\".\'\"\'.\"150\".\'\"\'.\" width=\".\'\"\'.\"150\".\'\"\'.\" class=\".\'\"\'.\"Image\".\'\"\'.\"src=\".\'\"\'.$value[\"Img\"].\'\"\'.\"/></div></div></div>\";
         }
     }

    ?>



    </body>
    </html>
请记住,此代码是沙盒代码,可能包含奇怪的单词,这是由于疲倦的开发人员无法使其正常工作而导致的! 无论如何,这应该显示出uploadform并允许您上传文件,并且如果您在MysqL数据库中已注册,则不会显示该表单。 现在,这是ImageUpload文件,其中包含用于获取信息的上传图片代码。     
function __construct()
{       
        $killer = $_COOKIE[\"fag\"];

            foreach ($killer as $key => $v )
            {
        switch ($key)
        {
        case \"ID\":
            $id = $v;
            echo $id;
            break;
        case \"Name\":
            $name = $v;
            echo $name;
            break;
        case \"Email\":
            $email = $v;
            echo $email;
            break;
        case \"Img\":
            $img = $v;
            echo $img;
            break;
            }

        }

}

    function displayForm() {

    echo \"<form action=\".\'\"\'.$this->processForm().\'\"\'. \"method=\".\'\"\'.\"post\".\'\"\'.\"enctype=\".\'\"\'.\"multipart/form-data\".\'\"\'.\">
<div>

<input type=\".\'\"\'.\"hidden\".\'\"\'. \"name=\".\'\"\'.\"MAX_FILE_SIZE\".\'\"\'.\"value=\".\'\"\'.\"100000\".\'\"\'.\"/>
<label for=\".\'\"\'.\"userfile\".\'\"\'.\">Upload file:</label>
<input type=\".\'\"\'.\"file\".\'\"\'.\"name=\".\'\"\'.\"photo\".\'\"\'. \"id=\".\'\"\'.\"photo\".\'\"\'.\"/>
<input type=\".\'\"\'.\"submit\".\'\"\'. \"name=\".\'\"\'.\"sendPhoto\".\'\"\'.\"value=\".\'\"\'.\"Send Photo\".\'\"\'.\"/>

</div>
</form>\";
    }
function processForm(){
    $se = new User_AR();
            if (isset($_FILES[\"photo\"]) && $_FILES[\"photo\"][\"error\"] == UPLOAD_ERR_OK){

                if ($_FILES[\"photo\"][\"type\"] !=\"image/jpeg\") {
                        echo \"<p>Kun JPG or PNG </p>\";
                        $this->bool = false;
                }
                else if(!move_uploaded_file($_FILES[\"photo\"][\"tmp_name\"],\"images/\".basename($_FILES[\"photo\"][\"name\"])))
                {
                    //echo \"<p>Im sorry there was a problem uploading that photo</p>\".$_FILES[\"photo\"][\"error\"];
                }
                else 
                {



                $se->InsertPict($this->name,$this->email,\"images/\".basename($_FILES[\"photo\"][\"name\"]),$this->id);           
                $this->displayThanks();         

                }

            }else{

            echo $_FILES[\"photo\"][\"error\"];
            }



/*              if (isset($_FILES[\"photo\"])&& $_FILES[\"photo\"][\"error\"] == UPLOAD_ERR_OK) {
            if ($_FILES[\"photo\"][\"type\"] !=\"image/jpeg\") {
                echo \"<p>Kun JPG </p>\";

            }else if (!move_uploaded_file($_FILES[\"photo\"][\"tmp_name\"],\"images/\".basename($_FILES[\"photo\"][\"name\"])))
            {
                echo \"<p>Im sorry there was a problem uploading that photo</p>\".$_FILES[\"photo\"][\"error\"];

            }else{

                }
        }else 
        {
            switch ($_FILES[\"photo\"][\"error\"]) {
                case UPLOAD_ERR_INI_SIZE:
                    $message = \"The photo is larger than server allows\";
                    break;
                case UPLOAD_ERR_FORM_SIZE:  
                    $message = \"The photo is larger  than the script allows.\";
                break;
                case UPLOAD_ERR_NO_FILE:
                    $message = \"No file was uploaded. Make sure you choose a file to upload.\";

                default:
                    $message = \"Please contact your server administrator for help\";
                break;
            }
    echo \"FEST          \". $killer[\"Name\"];
        }*/
            function getitman() {


            }

    }

    function displayThanks() {
        echo \"<p><img src=\".\'\"\'.\"images/\".$_FILES[\"photo\"][\"name\"].\'\"\'.\" alt=\".\'\"\'.\"Photo\".\'\"\'.\"/> Thanks!</p>\";
    }

    function __destruct() {

    }
}

?>
现在,这里变得完全怪异和疯狂。这行代码不会执行我告诉它的操作(仅保存图像)
$se->InsertPict($this->name,$this->id);
如果使用此if / else构造,它将仅保存我的图像,而不保存userdata
function processForm(){
    $se = new User_AR();
            if (isset($_FILES[\"photo\"]) && $_FILES[\"photo\"][\"error\"] == UPLOAD_ERR_OK){

                if ($_FILES[\"photo\"][\"type\"] !=\"image/jpeg\") {
                        echo \"<p>Kun JPG or PNG </p>\";
                        $this->bool = false;
                }
                else if(!move_uploaded_file($_FILES[\"photo\"][\"tmp_name\"],\"images/\".basename($_FILES[\"photo\"][\"name\"])))
                {
                    //echo \"<p>Im sorry there was a problem uploading that photo</p>\".$_FILES[\"photo\"][\"error\"];
                }
                else 
                {
                $se->InsertPict($this->name,$this->id);           
                $this->displayThanks();         

                }

            }else{

            echo $_FILES[\"photo\"][\"error\"];
            }





}
但是,一旦我将它放在if / else构造之外,它就会保存所有信息..但不会保存图像,并且在我连接到Facebook ap / canvas页面后立即执行此操作。这是不可取的(因为用户必须上传图片)。但是我很困惑,因为这个疯狂的代码而要疯了! 这是User_AR PHP文件
<?PHP
include_once \'ClassLibrary/DbConn.PHP\';
include_once \'ClassLibrary/FacebookApi.PHP\';

class User_AR  {

    function getAllUsers() {
    $exp = array();
    $con = new DbConn();
    $result =  $con->command(\"select * FROM User\");
    while (($row = MysqLi_fetch_array($result))!=false) {
        $exp[] = array(\"ID\" => $row[\"UserID\"],\"Name\" => $row[\"UserName\"],\"Email\" =>$row[\"UserEmail\"],\"Img\" => $row[\"UserImg\"],\"FaceID\" => $row[\"UserFaceID\"]);
}
    return $exp;
    }

public  function InsertPict($Name,$Email,$Img,$ID) {
        $con = new DbConn();
        if (MysqLi_num_rows($con->command(\"SELECT * FROM User WHERE UserFaceID =\".$ID.\"\"))== 0) {
            $res = $con->command(\"INSERT INTO User(UserName,UserEmail,UserImg,UserFaceID) values(\'$Name\',\'$Email\',\'$Img\',\'$ID\')\");
        echo    $message = \"Dit billede er nu lagt op og du deltager i konkurrencen\";
        }else 
        {
        echo    $message = \"Du har allerede indsendt et billede og deltager i konkurrencen\";

        }

    }
    function exists($faceID) {
        $fb = new FacebookApi();
        $gg = $fb->getUserInfo();

//$game  = count_chars($_COOKIE[\"fag\"][\"Name\"],3);
///     echo $game.$gg[\"Name\"];
        $con = new DbConn();
        if (MysqLi_num_rows($con->command(\"SELECT * FROM User WHERE UserFaceID = $faceID\")) == 0) {
            $var = false;

            return $var;
        }else 
        {
            $var = true;
            return $var;
        }
    }


}

?>
我知道这是可行的,因为当我在ImageUpload类的if / else之外将函数“ InsertPict \”移到if / else之外时,它可以正常工作。 由于我曾从事此工作很长一段时间,而且可能对明显的错误等视而不见。在我完全发疯并因吃掉键盘而被解雇之前,请帮助我。我将很乐意为您提供任何帮助。 预先感谢!     

解决方法

我最后重新编写了整个代码,这解决了问题。而不是使用facebook开发人员提供的示例代码。页面,我使用了php基本代码文件,并且有效。很抱歉给您带来不便。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?