2013-07-24 122 views
0

我遇到我的PHP的錯誤,我不知道它是什麼?它說:「訪問被禁止!錯誤禁止訪問

您沒有權限訪問請求的對象,這是無論是讀保護無論是否由服務器讀取。

如果你認爲這是一個服務器錯誤,請與網站管理員聯繫。

錯誤403

twitter_sample.com 的Apache/2.4.3(Win32的)的OpenSSL/1.0 .1c PHP/5.4.7「

我的代碼是

<?php 

if($_POST) 
{ 

    $file=$_FILES['media']; 
    $postfields = array(); 

    $postfields['username'] = $_POST['username']; 

    $postfields['password'] = $_POST['password']; 
    $postfields['message'] = $_POST['message']; 
    $postfields['media'] = "@$file[tmp_name]"; 

    $t=new twitpic($postfields,true,true); 
    $t->post(); 
    exit; 
} 

?> 

<style type="text/javascript"> 
    *{font-family:verdana;} 
    span{font-size:12px;color:#393939;} 
    h3{font-size:14px;color:#5AAAF7;} 
</style> 
<body> 

    <h3>Upload your pic to twitpic, and post status on twitter</h3> 
    <form method="post" enctype="multipart/form-data" action="<?= $_SERVER[PHP_SELF] ?>" > 
    <p><span style="height:40px;font-weight:bold;margin-right:56px;">Twitter Username :</span><input type="text" name="username" /></p> 
    <p><span style="height:40px;font-weight:bold;margin-right:61px;">Twitter Password:</span><input type="password" name="password" /></p> 

    <p><span style="vertical-align:text-top;height:40px;font-weight:bold;margin-right:28px;">Message to be posted :</span> <textarea cols="35" rows="2" name="message"></textarea></p> 
    <p><span style="vertical-align:text-top;height:40px;font-weight:bold;">Choose an image to upload: </span><input type="file" name="media" /></p> 
    <p style="width:250px;text-align:right;margin-top:50px;"><input type="submit" value="Upload&nbsp;&raquo;" /> </p> 
    </form> 
    <sup>Script powered by <a href="http://www.digimantra.com/">www.digimantra.com</a></sup> 
</body> 

You can skip posting update to twitter by passing the third argument as false or just by skipping it. If you want to upload image programmatically, without the user input or the form then you can do it using the following code. Make sure the image path is correctly mention, else it will throw an error. 

<?php 
$file='file_to_be_uploaded.gif'; 
$postfields = array(); 

$postfields['username'] = 'twitter_username'; 

$postfields['password'] = 'twitter_password'; 
$postfields['message'] = 'Message to be posted' ; 
$postfields['media'] = "@$file"; //Be sure to prefix @, else it wont upload 

$t=new twitpic($postfields,true,true); 
$t->post(); 
?> 

<?php 

class twitpic 
{ 
    /* 
    * variable declarations 
    */ 
    var $post_url='http://twitpic.com/api/upload'; 
    var $post_tweet_url='http://twitpic.com/api/uploadAndPost'; 
    var $url=''; 
    var $post_data=''; 
    var $result=''; 
    var $tweet=''; 
    var $return=''; 

/* 
* @param1 is the array of data which is to be uploaded 
* @param2 if passed true will display result in the XML format, default is false 
* @param3 if passed true will update status twitter,default is false 
*/ 

    function __construct($data,$return=false,$tweet=false) 
    { 
    $this->post_data=$data; 
    if(empty($this->post_data) || !is_array($this->post_data)) //validates the data 
     $this->throw_error(0); 
    $this->display=$return; 
    $this->tweet=$tweet; 

    } 

    function post() 
    { 
    $this->url=($this->tweet)?$this->post_tweet_url:$this->post_url; //assigns URL for curl request based on the nature of request by user 
    $this->makeCurl(); 
    } 
    private function makeCurl() 
    { 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2); 
    curl_setopt($curl, CURLOPT_HEADER, false); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_URL, $this->url); 
    curl_setopt($curl, CURLOPT_POST, 3); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $this->post_data); 
    $this->result = curl_exec($curl); 
    curl_close($curl); 
    if($this->display) 
    { 
     header ("content-type: text/xml"); 
     echo $this->result ; 
    } 

    } 
    private function throw_error($code) //handles few errors, you can add more 

    { 
    switch($code) 
    { 
     case 0: 
     echo 'Think, you forgot to pass the data'; 
     break; 
     default: 
     echo 'Something just broke !!'; 
     break; 
    } 
    exit; 
    } 
} //class ends here 

?> 

謝謝你......

+0

有可能是您的網絡服務器設置的問題,並沒有任何與你的PHP腳本。 – compid

+0

即時通訊在本地主機運行它...它的問題? –

+0

這可能是文件夾權限問題 - 您使用的是哪個Web服務器,以及您從哪個文件夾提供文件? – compid

回答

0

我不知道這是不是問題,但在本地主機必須使用:

$ postfields ['username'] = addslashes($ _POST ['username'])

而不是

$ postfields [「用戶名」] = $ _ POST [「用戶名」]

相關問題