Справка PHP PHP App! - PullRequest
       3

Справка PHP PHP App!

0 голосов
/ 10 октября 2010

Я написал приложение для Facebook на PHP и HTML, которое отлично работает в браузере Opera, но не работает в Internet Explorer или Google Chrome.

Индекс страницы приложения: http://apps.facebook.com/zbtmajik/

После выбора изображения для загрузки и нажатия кнопки «Загрузить» оно должно перенаправляться на http://majik.zbrowntechnology.info (внутри фрейма) и продолжает перенаправлять на
http://majik.zbrowntechnology.info/?auth_token=e0afbd3167ae943a94b41e940298f2d1&next=http%3A%2F%2Fmajik.zbrowntechnology.info%2Fupload.php

Я думаю, что это может быть проблемой с iframe, так как, когда я отправляю форму, она пытается перенаправить всю страницу вместо того, что находится в iframe.

Я знаю, в чем проблема, но это для работы, и мне нужно исправить ее. Любая помощь приведет к тому, что ваше имя появится на странице с благодарностью в приложении!

__ _ __ upload.php _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ __ _ ____ Мне сказали, что это может быть PHP-код, который обрабатывает загрузку, поэтому вот оно:

<?php
include_once('facebook.php');
$appapikey = 'API KEY HERE';
$appsecret = 'SECRET KEY HERE';
$facebook = new Facebook($appapikey, $appsecret);
$fb_user =  $facebook->require_login();

if((!empty($_FILES["uploaded_file"])) && ($_FILES['uploaded_file']['error'] == 0)) {
  $filename = basename($_FILES['uploaded_file']['name']);
  $ext = substr($filename, strrpos($filename, '.') + 1);
  if (($ext == "jpg") && ($_FILES["uploaded_file"]["type"] == "image/jpeg") && 
    ($_FILES["uploaded_file"]["size"] < 350000)) {
      $newname = dirname(__FILE__).'/upload/zbt_'.$fb_user.'.jpg';
      if ((move_uploaded_file($_FILES['uploaded_file']['tmp_name'],$newname))) {
         header("Location: http://majik.zbrowntechnology.info/display.php");
      } else {
         header("Location: home.php?Fatal");
      }
  } else {
     header("Location: home.php?Fatal");
  }
} else {
 header("Location: home.php?Fatal");
}
?>

Я просмотрел его и, похоже, ничего не нашел, но я не очень сильный программист PHP.

Я снова просмотрел код в документе PHP и обнаружил, что проблема заключается в этой строке: if ((!! Empty ($ _ FILES ["uploaded_file"])) && ($ _FILES ['uploaded_file' ] ['error'] == 0)) {. Хотя точно не знаю, что это такое.

Ответы [ 2 ]

2 голосов
/ 10 октября 2010

Измените атрибут target form на " sourceframe " (значение iframe name).

<form enctype="multipart/form-data" method="POST" action="http://majik.zbrowntechnology.info/upload.php" target="_self">
  <input type="hidden" value="1000000" name="MAX_FILE_SIZE">
  <input type="file" style="height: 70px; font-size: 20px;" size="50" accept="image/.jpg" id="file" name="uploaded_file">
</form>

становится

<form enctype="multipart/form-data" method="POST" action="http://majik.zbrowntechnology.info/upload.php" target="sourceframe">
  <input type="hidden" value="1000000" name="MAX_FILE_SIZE">
  <input type="file" style="height: 70px; font-size: 20px;" size="50" accept="image/.jpg" id="file" name="uploaded_file">
</form>

Это проверено в FF3.6 и Chrome6.0

Кроме того, как примечание, HTML-разметка страницы, отображаемой в iframe, не самая ясная - вы можете захотетьработать над этим на каком-то этапе.

1 голос
/ 13 октября 2010

Я посмотрел ваш PHP-скрипт в вопросе. Поскольку мы устранили переадресацию как причину проблемы, давайте посмотрим на обработчик загрузки.

Я переписал скрипт и включил кучу отладочных сообщений, а также добавил строку, которая удалит существующий файл, если пользователь загрузит второй.

<?php

include_once( 'facebook.php' );
$appapikey = 'API KEY HERE';
$appsecret = 'SECRET KEY HERE';
$facebook  = new Facebook( $appapikey , $appsecret );
$fb_user   = $facebook->require_login();

if( empty( $_FILES['uploaded_file'] )
    || $_FILES['uploaded_file']['error']!=0
    || !preg_match( '/\.jpe?g$/i' , basename( $_FILES['uploaded_file']['name'] ) )
    || $_FILES['uploaded_file']['type']!='image/jpeg'
    || $_FILES['uploaded_file']['size']>350000 ){
 /* DEBUG CODE - START */
  echo '<h2>Error Detected</h2>';
  echo '<ul>';
    echo ( empty( $_FILES['uploaded_file'] )
         ? '<li>No Files - Empty</li>' : '' );
    echo ( $_FILES['uploaded_file']['error']!=0
         ? '<li>Error '.implode(',',$_FILES['uploaded_file']['error']).'</li>' : '' );
    echo ( !preg_match( '/\.jpe?g$/i' , basename( $_FILES['uploaded_file']['name'] ) )
         ? '<li>Filename does not look like a JPEG</li>' : '' );
    echo ( $_FILES['uploaded_file']['type']!='image/jpeg'
         ? '<li>Filetype is '.$_FILES['uploaded_file']['type'].'</li>' : '' );
    echo ( $_FILES['uploaded_file']['size']>350000
         ? '<li>Filesize is '.$_FILES['uploaded_file']['size'].'</li>' : '' );
  echo '</ul>';
 /* DEBUG CODE - END */
  if( !headers_sent() )
    header( 'Location: home.php?fatal' );
  die();
}

$newname = dirname(__FILE__).'/upload/zbt_'.$fb_user.'.jpg';

if( file_exists( $newname ) ){
 # User file already exists - Delete the Existing one.
  unlink( $newname );
}

if( !move_uploaded_file( $_FILES['uploaded_file']['tmp_name'] , $newname ) ){
 /* DEBUG CODE - START */
  echo '<h2>Error Detected</h2>';
  echo '<ul>';
    echo '<li>Unable to Move File</li>';
  echo '</ul>';
 /* DEBUG CODE - END */
  if( !headers_sent() )
    header( 'Location: home.php?fatal' );
  die();
}

header( 'Location: display.php' );
die();

Если / когда это работает, удалите что-нибудь между наборами /* DEBUG CODE - XXX */.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...