热搜:NVER node 开发 php

如何实现“当名字在数据库中不存在时,转到错误页面。”?

2024-09-07 15:00:01
如何实现“当名字在数据库中不存在时,转到错误页面。”?

各位朋友:这段代码是“查询密码第一步:输入会员名”,想实现的效果:当名字在数据库中不存在时,转到错误页面。
我这个代码老是出现:Warning: Cannot modify header information - headers already sent by (output started at F:\PHPSites\member\getpwd1-1.php:23) in F:\PHPSites\member\getpwd1-1.php on line 36
应该怎么改呢?非常感谢了!

<?php$totalRows_rsMember = 0;?><?php require_once('Connections/member.php'); ?><?php$colname_rsMember = "-1";if (isset($_POST['txtusername'])) {  $colname_rsMember = (get_magic_quotes_gpc()) ? $_POST['txtusername'] : addslashes($_POST['txtusername']);}mysql_select_db($database_member, $member);$query_rsMember = sprintf("SELECT username FROM members WHERE username = '%s'", $colname_rsMember);$rsMember = mysql_query($query_rsMember, $member) or die(mysql_error());$row_rsMember = mysql_fetch_assoc($rsMember);$totalRows_rsMember = mysql_num_rows($rsMember);?>无标题文档<?php include('menu.php'); ?><?phpif ($totalRows_rsMember == 0) {  header ( "Location: message-1.php?error=3" );  exit;}?>
第一步:输入会员名
用户名:
<?phpmysql_free_result($rsMember);?>


回复讨论(解决方案)

在 getpwd1-1.php 的 23 行处有输出
导致 header ( "Location: message-1.php?error=3" ); 出错

先检查那个输出是否确实必要?是否能调整到别处
实在不行的话,可在 require_once('Connections/member.php'); 前加上
ob_start();
来回避

在 getpwd1-1.php 的 23 行处有输出
导致 header ( "Location: message-1.php?error=3" ); 出错

先检查那个输出是否确实必要?是否能调整到别处
实在不行的话,可在 require_once('Connections/member.php'); 前加上
ob_start();
来回避
……

版主大人:我贴上来的就是getpwd1-1.php中的所有代码,具体要怎么调整?
如果在 require_once('Connections/member.php'); 前加上ob_start();的话,就直接转到错误页面了,而不是“输入不存在的用户名再转到错误页面”了。请指点,非常感谢!

粗心了没核实文件名
把 16 到 33 行(含33行)的内容移到 39 行的后面

另外 10 到 14 行的内容应当在 7 行的条件分支里

粗心了没核实文件名
把 16 到 33 行(含33行)的内容移到 39 行的后面

另外 10 到 14 行的内容应当在 7 行的条件分支里

版主大人:我照着您指点的改了,如下,但还是直接就转到错误页面啊!

<?php$totalRows_rsMember = 0;?><?php require_once('Connections/member.php'); ?><?php$colname_rsMember = "-1";if (isset($_POST['txtusername'])) {  $colname_rsMember = (get_magic_quotes_gpc()) ? $_POST['txtusername'] : addslashes($_POST['txtusername']);  mysql_select_db($database_member, $member);$query_rsMember = sprintf("SELECT username FROM members WHERE username = '%s'", $colname_rsMember);$rsMember = mysql_query($query_rsMember, $member) or die(mysql_error());$row_rsMember = mysql_fetch_assoc($rsMember);$totalRows_rsMember = mysql_num_rows($rsMember);}?><?phpif ($totalRows_rsMember == 0) {  header ( "Location: message-1.php?error=3" );  exit;}?>无标题文档<?php include('menu.php'); ?>
第一步:输入会员名
用户名:
<?phpmysql_free_result($rsMember);?>

5 到 21 行改成

<?php$colname_rsMember = "-1";if (isset($_POST['txtusername'])) {  $colname_rsMember = (get_magic_quotes_gpc()) ? $_POST['txtusername'] : addslashes($_POST['txtusername']);  mysql_select_db($database_member, $member);  $query_rsMember = sprintf("SELECT username FROM members WHERE username = '%s'", $colname_rsMember);  $rsMember = mysql_query($query_rsMember, $member) or die(mysql_error());  $row_rsMember = mysql_fetch_assoc($rsMember);  $totalRows_rsMember = mysql_num_rows($rsMember);  if ($totalRows_rsMember == 0) {    header ( "Location: message-1.php?error=3" );    exit;  }}?>
自己想一下,问什么要这样写?

5 到 21 行改成
PHP code?123456789101112131415<?php $colname_rsMember = "-1";if (isset($_POST['txtusername'])) { $colname_rsMember = (get_magic_quotes_gpc()) ? $_POST['txtusername'] : addslas……

原来可以这样,终于把这个逻辑理清楚了,多谢版主大人!