PHP 板


LINE

看板 PHP  RSS
各位好,不知道这个标题下得好不好 但是,我大概先叙述一下我的程式要做甚麽,以及碰到的问题 ============================= 这是一个可以浏览并且播放音乐的网站 网页端的PHP程式会先去找档案清单(实际上是一个文字档),内有档名和连结 当然,也有可能还会有子资料夹 而当发现是一个音乐(MP3)档时,会要求要开在新视窗,否则就在原视窗开启就好 光看上面的说明可能不太清楚,所以下面附上Input档案范例 (但是实际档案内容不包含後面的注解) Input档案范例一: Songs // 这是音乐清单的开头指标 第一首歌 play.php?file=music1 第二首歌 play.php?file=music2 End_List // 清单结尾标示 //Input至此结束,不含换行 小说明:play.php是播放器页面,必须开在新视窗 而Output必须是:(以HTML原始码呈现) <a href = play.php?file=music1 target="_blank">第一首歌</a> <a href = play.php?file=music2 target="_blank">第二首歌</a> Input范例二: Folder // 资料夹清单开头指标 第一个资料夹 list.php?list=2 // list.php就是这个网页自己,他会列出一张档案与资料夹的清单 End_List Songs 第一首歌 play.php?file=music1 End_List //Input至此结束,不含换行 Output必须是: <a href = list.php?list=2 >第一个资料夹</a> <a href = play.php?file=music1 target="_blank">第一首歌</a> ================================================= 以下是负责判断清单类别,并且印出需要的HTML code的程式部分: <? $fp = fopen( "db/list_".$_GET['mid'].".txt", "r+" ) ; $temp = fgets( $fp ) ; // 取得第一张清单的类型 if ( strcmp($temp, "Folder") == 0 ) { // 发现子资料夹清单 echo( "请选择一项类别继续浏览:<br>" ); $linkname = fgets( $fp ) ; // 读进第一位 while( strcmp( $linkname, "End_List" ) != 0 ) { // 清单还没结束就一直读 $link = fgets( $fp ) ; ?> <a href = "<? echo($link) ; ?>&title=<? echo($linkname) ; ?>" ><? echo($linkname) ; ?></a><br> <? $linkname = fgets( $fp ) ; // 下一位! } // while $temp = fgets( $fp ) ; // 既然有资料夹清单,那有歌曲的清单吗? if ( strcmp($temp, "Songs" ) == 0 ) { // 有歌曲清单耶! echo( "或者,选择一首歌曲播放:<br>" ); $linkname = fgets( $fp ) ; // 读进第一位 while( strcmp( $linkname, "End_List" ) != 0 ) { // 清单还没结束就一直读 $link = fgets( $fp ) ; ?> <a href = "<? echo($link) ; ?>&title=<? echo($linkname) ; ?>" target="_blank"><? echo($linkname) ; ?></a><br> <? $linkname = fgets( $fp ) ; // 下一位! } // while } // if 有歌单 } // if 有资料夹&歌单 else if ( strlen($temp) == 10 ) { // 只发现歌曲清单 echo( "请选择一首歌曲播放:" ); $linkname = fgets( $fp ) ; // 读进第一位 while( strcmp( $linkname, "End_List" ) != 0 ) { // 清单还没结束就一直读 $link = fgets( $fp ) ; ?> <a href = "<? echo($link) ; ?>&title=<? echo($linkname) ; ?>" target="_blank"><? echo($linkname) ; ?></a><br> <? $linkname = fgets( $fp ) ; // 下一位! } // while } // else if // 歌单处理结束 } // if else { echo("<center>本区域测试中,尚未开放,敬请拭目以待</center>") ; } // else ?> ===================================================== 这程式的回圈都会work,strcmp基本上也都没有问题 但是很奇怪的是,只要从档案读出来,Songs长度会变成10(不是应该是5吗?) 而Folder这个字串的长度则会变成12(不是应该是6吗?) 所以造成无法进入回圈,想当然尔,网页上就是空白一片了 本来想说是不是有藏什麽字元,於是有尝试加上trim()函式,但是结果一样... 有任何人可以帮忙解答吗?感激不尽! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.250.127.134
1F:推 LPH66:检查输入档的编码 照叙述看似乎是 UTF-16... 02/07 17:24
2F:推 s25g5d4:直接读档名开档喔 感觉就超危险的阿 02/07 17:58
3F:推 alog:开档案前先做escape,不然你那个$_GET可以恶搞 02/07 18:00
不好意思,复制code的时候少复制一行: if ( file_exists( "db/list_".$_GET['mid'].".txt" ) ) { 所以~这是有做前置处里的(只要找不到档案就显示一组讯息,并且不会继续执行) 抱歉造成各位误会~
4F:推 alog:另外资料的交换都统一使用UTF-8 这比较不易出问题 02/07 18:02
6F:推 alog:音乐歌曲易有日韩简体,建议用mbstring 来处理字串 02/07 18:04
※ 编辑: jh961202 来自: 111.250.127.134 (02/08 00:31)
7F:→ alog:filename 基本上要 escape / \ . 这三个字元 02/08 02:23
8F:→ alog:建议养成习惯,不要把 $_GET or $_POST 之类的参数 02/08 02:26
9F:→ alog:直接用在 function 上 02/08 02:26
10F:→ alog:你可以这样 music_filename = 跳脱("{$music_id}.txt"); 02/08 02:27
11F:→ alog:不仅好读、好维护,之後要修正也比较好替换 02/08 02:28
不管置换成哪一种编码方式都没有用... (网页本身是UTF-8,确定每一个文件也都是UTF-8,甚至还试过ANSI...) 另外,范例中的Songs长度不是显示10,而是7 (多两个字元,到底是谁啊OAO) 而Folder换成Subfolder会变成13个字元... (竟然多了4个字元...完全没有规律阿0.0) ※ 编辑: jh961202 来自: 111.250.127.134 (02/08 20:18)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP