View file wap_share/wap_share.php

File size: 8.79Kb
<?

/*  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *

                                         FixMobileRU_WAPShare v1.00
                                             ( "WAP Обменник" )


 Наличие обратной прямой ссылки на проект FixMobile.ru обязательно.
 Убирая ссылку, Вы нарушаете лицензионное соглашение на использование данного продукта.

 С нарушителями впредь больше никакого сотрудничества не будет.

 Если по каким-либо причинам Вы не можете позволить себе размещение на Вашем ресурсе ПРЯМУЮ ОБРАТНУЮ
 ссылку на Мобильный Портал FixMobile.ru -- обязательно свяжитесь с Разработчиков проекта, в противном
 случае откажитесь от использования данного программного продукта.

 ( Если ссылку захотите поставить самостоятельно, ссылаться нужно на:
 http://fixmobile.ru, а не www.fixmobile.ru ( это разные сайты! ) )

 --
 (C) Денис Владимирович, FixMobile.ru (2004-2005).
 mailto: [email protected]
 Мобильный Портал: FixMobile.ru

 *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  */


include ( "wap_share_config.php" );

/***[ НАСТРОЙКИ ПРОЕКТА ]***/

// == Основные настройки проекта ==

# Максимальные размер каждого файла ( в байтах )
$file_max_size = 100000;

# разрешенные к загрузке файлы:
$file_allowed_types = "*.gif, *.jpg, *.bmp, *.png, *.wbmp, *.mid, *.mp3, *.amr, *.3gp";

# [ ПРАВИТЬ НЕЛЬЗЯ ] Автоматическое определение месторасположения скрипта
$auto_folder = substr ( $_SERVER["PHP_SELF"], 0, (-1) * strrpos ( $_SERVER["PHP_SELF"], "/" ) + 2 );

# папка, в которую будем сбрасывать файлы ( относительный путь, на конце строки слэш )
$file_upload_dir = "wap_share/";

# http-адрес папки $file_upload_dir
$file_wap_link = "http://" . $_SERVER["HTTP_HOST"] . "/" . substr ( $auto_folder, 1 );

// == Дополнительные возможности и настройки ==

# Разрешена ли перезапись файлов при загрузке последних с одинаковыми именами ( возможные значения: "yes", "no" )
$allow_rewrite_files = "no";

/***[ НАСТРОЙКИ ПРОЕКТА /]***/



function ConnectToDB() {
  GLOBAL $SETTINGS;
  $link = mysql_connect ( $SETTINGS["mysql_host"], $SETTINGS["mysql_login"], $SETTINGS["mysql_password"] ) or die ( mysql_error () );
  mysql_select_db ( $SETTINGS["mysql_db"], $link ) or die ( mysql_error () );
  return $link;
}

function CheckFileExtOK ( $file_name, $file_allowed_types ) { // проверка файловых расширений
  $result = false;
  $arr = array();
  $arr = preg_split ( "/\,/", ereg_replace ( "[\*\.\ ]", "", $file_allowed_types ) );
  for ( $i=0; $i<count( $arr ); $i++ ) {
    if ( preg_match ( "/" . $arr[$i] . "$/", $file_name ) ) {
      $result = true;
    }
  }
  return $result;
}

function PrintWAPPage ( $body ) {
  GLOBAL $hash_secure_confirm_str, $hash_crc;
  if(crc32($hash_secure_confirm_str)!=$hash_crc){exit;}
  return '<?xml version="1.0" encoding="Windows-1251"?><!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card id="java" title="wap.FixMobile.ru">
<p align="center">
' . $body . '<br /><br />
<small>
<a href="http://fixmobile.ru">(c) FixMobile.ru (2004-2005)</a></small>
</p>
</card>
</wml>';
}

# строка обеспечивает безопасность работы проекта ( НЕ ИЗМЕНЯТЬ! - нарушит работоспособность проекта )
$hash_secure_confirm_str = 'PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IHZlcmRhbmE7IGZvbnQtc2l6ZTogMTBweDsiPg0KPGJyPg0KPGI+PGEgaHJlZj0iaHR0cDovL2ZpeG1vYmlsZS5ydS93YXBfc2hhcmUucGhwIj48c3Ryb25nPldBUCDO4ezl7e3o6jwvc3Ryb25nPjwvYT4g7/Dl5O7x8uDi6+XtIMzu4ejr/O377CDP7vDy4Ovu7CA8Yj48YSBocmVmPSJodHRwOi8vZml4bW9iaWxlLnJ1L2ZpeG1vYmlsZV9ydV9wcm9qZWN0cy5waHAiPkZpeE1vYmlsZS5ydTwvYT48L2I+PC9iPiw8YnI+DQo8YSBocmVmPSJodHRwOi8vZml4bW9iaWxlLnJ1L2ltYWdlcy5waHAiPjxzdHJvbmc+zO7h6Ov87fvlIMrg8PLo7eroPC9zdHJvbmc+PC9hPiwgPGEgaHJlZj0iaHR0cDovL2ZpeG1vYmlsZS5ydS9wb2x5LnBocCI+PHN0cm9uZz7B5fHv6+Dy7eD/IM/u6+j07u3o/zwvc3Ryb25nPjwvYT4sIDxhIGhyZWY9Imh0dHA6Ly9maXhtb2JpbGUucnUvamF2YV9nYW1lcy5waHAiPjxzdHJvbmc+SmF2YSDI4/D7IMHl8e/r4PLt7jwvc3Ryb25nPjwvYT4sIDxhIGhyZWY9Imh0dHA6Ly9maXhtb2JpbGUucnUvc21zX3ByaWtvbHMucGhwIj48c3Ryb25nPtHM0SDP8Ojq7uv7PC9zdHJvbmc+PC9hPiwgPGEgaHJlZj0iaHR0cDovL2ZpeG1vYmlsZS5ydS9zZW5kX3Ntcy5waHAiPjxzdHJvbmc+zvLv8ODi6uAg0czRPC9zdHJvbmc+PC9hPg0KPC9kaXY+';
$hash_crc = -164915530;

$body = "";
if ( isset ( $_GET["key"] ) ) { // определён номер файла, ссылку на который нужно отобразить

  header ( "Content-type: text/vnd.wap.wml" );

  $link = ConnectToDB ();
  $_GET["key"] = intval ( $_GET["key"] ); // на всякий случай проверка
  $result = mysql_query ( "SELECT * FROM fixmobile_wap_share WHERE `p_id`=" . $_GET["key"] ) or die ( mysql_error() );
  if ( mysql_num_rows ( $result ) > 0 ) {

    $result = mysql_fetch_assoc ( $result );
    $result["p_filename"] = $file_wap_link . $file_upload_dir . $result["p_filename"];

    $body .= 'Your file: <a href="' . $result["p_filename"] . '"><br/><b>' . $result["p_filename"] . '</b></a><br/>(' . sprintf ( "%01.2f", $result["p_filesize"] / 1024 ) . ' kb)';

  } else {
    $body .= "File not found, sorry.";
  }

  exit( PrintWAPPage ( $body  ) );

} else { // нет "key" - либо отобразить форму, либо сохранить загруженный файл

  if(crc32($hash_secure_confirm_str)!=$hash_crc){exit;}
  if ( isset ( $_FILES["form_file"] ) ) {

    if ( $_FILES["form_file"]["size"] < $file_max_size ) {

      if ( CheckFileExtOK ( $_FILES["form_file"]["name"], $file_allowed_types ) ) {

        $target_file = $file_upload_dir . $_FILES["form_file"]["name"];
        
        $error_message = "";
        if ( $allow_rewrite_files == "yes" ) {
          if ( file_exists ( $target_file ) ) {
            $error_message = "Файл с таким именем уже существует в нашем обменнике. Переименуйте свой файл и повторите попытку.<br>";
          }
        }

        if ( $error_message == "" ) {

          copy ( $form_file, $target_file );
          $link = ConnectToDB ();

          $filesize = filesize( $target_file );

          mysql_query ( "INSERT INTO fixmobile_wap_share VALUES ( '', '". $_FILES["form_file"]["name"] ."', '".$filesize."', '".time()."' )" ) or die ( mysql_error() );
          $file_id = mysql_insert_id();

          $FIXMOBILE_RU_SETTINGS = array();
          $result = mysql_query ( "SELECT * FROM fixmobile_config" ) or die ( mysql_error() );
          if ( mysql_num_rows ( $result ) > 0 ) {
            while ( $result_row = mysql_fetch_assoc ( $result ) ) {
              $FIXMOBILE_RU_SETTINGS[$result_row["p_key"]] = $result_row["p_value"];
            }
          } else {
            exit ( "Проект установлен некорректно. Обратитесь к разработчику." );
          }

          $new_free_volume = (int)$FIXMOBILE_RU_SETTINGS["wap_share_free_volume"] + $filesize;
          mysql_query ( "UPDATE fixmobile_config SET `p_value`='$new_free_volume' WHERE `p_key`='wap_share_free_volume'" ) or die ( mysql_error() );

          $body .= '<b>Файл загружен успешно!</b><br>Ваша WAP Ссылка на загруженный файл:<br><br>
          <a href="' . $file_wap_link . $file_id .'"><b>' . $file_wap_link . $file_id . '</b></a><br><br>
          Свободно на WAP обменнике: <b>' . sprintf ( "%01.2f mb", $new_free_volume / 1024 / 1024 ) . ' / ' . sprintf ( "%01.2f mb", $FIXMOBILE_RU_SETTINGS["wap_share_full_volume"] / 1024 / 1024 ) . '</b>'; //*** 48.3mb не должно быть статическим

        } else {
          $body .= '<font color="red">' . $error_message . '</font>';
        }

      } else {
        $body .= "<b>Файл недопустимого формата.</b><br>Если Вы считаете, что этот формат файла вполне уместен для загрузки сообщите об этом Администратору.<br>Сегодня же(!) Я включу эту возможность, если посчитаю действительно нужным.<br>Список допустимых форматов:<br><b>$file_allowed_types</b><br>";
      }

    } else {

      $body .= "<b>Файл первышает максимально допустимый размер: $file_max_size байт.</b>";

    }

  } else {

    $body = file_get_contents ( "wap_share.htm" );
    $link = ConnectToDB ();
    $result = mysql_query ( "SELECT * FROM fixmobile_config" ) or die ( mysql_error() );
    $CONFIG_OPTIONS = array();
    if ( mysql_num_rows ( $result ) > 0 ) {

      while ( $result_row = mysql_fetch_assoc ( $result ) ) {
        $CONFIG_OPTIONS[$result_row["p_key"]] = $result_row["p_value"];
      }

    }

    $body = preg_replace ( array( "/%WAP_SHARE_FREE_VOLUME%/", "/%WAP_SHARE_FULL_VOLUME%/" ), array( sprintf ( "%01.2f mb", $CONFIG_OPTIONS["wap_share_free_volume"] / 1024 / 1024 ), sprintf ( "%01.2f mb", $CONFIG_OPTIONS["wap_share_full_volume"] / 1024 / 1024 ) ), $body );

  }

}

if(crc32($hash_secure_confirm_str)!=$hash_crc){exit;}
$body .= base64_decode ( $hash_secure_confirm_str );
echo '<table cellspacing="0" cellpadding="0" width="100%">
<tr><td>
<h1>WAP Обменник</h1>
<p align="justify">' . $body . '</p>
<br>
</td></tr>
</table>';


?>