doushe2513 2011-07-06 04:59
浏览 61

我在php中得到一个空白页面[关闭]

I'm trying to create a PHP e-mail activation system for my users, and when I run my script, it returns a blank page and my database was not updated. Any help is appreciated.

Here is my code:

<?php

session_start()

$host="localhost"; 
$username="root"; 
$password="power1"; 
$db_name="members"; 
$tbl_name="users";

$link  = mysql_connect($host, $username, $password)or die("cannot connect. Please contact us");
mysql_select_db($db_name)or die("cannot select DB. Please contact us");

$queryString = $_SERVER['QUERY_STRING'];

if(isset($_SESSION[$queryString])) {
  $query = "SELECT * 
              FROM users 
             WHERE email = '$_SESSION[$queryString]'";
  $result = mysql_query($query) or die(mysql_error());
  while($row = mysql_fetch_array($result)) {
    if ($queryString == $row[activationkey]) {
      echo "Congratulations! You have succesfully activated you account. You may now login.";

      $sql = ("UPDATE users 
                 SET activationkey = '' 
                 AND status = 'activated' 
               WHERE username = ".$row['username']);

      if (!mysql_query($sql)) {
        die('Error: ' . mysql_error());
      }
    }
  }
} ?>
  • 写回答

6条回答 默认 最新

  • dswsl2016 2011-07-06 05:01
    关注

    In your code, activationkey is an uninitialized constant. You probably meant it to be a string.

    Change this line:

    if ($queryString == $row[activationkey]){
    

    to this:

    if ($queryString == $row['activationkey']){
    

    And since you are accessing the elements of $row via string indexes, rather than numeric ones, you'll also want to change:

    while($row = mysql_fetch_array($result)){
    

    to:

    while($row = mysql_fetch_assoc($result)){
    

    Also, since you are accessing a session, you probably want to call session_start() before the first reference to $_SESSION.

    And finally, your code may be sending a malformed query to the database. Try changing this line:

    $query = "SELECT * FROM users WHERE email='$_SESSION[$queryString]'";
    

    to this:

    $query = "SELECT * FROM users WHERE email='" . mysql_real_escape_string($_SESSION[$queryString]) . "'";
    
    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀