我正在制作一个 php 脚本,打算在 CLI 中运行,这将帮助我在 ftp 服务器上下载文件。我将向您展示到底出了什么问题,但在我向您解释上下文之前。
我在一个共享老歌游戏图像文件的网站上注册。当我们想下载这个站点上的文件时,我们必须登录以检索下载链接。然后,给出的链接是 FTP 下载链接。
我使用 Wireshark 捕获了 FTP 连接数据包,并将其与失败的脚本化 FTP 传输进行了比较。
所以,.. FTP 服务器接受匿名连接。当我使用浏览器下载文件时,文件的链接是这样的;
ftp://website.url/somefolder/1/foo/bar/SOMEOLDIE.rar
现在,如果我使用 FileZilla 连接到这个 FTP,通过匿名登录,我会获得访问权限,我会看到一些文件夹,但是当我转到我的 iso 必须所在的“某个文件夹”时,该文件夹是空的。
看这张图,然后我会告诉你代码。
现在的代码;
function download_file($url){
echo "Downloading: ".$url;
$ch = curl_init($url);
$fp = fopen("data/output.rar", "w");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_COOKIEFILE, 'data/cookies.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//curl_setopt($ch, CURLOPT_FAILONERROR, 1);
//curl_setopt($ch, CURLOPT_FTPLISTONLY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "anonymous:mozilla@example.com");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_exec($ch);
//var_dump(curl_getinfo($ch));
//echo …Run Code Online (Sandbox Code Playgroud) 使用代码块编译项目时出现错误。我的问题来自枚举定义和结构定义。
它们是由bot定义在头文件中的,因为我只在.c关联文件中使用那些枚举和结构,所以它们起作用了。但是,当我在另一个.c文件中包含.h文件时,出现错误,这是一些代码;
maps.h
#include <stdlib.h>
#include <stdio.h>
enum Property { BACKGROUND, FOREGROUND, BLOCK, EVENT };
typedef struct {
char map_name[50];
int width;
int height;
char* map_struct;
}rpgMap;
char getTileProperty(rpgMap map, int x, int y, int property);
Run Code Online (Sandbox Code Playgroud)
maps.c
#include "maps.h"
char getTileProperty(rpgMap map, int x, int y, int property){ // Works
char value = NULL;
value = map.map_struct[(((y*(map.width-1))+y+x) * 4 ) + property];
return value;
}
rpgMap loadMap(unsigned char* map){
rpgMap Map;
//....
//some code
//...
return Map;
}
// This …Run Code Online (Sandbox Code Playgroud) 我有一个头文件,其中包含一个无符号字符数组,实际上是一个 ttf 字体文件。在 .c 文件中,我可以加载字体并使用它(我在 .c 文件中包含 ttf 头文件),但问题是当我尝试在另一个 c 文件中使用它时,我收到这两个错误之一;
我遇到的第一个错误是我的数组未声明。
因此,我包含了包含数组的头文件,然后出现第二个错误;多重定义...
有人可以帮忙吗?我不明白。我希望我的解释很清楚,并对我的近似英语感到抱歉:)
我不明白为什么我的SDL应用程序不会像我要的那样设置DOUBLE_BUF;
这是一个简短的代码,这个,没有参数执行打开全屏窗口,1024*768,在32 BPP模式.
#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include "main.h"
SDL_Surface *screen;
Main mainstruct;
void testModesInFormat(SDL_PixelFormat * format)
{
SDL_Rect **modes;
int i;
printf("Available hardware accelerated, fullscreen modes in %d bpp:\n",
format->BitsPerPixel);
modes = SDL_ListModes(format, SDL_FULLSCREEN | SDL_HWSURFACE | SDL_DOUBLEBUF);
// Check is there are any modes available
if(modes == (SDL_Rect **) 0)
{
printf("\tNo modes available!\n");
return;
}
// Check if our resolution is restricted
if(modes == (SDL_Rect **) - 1)
{
printf("\tAll resolutions available.\n");
}
else
{ …Run Code Online (Sandbox Code Playgroud) 我需要访问一个由Perl的Data :: Dumper输出的数组.
Array是一个原始文件,我需要用php访问它.
数组格式如下:
$stats = {
'days' => 25,
'lengths' => {
'Piwee' => 269,
'Jeanne-' => 904,
'kaAnar' => 340,
[... Very Big ARRAY....]
Run Code Online (Sandbox Code Playgroud)
我在这里找到了这个解决方案,但我不想使用eval(),因为这个数组将具有用户输入数据.因为在str_replace解决方案的情况下我总是需要eval()输出,我想我需要找到另一种方法来做到这一点.
也许转换为XML或直接PHP解析?
我不确定这里最好的解决方案是什么.
perl/PHP/bash解决方案没问题
注意1:我无法编辑输出此原始文件的Perl代码
注2:我不在Perl中编码所以我不知道如何使用这些数据