Модератор форума: JonMagon  
Сообщество uCoz » Мастерская uCoz » Использование PHP и API на uCoz » Проблемы при использовании PHP (Ошибки, длительная загрузка скриптов и т. д.)
Проблемы при использовании PHP
Модератор форума
Сообщение # 1 | 18:14:01
Если у Вас возникли проблемы при работе с PHP (ошибки, длительная загрузка скриптов, неработоспособность функций и т. д.), Вы можете написать в данной теме.
Yuri_G
uWeb support
uVip manager
Сообщений: 4336
Репутация: 943

Сообщение # 346 | 12:56:15
Цитата Vladimir4544 ()
доброго времени суток все делаю правильно заливаю в папку /scripts и не магу найти её Файловый менеджере
и не появится в файловом менеджере, вы же должны заливать на отдельно выделенный PHP сервер если вы оплатили услугу пхп

zak7167
Сообщений: 15
Репутация: 0

Сообщение # 347 | 18:07:08
Вообщем подключил я php включил api,смысл в том что я подключаю смс биллинг, скрипты писались компанией под меня все рассказали как настроить сделал все верно но работать не работает пишет ({"SCRIPTDATA":"\ufeff","ERROR":"","SHUTDOWN":1}) в чём проблема где копать?
JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 348 | 20:47:21
Цитата zak7167 ()
в чём проблема где копать?

Обращайтесь к разработчику данного скрипта.

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
zak7167
Сообщений: 15
Репутация: 0

Сообщение # 349 | 21:01:44
ВОТ ЧТО ОН ПИШЕТ ну вообще такой ответ даже при обращении к mk_api.php если учесть что вы в этом файле ничего не меняли и он не выполняет никаких действий, просто содержит функции взаимодействия с системой, то что-то имено в платформе юкоза... это уже Вам к ним обратиться лучше
JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 350 | 21:41:19
zak7167, что?
Повторяю: обращайтесь к разработчику данного скрипта.

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
zak7167
Сообщений: 15
Репутация: 0

Сообщение # 351 | 21:56:35
скажите пожалуйста хотя бы что это значит? принцип работы: Вы сохраняете данные для доступа к каждому аккаунту в архив с паролем. Данные по цене, паролю и т. д. вносите в файл mk_config.php.Пользователей со страницы информационного или рекламного характера перенаправляете на страниццу mk_payment.php?prod=имя продукта из файла mk_config.php.
Далее, если акк еще не куплен пользователя просят ввести номер телефона, если телефон к оплате принят юзер перенаправляется на финальную страницу,
где после проверки платежа может скачать архив и увидеть пароль от него, после чего архив удет удален.

В архиве 4 файла, помимо данного:
mk_config.php -файл конфигурации с перечнем аккаунтов, именами файлов архивов и паролями к архивам а так же ценой за каждую услугу.
при этом первый ключ(в примере tovar1,tovar2,tovar3)-это как бы название аккаунта. Вы его передаете как GET или POST параметр на страницу mk_payment.php,
то есть у Вас, например баннер с рекламой конкретного аккаунта, по клику оплатить Вы перенаправляете юзера на страницу mk_payment.php?prod=akk1, при этом
в файле mk_config.php должен быть элемент массива akk1, у него должны быть элементы file, pass, price.
mk_payment.php-собственно файл оплаты-на него Вы должны перенаправлять пользователей с параметром prod то есть mk_payment.php?prod= название продукта, который есть в массиве $files_attr
в файле mk_config.php . На странице оплаты проверяется, есть ли товар в файле конфигурации, существует ли сам архив(не купили ли уже архив), и если все в порядке,
выводит пользователю окно ввода номера и при успешном принятии системой запроса на оплату переводит пользователя на страницу завершения pay_ok.php с параметрами товара и айди платежа в системе x-bill.org
На данной странице пользователя просят нажать кнопку подтверждения после завершения оплаты. После чего скрипт запрашивает x-bill.org о состоянии платежа-если платеж прошел-открывается ссылка
на архив, после скачивания которого можно получить пароль и архив будет удален. Если оплата не прошла по каким-то причинам-выдается ошибка.
Файл mk_api.php предназначен для взаимодействия с системой. Все файлы включая(желательно) архивы должны храниться в одной папке на хосте.

Добавлено (23 Янв 2014, 21:47:56)
---------------------------------------------
могу все 4 скрипта на обозрение выложить мне не жалко, только помогите пожалуйста с его реализацией, мне сказали они что проблема в самой платформе ucoz

Добавлено (23 Янв 2014, 21:56:35)
---------------------------------------------
http://tanki-akki.ucoz.ru/index/akkaunty_tanki_onlajn/0-12 вот сайт сделал всё по инструкции немного понимаю в php и html, но при нажатии на кнопку купить нифига не работает выдает хрень, разработчик говорит что это у ucoz a мол какие то проблемы помогите правильо отстроить скрипт хотябы скажите что он за ошибку выдает

Vladimir4544
Сообщений: 22
Репутация: 10

Сообщение # 352 | 09:29:01
доброго времени суток вот подскажите как исправьте создаю вход на сайт через соц.сети у меня токая проблема что не видна код безопасности как исправить вот крин как там выглодает все

http://www.kinogo-hdtv.ru сайт онлайн фильмов
Сообщение отредактировал Vladimir4544 - Пятница, 24 Янв 2014, 09:29:36
SOFTOLAB_COM
Сообщений: 1363
Репутация: 777

Сообщение # 353 | 10:25:17
Vladimir4544, уже 20 миллиардов раз писали как, учимся читать соседние темы.

Благодарности можно оставить — в репутации.
Помощью в ЛС не занимаюсь, есть форум.
Занимаюсь сайтами на платной основе.
Шаманю на php и mysql с использованием бубна 80 lvl.
zak7167
Сообщений: 15
Репутация: 0

Сообщение # 354 | 11:45:04

почему у меня они не работают? на вас последняя надежда описание как и что должно работать выше а вот сами скрипты mk_api.php

<?php
header("Content-Type: text/html; charset=UTF-8");
# Мобильная комерция x-bill.org ( API v.1.2 )
$mk_config = array();

$mk_config['usr'] = "zakamyl"; # Ваш логин на сайте x-bill.org
$mk_config['key'] = "12345"; # Контрольная строка (указана в настройках проекта)
$mk_config['sid'] = "68"; # ID проекта

# Тут ничего менять не нужно!
$mk_config['api1'] = "http://api.x-bill.org/"; # Основной адрес.
$mk_config['api2'] = "http://api.x-bill.ru/"; # Дополнительный адрес на случай если первый не отвечает.

# Инициализации платежа
function mk_create_pay ($phone, $cost, $desc, $answer="", $arr=array()) {
global $mk_config;
$phone = preg_replace('/[^0-9]/', '', $phone);
$cost = (float)str_replace(",", ".", $cost);
$desc = $desc;
$answer = $answer;
$var = "";
if (isset ($arr)) {
$keys = array_keys ($arr);
for($i=0; $i<count($keys); $i++){ $var .= "&{$keys[$i]}=".$arr[$keys[$i]]; }
}
$post = "phone={$phone}&cost={$cost}&desc={$desc}&answer={$answer}&sign=".mk_create_sign($phone)."&login={$mk_config['usr']}&sid={$mk_config['sid']}{$var}";

$result = mk_send_data ($post, $mk_config['api1']."payment.php");
if ($result == 'error') { $result = mk_send_data ($post, $mk_config['api2']."payment.php"); }
if ($result == 'error') {
return "0";
}else{
$result = mk_parse_result($result);
return $result;
}
}

# Узнаем статус платежа по ID
function mk_get_status($id) {
global $mk_config;
$post = "id={$id}&sign=".mk_create_sign()."&login={$mk_config['usr']}&sid={$mk_config['sid']}";
$result = mk_send_data ($post, $mk_config['api1']."status.php");
if ($result == 'error') { $result = mk_send_data ($post, $mk_config['api2']."status.php"); }
if ($result == 'error') {
return "0";
}else{
$result = mk_parse_result($result);
return $result;
}
}

# Запрашиваем баланс
function mk_get_balance($password = "", $sid = "", $dade_in = "", $date_to = "") {
global $mk_config;
$post = "login={$mk_config['usr']}&sid={$sid}&pass=".md5($password)."&date_in={$dade_in}&date_to={$date_to}";
$result = mk_send_data ($post, $mk_config['api1']."balance.php");
if ($result == 'error') { $result = mk_send_data ($post, $mk_config['api2']."balance.php"); }
if ($result == 'error') {
return "0";
}else{
$result = mk_parse_result($result);
return $result;
}
}

# Формируем подпись
function mk_create_sign ($phone=""){
global $mk_config;
return md5($mk_config['usr'].$mk_config['key'].$mk_config['sid'].$phone);
}

# Разбираем ответ от скрипта
function mk_parse_result ($result){
$XML = trim($result);
$returnVal = $XML;
$emptyTag = '<(.*)/>';
$fullTag = '<\\1></\\1>';
$XML = preg_replace ("|$emptyTag|", $fullTag, $XML);
$matches = array();
if (preg_match_all('|<(.*)>(.*)</\\1>|Ums', trim($XML), $matches)) {
if (count($matches[1]) > 0) $returnVal = array();
foreach ($matches[1] as $index => $outerXML){
$attribute = $outerXML;
$value = mk_parse_result($matches[2][$index]);
if (! isset($returnVal[$attribute])) $returnVal[$attribute] = array();
$returnVal[$attribute][] = $value;
}
}
if (is_array($returnVal)) foreach ($returnVal as $key => $value){ if (is_array($value) && count($value) == 1 && key($value) === 0){ $returnVal[$key] = $returnVal[$key][0]; } }
return $returnVal;
}

# Отпраляем POST запрос
function mk_send_data ($post, $url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); # Разрешить переадресацию
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 4); # Таймаут не менять!
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

$result = curl_exec($ch);
$status = curl_errno($ch);

curl_close($ch);
if ($status == 0 && !empty($result)) { return $result; }else{ return "error"; }
}
?>
mk_config.php

<?
#####################################################################################################################################
//массив содержит весь перечень аккаунтов tovar1,tovar2,tovar3-название товара(передается на страницу mk_payment.php в виде параметра prod)
// далее у каждого товара есть атрибуты file-название файла архива для скачивание(можно с путем, но желательно все в одной папке хранить, во избежание ошибок)
//pass-пароль, который Вы установите на этот конкретный архив
//price-цена, за архив в рублях
#####################################################################################################################################
$files_attr=array (
"Vadim2mms"=>array("file"=>"http://tanki-akki.ucoz.ru/akkaynt.rar","pass"=>"zakt","price"=>70),//название товара(передается в форму оплаты), файл у Вас на сайте, архив с аккаунтом,пароль к нему и цена услуги;
"tovar2"=>array("file"=>"file2.rar","pass"=>"55525","price"=>200),
"tovar3"=>array("file"=>"file3.rar","pass"=>"54545","price"=>500)
);
?>
mk_payment.php
<?
##################################Страница оплаты########################################
######################Подключаем файл для взаимодействия и файл с конфигурацией товаров(все должно быть в одной папке)###############################
include("mk_config.php");
include("mk_api.php");
############################################################################################################################################ #########
//Введен номер и нажата кнопка "Оплатить"
if(isset($_REQUEST["cr_pay"])&&isset($_REQUEST["prod"])&&isset($_REQUEST["phone"]))
{
$product=$_REQUEST['prod'];

$mk = mk_create_pay (
$_REQUEST['phone'],
$files_attr[$product]['price'],
'Оплата заказа'.$product,
'Платеж получен. Следуйте инструкциям на сайте.'
);
if ($mk['status'] == 0)
{
header("Location: pay_ok.php?prod=".$product."&id=".$mk['id']);
exit();
}
else{
?>
<script>
alert("Ошибка: <?=$mk['status_desc'];?>");
window.location="mk_payment.php?prod=<?=$product?>";
</script>
<?
}
}
//Просто перешли по ссылке на страницу оплаты
elseif(isset($_REQUEST['prod']))
{
$product=$_REQUEST['prod'];
if(isset($files_attr[$product]))//если есть такой продукт в файле mk_config.php
{
if(file_exists($files_attr[$product]['file']))//если файл еще не был куплен другим пользователем
{
##################################################Сама форма оплаты####################################################################
?>
<div>
<form method="POST" name="phone_number">
Ввведите номер телефона в формате 79123456789 для оплаты услуги:<br>
<input type="text" name="phone">
<input type="hidden" name="prod" value="<?=$_REQUEST['prod'];?>">
<input type="submit" name="cr_pay" value="Ввести">
</form>
</div>
<?
#################################################################################################################################
}
else//если архива нет, а в mk_config.php товар есть-значит его уже купили
{
echo "Простите, товар уже продан!";
?>
<br>
<a href="#" onclick="history.go(-2);">Назад</a>
<?
}
}
else//если нет в перечне товаров
{
echo "Товар не найден!";
?>
<br>
<a href="#" onclick="history.go(-2);">Назад</a>
<?
}
}
else//если не передан параметр prod то есть непонятно за какой аккаунт платить
{
echo "Товар не найден!";
?>
<br>
<a href="#" onclick="history.go(-2);">Назад</a>
<?
}
?>
pay_ok.php
<?
######################Подключаем файл для взаимодействия и файл с конфигурацией товаров(все должно быть в одной папке)###############################
include("mk_api.php");
include("mk_config.php");
#####################################################################
//Если оплата подтверждена, архив скачан, то выдаем пароль и удаляем архив
if(isset($_GET['do'])&&$_GET['do']='pass'&&isset($_GET['prod']))
{
echo "Ваш пароль к архиву: ".$files_attr[$_GET['prod']]['pass'];
$res=unlink($files_attr[$_GET['prod']]['file']);
die();
}
////////////////////////////////////////////////Если нажата кнопка оплата произведена проверяем по айди платежа статус оплаты:
if(isset($_REQUEST['id'])&&isset($_REQUEST['prod']))
{
if(isset($_REQUEST['podtv']))
{
$status=mk_get_status($_REQUEST['id']);
//print_r($status);
//$status['pay_status']='success';
if($status['pay_status']=='wait')//ожидание оплаты
{
?>
<script>
alert("Завершите процедуру оплаты и еще раз подтвердите!");
window.location="pay_ok.php?prod=<?=$_REQUEST['prod']?>&id=<?=$_REQUEST['id']?>";
</script>
<?
}
elseif($status['pay_status']=='failure')//отказались от оплаты или истекло время на оплату
{
?>
<script>
alert("Оплата не была произведена!");
window.location.href="http://tanki-akki.ucoz.ru/";
</script>
<?
}
elseif($status['pay_status']=='success')//оплата успешно проведена-выводим ссылку на архив и ссылку на получение пароля с удалением архива
{
?>
<div>
По ссылке ниже Вы можете скачать архив с аккаунтом. Архив защищен паролем. После успешного скачивания нажмите ссылку "Получить пароль"
<br>
<a href="<?=$files_attr[$_REQUEST['prod']]['file'];?>" target="_blank">Скачать архив</a>
<br>
<a href="?prod=<?=$_REQUEST['prod'];?>&do=pass" onclick="if(!confirm('Вы скачали архив?')) return false;">Получить пароль</a></td>
</div>
<?

Добавлено (24 Янв 2014, 11:45:04)
---------------------------------------------
$___notjson=1; пробовал вставить, ошибка пропадает но и грузится не грузится пустая станица, что делать мужики подскажите?

JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 355 | 12:20:19
Vladimir4544, перейдите на страницу авторизации в ПУ и введите неправильный пароль 2 раза подряд, после чего вы сможете продолжить настройку скрипта.

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
zak7167
Сообщений: 15
Репутация: 0

Сообщение # 356 | 16:10:55
со скриптом разобрался, дело в седующем архивы формата rar должны храниться в той же папке где и скрипты, но при обращении к архиву он должен скачаться, но его по ссылке нет... хотя в каталоге он есть... вот в чём дело...как мне это обойти?
JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 357 | 16:24:38
zak7167, по пути /php/* вызываются только *.php файлы. В противном случае вы увидите 404 ошибку.
Для решения этой проблемы создайте в папке со скриптом файл download.php следующего содержания
Код
<?
header("Content-Type: application/octet-stream");
header("Accept-Ranges: bytes");
header("Content-Length: " . filesize($_GET['filename']));
header("Content-Disposition: attachment; filename=" . $_GET['filename']);
readfile($_GET['filename']);
?>


Скачивание файла будет происходить уже не по ссылке /php/super-script/abcde.rar а по ссылке /php/super-script/download.php?filename=abcde.rar

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
zak7167
Сообщений: 15
Репутация: 0

Сообщение # 358 | 16:58:20
спасибо за скрипт, но проблема возникает в следующем что скрипт проверяет в той папке где находится сам, наличие фаила rar если он там есть , то купить можно а если его там нет, то пишет что товар уже куплен, т.е работает так товар покупается скачивается потом автоматически по средством скрипта удаляется и если он не находится значит пишется что уже продан, как в данную ситуацию разрешить?

Добавлено (24 Янв 2014, 16:58:20)
---------------------------------------------
т.е мне нужно что бы он проверял и удалял после покупки в корне сайта а не там где находится php скрипты.

JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 359 | 17:10:55
zak7167, в таком случае я вообще ничего не пойму.
Цитата zak7167 ()
архивы формата rar должны храниться в той же папке где и скрипты

Цитата zak7167 ()
в корне сайта а не там где находится php скрипты.

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
zak7167
Сообщений: 15
Репутация: 0

Сообщение # 360 | 17:20:33
скрипт написан таким образом что после скачивания он должен удалить фаил rar. что бы не вышло накладки ,1 аккаунт в одни руки покупается понимаете? и по логике скрипты и фаилы рар с аккаунтами должны были быть в одной папке, после продажи человек скачивает архив и он автоматически удаляется, т.е при нажатии на кнопку купить скрипт проверяет наличие этого рар фаила если его не находит пишет что товар продан. а так как в одну папку со скирптами заливать архивы рар, то как мне реализовать проверку и удаление после покупки аккаунта через корень сайта, т.е скрипты проверяют корень сайта если находят рар с определенным именем то покупка продлажается если не находит то пишет что товар уже купили.
Сообщество uCoz » Мастерская uCoz » Использование PHP и API на uCoz » Проблемы при использовании PHP (Ошибки, длительная загрузка скриптов и т. д.)
Поиск: