Помогите с php пустой страницей? - PullRequest
1 голос
/ 03 мая 2009

Я управляю фэнтезийной баскетбольной лигой. Моя база данных php website / sql предназначена для того, чтобы человек, управляющий командой, мог делать все через сайт - он может отказаться от игрока, и игрок автоматически переходит в пул FA и т. Д.

Все отлично работало до недели назад. В любой момент, когда команда отправляется подписать игрока, после нажатия кнопки «Подписать» они получают пустую страницу PHP. Я понятия не имею, почему - я не внес никаких изменений в файлы. Это только начало происходить. Ниже приведен код пустой страницы PHP - может кто-нибудь помочь?

<?php

$username = "me";
$password = "mypassword";
$database = "mydatabase";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$Team_Offering = $_POST['Team_Name'];
$Fields_Counter = $_POST['counterfields'];
$Roster_Slots = $_POST['rosterslots'];
$Healthy_Roster_Slots = $_POST['healthyrosterslots'];
$Type_Of_Action = $_POST['Action'];

$queryt="SELECT * FROM nuke_ibl_team_info WHERE team_name = '$Team_Offering' ";
$resultt=mysql_query($queryt);

$teamid=mysql_result($resultt,0,"teamid");

$Timestamp = intval(time());


// ADD TEAM TOTAL SALARY FOR THIS YEAR

$querysalary="SELECT * FROM nuke_iblplyr WHERE teamname = '$Team_Offering' AND retired = 0 ";
$results=mysql_query($querysalary);
$num=mysql_numrows($results);
$z=0;

while($z < $num)
    {
        $cy=mysql_result($results,$z,"cy");
        $cyy = "cy$cy";
        $cy2=mysql_result($results,$z,"$cyy");
        $TotalSalary = $TotalSalary + $cy2;
        $z++;
    }

//ENT TEAM TOTAL SALARY FOR THIS YEAR

$k=0;
$Salary=0;

while ($k < $Fields_Counter)
{
$Type=$_POST['type'.$k];
$Salary=$_POST['cy'.$k];
$Index=$_POST['index'.$k];
$Check=$_POST['check'.$k];
$queryn="SELECT * FROM nuke_iblplyr WHERE pid = '$Index' ";
$resultn=mysql_query($queryn);
$playername=mysql_result($resultn,0,"name");
$players_team=mysql_result($resultn,0,"tid");

if ($Check == "on")
  {
  if ($Type_Of_Action == "drop")
    {
      if ($Roster_Slots < 4 and $TotalSalary > 7000)
        {

          echo "You have 12 players and are over $70 mill hard cap.  Therefore you can't drop a player! <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\">the main IBL page</a> in a moment.  If you are not redirected, click the link.";

        }else{

          $queryi = "UPDATE nuke_iblplyr SET `ordinal` = '1000', `droptime` = '$Timestamp' WHERE `pid` = '$Index' LIMIT 1;";
          $resulti=mysql_query($queryi);

          $topicid=32;
          $storytitle=$Team_Offering." make waiver cuts";
          $hometext="The ".$Team_Offering." cut ".$playername." to waivers.";

          // ==== PUT ANNOUNCEMENT INTO DATABASE ON NEWS PAGE 
          $timestamp=date('Y-m-d H:i:s',time());

          $querycat="SELECT * FROM nuke_stories_cat WHERE title = 'Waiver Pool Moves'";
          $resultcat=mysql_query($querycat);
          $WPMoves=mysql_result($resultcat,0,"counter");
          $catid=mysql_result($resultcat,0,"catid");

          $WPMoves=$WPMoves+1;

          $querycat2="UPDATE nuke_stories_cat SET counter = $WPMoves WHERE title = 'Waiver Pool Moves'";
          $resultcat2=mysql_query($querycat2);

          $querystor="INSERT INTO nuke_stories (catid,aid,title,time,hometext,topic,informant,counter,alanguage) VALUES ('$catid','Associated Press','$storytitle','$timestamp','$hometext','$topicid','Associated Press','0','english')";
          $resultstor=mysql_query($querystor); 
          echo "<html><head><title>Waiver Processing</title>
            </head>
            <body>
            Your waiver moves should now be processed.  <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\">the main IBL page</a> in a moment.  If you are not redirected, click the link.
            </body></html>";
        }

    } else {
      if ($players_team == $teamid)
        {
          $queryi = "UPDATE nuke_iblplyr SET `ordinal` = '800', `teamname` = '$Team_Offering', `tid` = '$teamid' WHERE `pid` = '$Index' LIMIT 1;";
          $resulti=mysql_query($queryi);
          $Roster_Slots++;

          $topicid=33;
          $storytitle=$Team_Offering." make waiver additions";
          $hometext="The ".$Team_Offering." sign ".$playername." from waivers.";

          // ==== PUT ANNOUNCEMENT INTO DATABASE ON NEWS PAGE 

          $timestamp=date('Y-m-d H:i:s',time());

          $querycat="SELECT * FROM nuke_stories_cat WHERE title = 'Waiver Pool Moves'";
          $resultcat=mysql_query($querycat);
          $WPMoves=mysql_result($resultcat,0,"counter");
          $catid=mysql_result($resultcat,0,"catid");

          $WPMoves=$WPMoves+1;

          $querycat2="UPDATE nuke_stories_cat SET counter = $WPMoves WHERE title = 'Waiver Pool Moves'";
          $resultcat2=mysql_query($querycat2);

          $querystor="INSERT INTO nuke_stories (catid,aid,title,time,hometext,topic,informant,counter,alanguage) VALUES ('$catid','Associated Press','$storytitle','$timestamp','$hometext','$topicid','Associated Press','0','english')";
          $resultstor=mysql_query($querystor); 
          echo "<html><head><title>Waiver Processing</title>
            </head>
            <body>
            Your waiver moves should now be processed.  <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\">the main IBL page</a> in a moment.  If you are not redirected, click the link.
            </body></html>";

        } else {

          if ($Healthy_Roster_Slots < 4 and $TotalSalary + $Salary > 7000)
          {

              echo "You have 12 or more healthy players and this signing will put you over $70.  Therefore you can not make this signing. <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\">the main IBL page</a> in a moment.  If you are not redirected, click the link.";

          } elseif ($Healthy_Roster_Slots > 3 and $TotalSalary + $Salary > 7000 and $Salary > 103) {

              echo "You are over the hard cap and therefore can only sign players who are making veteran minimum contract! <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\">the main IBL page</a> in a moment.  If you are not redirected, click the link.";

          } elseif ($Healthy_Roster_Slots < 1) {
              echo "You have full roster of 15 players.  You can't sign another player at this time! <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\">the main IBL page</a> in a moment.  If you are not redirected, click the link.";

          } else {

              $queryi = "UPDATE nuke_iblplyr SET `ordinal` = '800', `bird` = '0', `cy` = '1', `cy1` = '$Salary', `teamname` = '$Team_Offering', `tid` = '$teamid' WHERE `pid` = '$Index' LIMIT 1;";
              $resulti=mysql_query($queryi);
              $Roster_Slots++;

              $topicid=33;
              $storytitle=$Team_Offering." make waiver additions";
              $hometext="The ".$Team_Offering." sign ".$playername." from waivers.";

              // ==== PUT ANNOUNCEMENT INTO DATABASE ON NEWS PAGE 

              $timestamp=date('Y-m-d H:i:s',time());

              $querycat="SELECT * FROM nuke_stories_cat WHERE title = 'Waiver Pool Moves'";
              $resultcat=mysql_query($querycat);
              $WPMoves=mysql_result($resultcat,0,"counter");
              $catid=mysql_result($resultcat,0,"catid");

              $WPMoves=$WPMoves+1;

              $querycat2="UPDATE nuke_stories_cat SET counter = $WPMoves WHERE title = 'Waiver Pool Moves'";
              $resultcat2=mysql_query($querycat2);

              $querystor="INSERT INTO nuke_stories (catid,aid,title,time,hometext,topic,informant,counter,alanguage) VALUES ('$catid','Associated Press','$storytitle','$timestamp','$hometext','$topicid','Associated Press','0','english')";
              $resultstor=mysql_query($querystor); 
              echo "<html><head><title>Waiver Processing</title>
                </head>
                <body>
                Your waiver moves should now be processed.  <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\">the main IBL page</a> in a moment.  If you are not redirected, click the link.
                </body></html>";

            }
        }
    }
  }
$k++;
}

?>

Ответы [ 10 ]

11 голосов
/ 03 мая 2009

Сразу после открытого тега PHP поставьте следующее:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

Если это не сработает, возможно, есть ошибка разбора, а затем вам нужно будет проверить журнал ошибок.

Вам также потребуется экранировать значения, которые вы вводите в запросах. Это может привести к сбою запроса MySQL. Если кто-то вставит " в $ _POST ['Team_Name'], ваш первый запрос может завершиться неудачей.

Еще одна последняя возможная проблема: вы уверены, что он все еще может подключаться к MySQL?

Возможность найти проблему - это закомментировать большие порции кода, а затем закомментировать некомментированные сектоны.

Редактировать: Итак, вашей первой проблемой является строка mysql_connect. Это нужно изменить, обратите внимание на кавычки: mysql_connect('localhost',$username,$password); Кроме того, переменные $result и $queryt написаны неправильно в этой строке и используются в их правильном написании: $resultt=mysql_query($queryt); Остальные я не проверял, но могут быть другие ошибки, которые приведут к поломке вашего скрипта. Некоторые из списка ошибок важно исправить, но они не сломают ваш скрипт.

Выход из положения: откройте следующую страницу: http://php.net/manual/en/function.mysql-escape-string.php Это в основном не позволяет людям удалять всю вашу базу данных.

Проверьте пример кода на этой странице , чтобы узнать, как подключиться к MySQL, и проверить, подключены ли вы.

Еще одно предложение: Вы уверены, что ни один из ваших запросов не дал результатов? Вы, вероятно, хотите проверить, является ли результат запроса ложным, прежде чем продолжить, например:

if ($resultcat2 === false) {
    trigger_error('query failed ' . $sql, E_USER_ERROR);
    echo 'Sorry, there was a problem processing your request. Please try again later.';
    exit;
}
2 голосов
/ 03 мая 2009

Если вы не вносили никаких изменений в какие-либо файлы, и они просто «ломались», то это означало бы, что либо ваш веб-хост прошел через изменение конфигурации, ваша база данных каким-то образом подключена, либо кто-то другой мог что-то изменить.

Чтобы помочь определить виновника, после каждого из них

if{
else{
while{

или / и после каждых нескольких операторов (операторы заканчиваются точкой с запятой;) добавьте это к следующей строке

print "<br> made it to this label: some_unique_label_name_here";

Где вы должны каждый раз заменять метку, чтобы помочь вам отследить код. Это будет ваш первый шаг в отладке скрипта, чтобы выяснить, как далеко заходит выполнение кода.

2 голосов
/ 03 мая 2009

Добавлены комментарии к некоторым из вышеуказанных ответов. Пожалуйста, постарайтесь изо всех сил притупить меня - я чрезвычайно новичок в этом. Я не могу понять, почему он вдруг перестал работать, хотя я вообще не внес изменений в код.

2 голосов
/ 03 мая 2009

Включите отчеты об ошибках для PHP в вашем файле php.ini и посмотрите, нет ли ошибок или предупреждений. Также попробуйте удалить конечные пробелы в конце файла перед последним?>, Это вызывало у меня проблемы в прошлом.

0 голосов
/ 03 мая 2009

Так что обновление ... ничего. лол

Если вы просматриваете этот код:

$k=0;

$ Зарплата = 0;

печать "
сделал это на этой этикетке: some_unique_label_name_here";

while ($ k <$ Fields_Counter) </p>

{

$ Тип = $ _ POST [ 'типа' $ к.];

$ Зарплата = $ _ POST [ 'CY' $ к.];

$ Index = $ _ POST [ 'индекс' $ к.];

$ Check = $ _ POST [ 'проверить' $ к.];

$ queryn = "SELECT * FROM nuke_iblplyr WHERE pid = '$ Index'"; $ Resultn = mysql_query ($ queryn);

$ PlayerName = mysql_result ($ resultn, 0, "имя");

$ players_team = mysql_result ($ resultn, 0, "TID");

Если я покажу инструкцию print ниже, страница станет пустой и не будет отображаться. Если оператор print раньше времени, оператор появляется, но на странице не выполняется никаких действий. Конечный результат заключается в том, что при запуске этой страницы игрок, выбранный на предыдущей странице, должен быть удален из Free Agents, добавлен в команду пользователя, а история должна быть размещена на первой странице, объявляющей об этом. Очевидно, ничего из этого здесь не происходит.

0 голосов
/ 03 мая 2009

Кроме того, вы должны изменить каждую переменную из get или post, например:

$Team_Offering = $_POST['Team_Name'];

до

$Team_Offering = mysql_real_escape_string($_POST['Team_Name']);

перед его использованием в запросе mysql, в противном случае вы уязвимы для атак с использованием SQL-инъекций.

0 голосов
/ 03 мая 2009

Вот куда я попал ... все, что находится ниже линии печати, не появилось бы, если бы я поместил строку печати под ней.

$k=0;
$Salary=0;

print "<br> made it to this label: some_unique_label_name_here";

while ($k < $Fields_Counter)

{

$Type=$_POST['type'.$k];

$Salary=$_POST['cy'.$k];

$Index=$_POST['index'.$k];

$Check=$_POST['check'.$k];


$queryn="SELECT * FROM nuke_iblplyr WHERE pid = '$Index' ";
$resultn=mysql_query($queryn);

$playername=mysql_result($resultn,0,"name");

$players_team=mysql_result($resultn,0,"tid");
0 голосов
/ 03 мая 2009

Также, чтобы уточнить - у меня, вероятно, три десятка PHP-файлов на сайте - это единственный, который перестал работать.

0 голосов
/ 03 мая 2009

После включения отчетов об ошибках обязательно добавьте операторы else, которые соответствуют всем вашим операторам if, чтобы вы могли определить, запускаются ли эти операторы или нет. Добавьте эхо.

0 голосов
/ 03 мая 2009

Не вдаваясь в подробности своего кода, я бы посоветовал вам поискать любые разделы, которые могут зацикливаться в течение длительного времени, не возвращая

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...