2013-07-24 2 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

им запускать его в localhost ... его проблема? –

+0

Это может быть проблема с разрешениями папки - какой веб-сервер вы используете, и в какой папке вы обслуживаете файлы? – compid

ответ

0

Я не знаю, если это вопрос, но в локальном хосте необходимо использовать:

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

, а не

$ postfields [ «имя пользователя»] = $ _POST [ «имя пользователя»]

Смежные вопросы