基本的PHP上传文件

基本的PHP上传文件

表单:

<form id ="form1" method="POST" enctype="multipart/form-data" >
<input name ="room_logo" type="file"  value="" id ="room_logo" class="input normal"   sucmsg=" " />
</form>

注意:表单上要加 enctype=”multipart/form-data” 

PHP处理代码:

<?php
$method = $_SERVER['REQUEST_METHOD' ];
if ($method == 'POST') { 
    $destination_folder ="../../uploads/"; //上传文件路径
    //是否存在文件
    if ( is_uploaded_file($_FILES ["room_logo"]["tmp_name" ])) {       
        $file = $_FILES["room_logo" ];
        if(!file_exists( $destination_folder )) {
            mkdir ($destination_folder);
        }
        $filename=$file["tmp_name"];
        $pinfo=pathinfo( $file["name" ]);
        $ftype=$pinfo['extension'];
        $destination = $destination_folder.time(). ".".$ftype ;
        if(!move_uploaded_file ($filename, $destination)){
            echo " 移动文件出错 ";
        }              
    }
}

?>

mysql常用语句

mysql常用语句

--日期格式化
DATE_FORMAT(genTime , '%Y-%m-%d' )
--获取当天日期的数据
SELECT * FROM newphone WHERE DATE_FORMAT(postdate , '%Y-%m-%d' )= CURDATE()


--查询mysql数据库中所有表名
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '数据库名'

--查看mysql是否区分表名大小写
show variables where Variable_name like '%lower_case_table_names%'

--修改表名区分大小写的配置:修改MySql的配置文件,在mysqld节下加入下面一行 set-variable=lower_case_table_names=0(0:大小写敏感;1:大小写不敏感)最后重启一下MySql服务即可。 


--修改表名
ALTER TABLE old_table_name RENAME TO new_table_name

WIN32 主线程中不能使用 WaitForSingleObject

主线程中不能使用 WaitForSingleObject(m_GameProcessInfo.hProcess, INFINITE);

这样会造成莫名奇妙的问题,比如我在一个项目这样用了,结果客户反馈说程序会造成鼠标一在转圈圈。经远程远程客户机排查,结果就是在主线程中使用WaitForSingleObject(m_GameProcessInfo.hProcess, INFINITE); 导致了主线程消息循环阻塞而引发的。

经过在网上查找,很快找到了解决方案,用下面的代码取代WaitForSingleObject.

while (TRUE)
{
    DWORD result;
    MSG msg;

    result = MsgWaitForMultipleObjects(1, &m_GameProcessInfo.hProcess,
               FALSE, INFINITE, QS_ALLINPUT);

    if (result == ( WAIT_OBJECT_0))
    {
        break;
    }
    else
    {
        PeekMessage(&msg, NULL , 0, 0, PM_REMOVE );
        DispatchMessage(&msg);
    }
}

微软对此函数的解释是:

为了解决在主线程中Wait的问题,微软专门设计了一个函数MsgWaitForMultipleObjects,这个函数即可以等待信号(thread,event,mutex等等),也可以等待消息(MSG)。即不论有信号被激发或者有消息到来,此函数都可以返回。

这样改过后,再发给客户测试,现象消失,问题解决。

WIN32获取当前程序所在目录

WIN32获取当前程序所在目录

#include <Shlwapi.h>
#pragma comment (lib , "shlwapi.lib" )

TCHAR wszModulePath[MAX_PATH ];
::memset(wszModulePath, 0, sizeof(TCHAR)*MAX_PATH);
GetModuleFileName(NULL , wszModulePath, MAX_PATH);
PathAppend(wszModulePath, _T ("..\\" ));
wcscat_s(wszModulePath, GAME_CLIENT_PATH);

C#中,让线程挂起

C#中,让线程挂起。不能使用Thead.Suspend(), 这个函数在.NET中已经被否决了,具体原因没有深入研究。微软推荐使用System.Threading中的函数,比如Monitor, Mutex, Event等。

在QQ好友空间访客提取的项目中我使用了ManualResetEvent这个Event类,具体用法如下:

类字段定义:

private ManualResetEvent _event = new ManualResetEvent (true ); //线程事件
private bool _pause = false; //线程是否暂停

工作线程函数中:

if (_pause)
{
     SetStatus( "已暂停");
}
_event.WaitOne();

暂停函数中:

SetStatus("暂停中...");
_event.Reset();
_pause = true;

恢复函数中:

if (_pause)
{
     //to resume thread
     _event.Set();
     _pause = false;

     return;
}

IIS服务器遭遇用户上传图片后,显示无权访问的问题

IIS服务器遭遇用户上传图片后,显示无权访问的问题,错误信息如下:

HTTP 错误 401.3 – Unauthorized
由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置,您无权查看此目录或页面

解决办法:

1、打开站点的身份验证

2、在匿名身份验证上点右键菜单,然后点编辑 

3、把匿名用户标识改为“应用程序池标识“

最后点击确定并重启站点后OK(没有测试不重启站点的情况下是不是也可以生效)

centos安装LAMP记录

centos安装LAMP记录

wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.10.tar.gz
wget http://mirrors.cnnic.cn/apache/apr/apr-1.5.1.tar.gz
wget http://mirrors.cnnic.cn/apache/apr/apr-util-1.5.4.tar.gz
tar -xvf httpd-2.4.10.tar.gz
tar -xvf apr-1.5.1.tar.gz
tar -xvf apr-util-1.5.4.tar.gz
mv apr-1.5.1 httpd-2.4.10/srclib/apr
mv apr-util-1.5.4 httpd-2.4.10/srclib/apr-util
cd httpd-2.4.10
yum -y install pcre-devel.x86_64
./configure  --prefix=/web/httpd --with-included-apr --enable-nonportable-atomics=yes --with-z
make
make install
cp /web/httpd/bin/apachectl /etc/init.d/httpd
vi /etc/init.d/httpd
#!/bin/sh下加上
# chkconfig: 35 85 15
# description: Activates/Deactivates Apache 2.4.10
chkconfig --add httpd
chkconfig httpd on

以下是配置httpd
vi /web/httpd/conf/httpd.conf
修改 ServerName 为 127.0.0.1:80

———————————————- 以下是PHP

http://cn2.php.net/distributions/php-5.6.4.tar.bz2
tar -xvf  php-5.6.4.tar.bz2
cd php-5.6.4
yum install libxml2-devel gd-devel libmcrypt-devel libcurl-devel openssl-devel
./configure --prefix=/web/php --with-apxs2=/web/httpd/bin/apxs --enable-cli --enable-shared --with-libxml-dir --with-gd --with-openssl --enable-mbstring --with-mcrypt --with-mysqli --with-mysql --enable-opcache --enable-mysqlnd --enable-zip --with-zlib-dir --with-pdo-mysql --with-jpeg-dir --with-freetype-dir --with-curl --without-pdo-sqlite --without-sqlite3
make
make install
cp php.ini-development /web/php/lib/php.ini

vim /web/php/lib/php.ini
查找 date.timezone,修改为Asia/Shanghai

vim /web/httpd/conf/httpd.conf
查找 AddType application/x-gzip .gz .tgz
在下一行添加:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps


查找DirectoryIndex index.html
在下一行添加
index.php

最后是修改httpd.conf的httpdocs目录,以及支持.htaccess。就不写了。

—————————————————–以下是MYSQL
安装yum install mysql mysql-server


启动 service mysqld start


配置 /usr/bin/mysql_secure_installation


开机启动 chkconfig mysqld on


登录数据库

mysql -p

开启root远程访问

grant all privileges on *.* to 'root'@'%' identified by 'xinyangwu' with grant option;

FLUSH PRIVILEGES;