免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2852 | 回复: 11
打印 上一主题 下一主题

怎样把用户登陆表单和验证码结合起来? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-28 10:54 |只看该作者 |倒序浏览
<?php
//Filename:authpage.php

srand((double)microtime()*1000000);

//验证用户输入是否和验证码一致
  $db_id = mysql_pconnect("localhost", "root", "");
  $sql="select id, user, passwd from user where user='".$_POST['user']."' and passwd='".$_POST['pass']."'";
  $result = mysql_db_query("mydb",$sql);
  $row = mysql_fetch_array($result);
  $id = $row[id] ;

  if ($id!="") {
    session_start();
    session_register("yn");
    $yn="yes"  ;
    echo "<html><body>";
    echo "你已经成功登陆。。。"."<p>";
    echo "</body></html>";

  }
  else {
  echo "帐号或密码错误!!!";
  echo "<P>";
  echo "<center>";
  echo "<a href=\"#\" onclick=\"javascript:back()\">back</a>";
  echo "</center>" ;
  }


if(isset($HTTP_POST_VARS['authinput']))
  {
    if(strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput'])==0)
      echo "验证成功!";
    else
      echo "验证失败!";
  }

//生成新的四位整数验证码
$array="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

for($i=0;$i<4;$i++)
  {
  $authnum .=substr($array,rand(0,61),1);
  }
?>
<html>
  <head>
    <title>用户登录</title>
  </head>
<body>
<form action="authpage.php" method="post">
    用户名:<input type="text" name="user" style="width: 80px" />
    密码:<input type="text" name="pass" style="width: 80px" />
    验证码:<input type="text" name="authinput" style="width: 80px" />
    <input type="hidden" name="authnum" value="<? echo $authnum; ?>" />
    <img src="authimg.php?authnum=<? echo $authnum; ?>" />
    <input type="submit" name="验证" value="登陆" />
</form>
</body>
</html>

我正在尝试做一个用户登陆的网页,以上代码输入正确的用户名和密码,mysql方面一切正常;只输入验证码,php验证方面也正常。
请问:如何改写以上代码,让已注册用户需要同时输入正确的用户名,密码,验证码才能登陆?

论坛徽章:
0
2 [报告]
发表于 2006-03-28 10:55 |只看该作者
目前的大概样子见附件的图片

auth.JPG (5.09 KB, 下载次数: 48)

验证码表单

验证码表单

论坛徽章:
0
3 [报告]
发表于 2006-03-28 11:25 |只看该作者
不明白 你就在一个页面验证贝
有什么问题么

论坛徽章:
0
4 [报告]
发表于 2006-03-28 11:35 |只看该作者
我就是想在一个页面进行认证啊!
如果输入 正确的用户名,密码,验证码 就可以登陆并转到其他的页面(session);
如果没有输入任何信息,或者 用户名,密码或验证码有一个不对就输出登陆表单,让用户重新填写。

以上代码的问题是:
只输入 用户名和密码(不输入验证码),就可以登陆。同样,只输入验证码(不输入用户名和密码)也可以登陆。

请问:该怎么改写?谢了先~~~~~~

论坛徽章:
0
5 [报告]
发表于 2006-03-28 12:29 |只看该作者
你得代码中没有判断验证码的部分吧。

论坛徽章:
0
6 [报告]
发表于 2006-03-28 22:49 |只看该作者
修改了一下代码,现在必须同时输入正确的 用户名、密码、验证码 才能登陆。
但是现在发现一个问题:登陆后,$SESSION 居然是空的。

<?php
//Filename:authpage.php
srand((double)microtime()*1000000);

//生成新的四位整数验证码
$array="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

for($i=0;$i<4;$i++)
  {
  $authnum .=substr($array,rand(0,61),1);
  }

//验证用户输入是否和验证码一致
if ($_POST['user']=="" && $_POST['pass']=="" && !isset($HTTP_POST_VARS['authinput']))
{
?>
<form action="authpage.php" method="post">
user:<input type="text" name="user"><br>
pass:<input type="text" name="pass"><br>
auth:<input type="text" name="authinput" style="width: 80px" />
<input type="hidden" name="authnum" value="<? echo $authnum; ?>" />
<img src="authimg.php?authnum=<? echo $authnum; ?>" />
<input type="submit" value="ok">
</form>
<?
}
else
{
if($_POST['user']!="abcd" || $_POST['pass']!="1234" || strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput'])!==0)
{
echo "Login Fail!";
}
else
{
session_start();
session_register("user");
session_register("pass");
$user=$_POST['user'];
$pass=$_POST['pass'];
echo "OK!<br><a href=\"next.php\">next page</a><br>";
echo "<pre>";
echo Print_R($_SESSION);
echo "</pre>";

}
}
?>

在浏览器中显示 见附图。

auth2.JPG (3.38 KB, 下载次数: 31)

auth2

auth2

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2006-03-29 00:02 |只看该作者
原帖由 nothing9 于 2006-3-28 22:49 发表
修改了一下代码,现在必须同时输入正确的 用户名、密码、验证码 才能登陆。
但是现在发现一个问题:登陆后,$SESSION 居然是空的。

<?php
//Filename:authpage.php
srand((double)microtime()*1000000); ...



先session输出在html输出看看

论坛徽章:
0
8 [报告]
发表于 2006-03-29 01:40 |只看该作者
不为空才怪呢

你用的php是什么版本阿?怎么还用一些老函数。

你通过手册看看session_id

论坛徽章:
0
9 [报告]
发表于 2006-03-29 09:08 |只看该作者
直接使用$_session["变量"] 看看

论坛徽章:
0
10 [报告]
发表于 2006-03-29 18:43 |只看该作者
我用的是 php 4.3 10,并设置了 global_register=off

其实我就是想做一个 2 楼附件那样简单而实用的用户登陆验证程序,输入正确的 用户名,密码和验证码 后,转到其他的页面。

请问:有现成的实例下载或关键代码供参考吗?谢谢楼上的各位!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP