佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 942|回复: 13

这是什么问题?

[复制链接]
发表于 13-5-2007 11:25 PM | 显示全部楼层 |阅读模式
我想写一个login的程序,

<?php virtual('/school/smm/Connections/smm.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['login'])) {
  $loginUsername=$_POST['login'];
  $password=$_POST['pass'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "test5.php";
  $MM_redirectLoginFailed = "test.php";
  $MM_redirecttoReferrer = true;
  mysql_select_db($database_smm, $smm);
  
  $LoginRS__query=sprintf("SELECT login, pass FROM Tlogin WHERE login='%s' AND pass='%s'",
    get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
   
  $LoginRS = mysql_query($LoginRS__query, $smm) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
   
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;         

    if (isset($_SESSION['PrevUrl']) && true) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];   
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" c />
<title>Untitled Document</title>
</head>


<form>


<body>
<form id="form1" name="form1" method="POST" action="<?php echo $loginFormAction; ?>">
  <label></label>
  <input name="login" type="text" />
  <input type="text" name="pass" />
  <label>
  <input type="submit" name="Submit" value="Submit" />
  </label>
</form>
</body>
</html>

可是当我用IE游览的时候却出现。。

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent in /home/fuqicm/domains/fuqi.com.my/public_html/school/smm/login.php on line 14

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/fuqicm/domains/fuqi.com.my/public_html/school/smm/login.php:14) in /home/fuqicm/domains/fuqi.com.my/public_html/school/smm/login.php on line 544503152

请问是什么问题,要怎样解决?谢谢大家!
回复

使用道具 举报


ADVERTISEMENT

发表于 14-5-2007 03:17 PM | 显示全部楼层

回复 #1 kbchong 的帖子

session_start 之前不可以有任何output

<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start
}
virtual('/school/smm/Connections/smm.php');

.........

改成这样看行不行,很久没动php,希望可以帮到你

[ 本帖最后由 ikanyuchiew 于 14-5-2007 03:19 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 14-5-2007 06:21 PM | 显示全部楼层

回复 #2 ikanyuchiew 的帖子

问题解决,但是不能SUBMIT、。。。。
按了SUBMIT没有作用!!!
回复

使用道具 举报

发表于 14-5-2007 06:50 PM | 显示全部楼层
确定 submit后,program有执行在以下这condition内吗?

if (isset($_POST['login'])) {

回复

使用道具 举报

 楼主| 发表于 14-5-2007 07:04 PM | 显示全部楼层

回复 #4 ikanyuchiew 的帖子

没用,看看哪里出错了!!
能不能帮我。。。写一个比较基本的。。谢谢!!
回复

使用道具 举报

发表于 14-5-2007 07:21 PM | 显示全部楼层
去google找找吧,用keyword "simple php login script"搜索
回复

使用道具 举报

Follow Us
 楼主| 发表于 14-5-2007 08:29 PM | 显示全部楼层

回复 #6 ikanyuchiew 的帖子

Warning: session_register() [function.session-register]: Cannot send session cookie - headers already sent by (output started at /home/.................smm/checklogin.php:9) in /home............checklogin.php on line 33

请问这是什么意思,要怎样修改?
谢谢!!
回复

使用道具 举报

发表于 14-5-2007 08:46 PM | 显示全部楼层

回复 #7 kbchong 的帖子

将checklogin.php的source放出来,因为要看你的session_register怎么放。。。尤其是line 9

session_register已经不鼓励用了吧 ...

建议你找更好的source code来参考
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 14-5-2007 08:52 PM | 显示全部楼层

回复 #8 ikanyuchiew 的帖子

能给点建议吗?
<?php
$host="localhost"; // Host name
$username="123"; // Mysql username
$password="12342"; // Mysql password
$db_name="db"; // Database name
$tbl_name="members"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from signup form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
//header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
?>
</body>
</html>

还有什么更好的方法写login呢?
谢谢!!
回复

使用道具 举报

发表于 14-5-2007 09:15 PM | 显示全部楼层
</body>
</html>

最后两行为什么是关的?难道最上面还有<html><body>开的tag???如果是有的话,session_register就不能走了

其实你已经懂写了啊,只是没有做encryption还有SQL injection ...

你的code应该没有问题
回复

使用道具 举报

 楼主| 发表于 14-5-2007 09:25 PM | 显示全部楼层

回复 #10 ikanyuchiew 的帖子

请问要怎样做encryption还有SQL injection ...
回复

使用道具 举报

 楼主| 发表于 14-5-2007 09:34 PM | 显示全部楼层

回复 #10 ikanyuchiew 的帖子

</body>
</html>

最后两行为什么是关的?难道最上面还有<html><body>开的tag???如果是有的话,session_register就不能走了

请问这个要怎样解决?
回复

使用道具 举报

发表于 15-5-2007 08:17 AM | 显示全部楼层
</body>
</html>

最后两行为什么是关的?难道最上面还有<html><body>开的tag???如果是有的话,session_register就不能走了

请问这个要怎样解决?


意思是你有这么放?
直接这样解决

<?php

?>
<html>
  <body>
  </body>
</html>


.......................................................

encryption,
如果你用<= php4,可以选择md5();
php5,可以选择 sha1()
自己到这里搜索吧 http://www.php.net/quickref.php

当register时,你就要encrypt用户的password,然后save进database..

当login时,就encrypt当前的password然后和database内已经encrypted 过的password做比较

..........................................................

至于防sql injection,你之前的code就有做防范工作了

  $LoginRS__query=sprintf("SELECT login, pass FROM Tlogin WHERE login='%s' AND pass='%s'",
    get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));


当中不明白的function,就请到 http://www.php.net/quickref.php 里了解吧
回复

使用道具 举报

 楼主| 发表于 15-5-2007 05:58 PM | 显示全部楼层

回复 #13 ikanyuchiew 的帖子

谢谢,我已成功啦。。。谢谢大家的帮忙!!!
我看我还要继续努力。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 25-9-2025 08:23 PM , Processed in 0.141049 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表