只使用socket,纯属好玩!FTP,socket,passive,被动,被动ftp

直接使用socket,有原始,纯属好玩
目前不知道如何在php中使用多线程,所以无法实现在当前的进程中,创建一个线程,用来接收数据,但是换成其他语言,一定没有问题
<?php
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_set_block($socket);
socket_connect ($socket, “192.168.1.10″,21);
echo(socket_read($socket,1024).”\n”);
socket_write($socket,”user www\n”,strlen(“user www\n”));
echo(socket_read($socket,1024).”\n”);
socket_write($socket,”pass alagazacom2612\n”,strlen(“pass alagazacom2612\n”));
echo(socket_read($socket,1024).”\n”);
socket_write($socket,”CDUP\n”,strlen(“CDUP\n”));
echo(socket_read($socket,4096).”\n”);
socket_write($socket,”SYST\n”,strlen(“SYST\n”));
echo(socket_read($socket,4096).”\n”);
socket_write($socket,”PASV\n”,strlen(“PASV\n”));
echo($str=socket_read($socket,1024).”\n”);
$base = substr($str,strpos($str,”(“)-1,strlen($str)-2);
$base=str_replace(“(“, “”, $base);
$base=str_replace(“)”, “”, $base);
echo($base.”\n”);
$address = explode(“,”, $base);// Divide uma string em strings
print_r($address);
echo(“Set Port:\n”);
$m = $address[4];
$n = $address[5];
$port = intval($m)*256+intval($n);//生成被动ftp所需的接收用的端口号
echo($port.”\n”);
$socket_recv = socket_create_listen($port);
socket_connect($socket_recv, “192.168.1.20″,21);
socket_write($socket,”LIST\n”,strlen(“LIST\n”));
//socket_accept($socket_recv);
//remote_socket_client_handle($remote_fd);
echo(socket_read($socket_recv,1024).”\n”);
//
// Accepts a connection on a socket
//socket_bind($socket_recv,”192.168.1.100″,$port);// Binds a name to a socket
//socket_connect($socket_recv, “192.168.1.20″,20);// Initiates a connection on a socket
//echo(socket_read($socket_recv,1024).”\n”);
?>

Share
Posted in 网站. Tags: , . »

Oracle,blob,php,pdo,10g文件,图片,压缩,存放快速解决

使用oracle存储文件图片等数据,必须将文件数据存入数据库中blob对象中,如果你使用php进行此操作,那么必须使用事务 处理,否则无法解决,使用其它语言操作还没试验过!!此处使用pdo进行操作,如果要使用压缩,那么可以将压缩好的数据作为内容,装入blob
下文 提到的此方法,仅适用于php5之后的版本
<?
$sql = ”
insert into USER_INFO
(
USERIMG //这个字段是blob类型
)values(
EMPTY_BLOB()
)
RETURNING USERIMG INTO :blob //此处注意字段名
“;

foreach($param as $key=>$value){
$sql = str_replace(“:$key”,$value,$sql);
}
$conn->beginTransaction();
$statm = $conn->prepare($sql);
$statm->bindParam(“:blob”,$lob,PDO::PARAM_LOB); //绑定参数
//$lob = fopen(“c:/test.jpg”,”rb”); //可以直接使用文件资源
$lob = $param['al_userimg']; //也可以直接使用从文件中读出的数据,甚至可以是压缩的文件
$statm->execute();
$conn->commit(); //提交后文件会进入数据库,保证没有错,输出的时候指定好头

?>

Share
Posted in 数据库. Tags: , , , , . »

FCKeditor,API,javascript,文本,值,内容

FCKeditor是一个不错的可以嵌入在网页中的文本编辑器组件,兼容IE,FIREFOX,目前也只有Opear
上海无法使用
FCKeditor的嵌入在页面中的API
获取FCKeditor的实例
var oEditor = FCKeditorAPI.GetInstance('InstanceName') ;
获取FCKeditor的编辑窗口中的内容
oEditor.GetXHTML();
返回的数据就是FCKeditor的值
FCKeditor的事件
function FCKeditor_OnComplete( editorInstance )
{
    alert( editorInstance.Name ) ;
}
系统会自动调用所定义的函数
fckeditor的事件类型
OnSelectionChange:OnAfterSetHTML: OnStatusChange:OnPaste:

完整API请参照

http://wiki.fckeditor.net/Developer%27s_Guide/Javascript_API

http://g.msn.com/0SEP/zhcnrs?name=http%3A//wiki.fckeditor.net/Developer%2527s_Guide/Javascript_API

Share
Posted in JAVA SCRIPT. »

Php,Pdo,prepare,PreparedStatement,bindParam,

最近,非令人意外,在开发活动中,遇到意想不到的bug,就是关于PDO bindParam的问题
这是个严重的问题,如果不使用prepared Statement,会遭遇到严重的问题。
<?php
$sql = “select * from your table where key1=:key and key2=:key2″;
$statm = $conn->prepare($sql);
$statm->bindParam(‘:key1′,’key’,PDO_PARAM_STR);
$statm->bindParam(‘:key2′,’key’,PDO_PARAM_INT);
$rs = $statm->execute()
?>
这个是一般情况下通用的例子,但是,问题就出在这儿,当我使用inesert语句插入数据时,apache会崩溃,莫名其妙的崩溃,都是在帮定参数的时候崩溃
最后,我竟然发现当前面 使用过 prepare的时候,不管是否关闭oracle的游标,都会出现问题,当在同一进程中再次 prepare的时候,就没有办法再执行第二句批prepare的语句,估计 pdo针对oracle的prepare sql,还是用存储过程为好,不要盲目使用php.net上说的方法。
因为这个可能是bug的问题,所以,我不得不手工处理sql的参数bind,目前,网上还有次相关的资料
期待php下一个版本能解决这个问题

Share
Posted in 数据库. »