让Discuz!论坛任意ID可以重复投票

2008年11月28日 23:49 . 分类 网络相关 . 7 条评论 . 被踩 302 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

很多时候我们需要让一个投票帖子可以重复投票,例如我们只想让一个ID一天投一票而不是限制一个ID只能投一票的时候,就需要清空那个投票帖的已投票ID,使其可以重复投票。

这个工作我们当然是利用强大的SQL语句了:

update 表前缀_polloptions set voterids='' where tid=投票帖ID

只要在SQL查询器里输入以上命令,就可以清空某个投票帖的已投票ID。

那么我们想达到一天投一票的效果怎么办呢?简单,配合使用计划任务就可以了~

1、在discuz目录下的include/crons/里添加一个php文件,我们命名为resetVoters.php

2、在resetVoters.php里写入以下语句,我们使用db类

<?php
$db->query("update 表前缀_polloptions set voterids='' where tid=投票帖ID");
?>

其中的表前缀和投票帖ID请自行修改。

3、在discuz后台的计划任务中添加resetVoters.php,并设置每天0点执行。

4、完成!

遇到不会读的字怎么办?

2008年11月26日 17:31 . 分类 网络相关 . 6 条评论 . 被踩 418 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

我们经常会在网上或者文件里遇到一些不会读的字,那么怎么办呢?今天SLYAR给大家提供二种解决方法:

1、让百度来帮我们识字。如果你不会读的字只有一个,那么很简单,只要把这个字复制到百度的搜索框里,按下搜索,百度就会告诉你这个字怎么读啦,你还可以更加详细地知道关于这个字的一切,很简单吧!

2、使用Word的"拼音指南"。如果你不认识的字有很多,那么用百度一个一个字查会很麻烦,这里我们就可以使用第二种方法了。将你不认识的字复制到Word里面,然后用鼠标点击"格式-->中文版式-->拼音指南",在弹出的窗口中就会有这些字词的拼音了,还有音调~更简单吧?

当然,点击确定你就可以在Word中插入这些字和这些字的拼音,这就是word中插入拼音的方法!

使用puts()截断输出字符串

2008年11月20日 22:07 . 分类 编程相关 . 1 条评论 . 被踩 446 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

有时候我们需要截断输出字符串,比如只输出前面某几个字符或者后面某几个字符,这就是我今天要说的。

在说方法之前我们需要了解一下puts函数:

Writes the C string pointed by str to stdout and appends a newline character ('\n').
The function begins copying from the address specified (str) until it reaches the terminating null character ('\0'). This final null-character is not copied to stdout.

下面介绍方法。

只输出前面某几个字符:

#include <stdio.h>
int main(){
int m,n,i,len;
char s[20]="www.slyar.com";
s[9]=0;
puts(s);
return 0;
}

运行后可以看到,输出了前8个字符,第9个以后的字符被截断了。关键句 s[9]=0; 本来应该是s[9]='\0',但s是字符串型,所以当把0赋给s[9]的时候,程序会把0的ascii码赋给s[9],也就是NUL(空),所以字符串被截断。

只输出后面某几个字符:

#include <stdio.h>
int main(){
int m,n,i,len;
char s[20]="www.slyar.com";
puts(s+4);
return 0;
}

运行后可以看到,输出了后10个字符,而前4个字符被截断了。关键句puts(s+4),我们知道字符数组的名字就是这个数组的内存首地址,所以s+4相当于首地址向后移动了4位,所以程序会忽略前4位字符而从第5位开始输出。

使用memset函数初始化数组

2008年11月18日 22:48 . 分类 编程相关 . 2 条评论 . 被踩 519 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

初级介绍,大牛请飘过。。。

在初始化数组尤其是需要每次都初始化的时候,很多同学使用循环来进行,这样不但速度慢,而且写起来也很长。所以现在提供一个函数来实现这个功能。。。

原型:extern void *memset(void *buffer, int c, int count);

功能:把buffer所指内存区域的前count个字节设置成字符c。

包含头文件:<string.h>

注意这个函数是字符串函数,所以一定要包含字符串头文件。

使用方法:

int a[50];

memset(a,0,sizeof(a));

这样呢,就将数组a内所有的值都赋成0了,sizeof也是一个函数,得到数组a的字节大小。

另外需要注意的是,memset函数是逐字节进行填充,所以a一般为char *型。对于其它类型的a,可以填充的值有两个,0和-1。因为计算机中用二进制补码表示数字,0和二进制补码为全0,-1的二进制补码为全1。

C语言 读入字符时需要注意的一个问题

2008年11月16日 23:21 . 分类 编程相关 . 3 条评论 . 被踩 523 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

今天做题时候遇到的问题,先看一段代码:

#include <stdio.h>
int main(){
int n;
char a;
scanf("%d",&n);
scanf("%c",&a);
printf("%c\n",a);
return 0;
}

我们希望先读入一个整数n,然后再读入一个字符a,最后输出字符a。但是经过测试我们发现上面这段代码是无法实现我们的要求的,它只会输出一个空行,这是为什么呢?

我们一步一步分析,当我们输入数字n以后,会按一个回车确认输入。我们知道换行符也是字符(\n),所以这个换行符也同样进入了等待读入字符的a,因此我们输出的a就是一个换行符。。。

那么怎么解决呢?很简单,只要我们使用getchar()函数忽略这个换行符就可以了,最后的代码如下:

#include <stdio.h>
int main(){
int n;
char a;
scanf("%d",&n);
getchar();
scanf("%c",&a);
printf("%c\n",a);
return 0;
}

今天做题的时候不止一次遇到这个问题,特地写出来。

PHP爆绝对路径的另类方法

2008年11月13日 23:58 . 分类 网络相关 . 7 条评论 . 被踩 433 次 

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

今天有人留言问我关于php爆绝对路径的事,这其实是个很古老的问题,网上也有很多解法。除了利用漏洞爆绝对路径外,我们最常见的方法就是利用php的最大执行时间来爆出绝对路径。

自己手工设置过php的人都知道,在php.ini里有一条语句"max_execution_time",这个就是php的最大执行时间。如果某个php页面在这个时间内没有执行完毕,就会报错,而php报错的话一般都会将绝对路径爆出来。php之所以有这样的设置是为了减小服务器的负担,但同时也给了黑客可乘之机。

问我的人他知道这个原理,所以他使用了DOS方式,打算使目标网站的速度减慢,从而爆出路径。但在操作的过程中发现目标网站的防DOS系统做得很好,因此他不能成功获取绝对路径,那么怎么办呢?

解决方法其实也很简单,既然我们不能减慢目标网站的速度,那我们就想办法减慢自己的速度,这样达到的效果是一样的。那么怎么减慢我们自己的速度呢?也很简单,只要我们找一个速度极慢的代理,挂上以后再上目标网站,就有可能将绝对路径爆出来。

关闭
E-mail It