作者:mobiledu2502886233 | 来源:互联网 | 2024-11-10 03:11
该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。
是一个大学的网站(Php+MySQL),在校园内部可以免费访问一些外部的收费资料数据库,现在希望让学生在校外通过登陆学校的网站来免费访问这些收费的资料数据库,请问是否有解决方案。我觉得可以通过学校的服务器发送请求给校外数据库,然后再由学校的服务器将结果原封不动的发送给客户端,但是1)不知道这个方案是否可行;2)即使可行,也不知道应该如何实现。
恳请各位大虾帮助,谢谢!
19 个解决方案
我们学校用的vpn
51cto的vpn介绍
http://netsecurity.51cto.com/art/200712/63094.htm
vpn确实可行,服务器请求也可行
你可以在你的网站上加入链接,链接形式如:
http://www.yoursite.com/redirect.php?url=http://www.校园网xxxx.com/
将学生要访问的链接作为参数传给你的php,再由你的php文件访问对应网址,将内容然后echo给学生.
为安全起见,最好将"http://www.校园网xxxx.com/"这部分编码
为执行效率起见,最好将常访问的东西做一个缓存,否则很慢
php可以通过fopen函数让服务器访问其他http资源:
$handle = fopen("http://www.example.com/", "r");
多谢joycheney兄,你说的极是,是不是可以用SESSION来进行身份的认证,然后决定是不是有权限去访问站点,如果有,就用FOPEN函数将资源读取在服务器中,然后再ECHO进网页发送回客户端。
也谢谢justicesun兄,你的建议也很好的。赫赫
还有就是因为资源网站是主要用来查询资料的,所以有一些查询的请求,如果只是简单的ECHO的话,那么这些请求应该会直接递交到资源网站,这样的话应该是依然没有可能获得想要的资料的,这个又该如何处理呢?
几天没上网,是这样的,echo之前你可以先做正则替换的,把
http://www.校园网xxxx.com/
这部分替换成:
http://www.yoursite.com/redirect.php?url=http://www.校园网xxxx.com/
这样的话,比如
http://www.校园网xxxx.com/1.jpg
就变成了
http://www.yoursite.com/redirect.php?url=http://www.校园网xxxx.com/1.jpg
或者,你可以在php里面加上判断,对html或者别的什么格式才做正则替换。
对于正则替换,还请自己上网看看正则表达式怎么写,仔细学半个小时就能看懂
第二个问题,是否要在服务器段所取得的Form重定位,这么说吧,很多时候你只能代替用户登陆的,请到
http://snoopy.sourceforge.net/
下载一个人家封装好的php类库,看看能不能帮上你
这个问题比较复杂 。如果是交互性比较强的站点用php网页代理的形势还是不行的。
需要考虑很多方面的情况: 访问用户的限制,访问网站的限制,目标站点的命名空间问题(这个不好解决)
建议考虑反向代理来解决这类问题。有收费的,有免费的
反向代理需要用户物理上能够访问校内的网站吧,但是校园网和外网通常是物理上独立分割的
不过也确实如8楼所说的,如果交互性过强,php网页代理还是很成问题
joycheney兄,看这样是不是可以:
先是用户登录校园网站,通过验证后再给与访问资源的权限,然后用FOPEN得到目标文件,在服务器上对所有的链接作正则替换,然后再传送给客户端。
另,我在网上搜索了一下,看见有些人是用file_get_contents来做的,不知道和FOPEN有什么区别?
也多谢CHENHI23兄的指点!
你想让学生在校外也可以登录到原本只能在校园网能看到的收费信息?
没理解清楚。首要问题是 那些收费数据 是不是你们控制的?
反向代理不需要用户物理上能够访问目标网站。
用户需要能访问登录的网站,然后代理的服务器可以访问目标站点就可以。
也就是说即便目标站点是192的内网地址,只要代理服务器能访问,外部用户就可以看到。
另外url替换也是php正则替换有时无法解决的问题。 php正则替换之解决了数据包的替换,无法对header头信息进行替换。
COOKIEs等替换也无法解决
回ashchen,是一些资料网站,类似于万方的数据库,一般在校外是要付费才可以查阅其中的资料的,现在希望学生在校外,只要凭学生账号登陆学校的网站,就可以像在学校内一样的免费查询。收费数据不是我们控制,只是可以免费的在校园网内访问!
那还是在校内建个socket5代理,支持数据库管理用户名密码使用时间那种,用防火墙控制目标网站列表
如果如chenji23所说,反向代理不需要物理链接,你试下反向代理吧
之前我没有用过反向代理,还是chenji23指点有效
参考
http://www.java-asp.net/software/0412/106924576.shtml
反向代理我看过介绍了,需要在浏览器里面重新设置代理访问互联网的代理的,这个不时很符合这个项目的要求的。
昨天看了一些文章,觉得还是用FOPEN打开地址文件,然后用FGETS获得数据,然后通过字符串函数找到链接地址并修改。
但是新的问题有来了,有一些是伴随网页打开的图片,音乐甚至是视频应该如何处理呢?
看了一下joycheney兄给的网站,又找了SQUID的指南看了一下,觉得反向代理还是比较适用的,但是用户认证和地址解析还有一点问题。
继续努力!大家有好主意也请不吝赐教!谢谢!
几乎明白了,准备用SQUID作反向代理服务器,再结合MySQL做访问认证。
现在就是想怎样先通过一个浏览器界面让用户登录了,我再想想:)
把客户端的IP地址取出来比较一下就可以了嘛.内网和外网的IP规则是有区别的