PHP Редактировать сообщение с помощью Google OpenID

StackOverflow https://stackoverflow.com//questions/24027918

  •  21-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь закодировать страницу редактирования сообщения для своего сайта, которая публикует сообщения самому себе, используя вход в систему Google OpenID, однако вместо формы редактирования я получаю пустую страницу.Вот код, который я использую:

<html>
  <head>
    <title>BQuotes</title>
    <!-- <meta name="viewport" content="width=device-width, initial-scale=1"> -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <link href="votingfiles/voting.css" rel="stylesheet" type="text/css" />
    <script src="votingfiles/voting.js" type="text/javascript"></script>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.css" />
    <link rel="stylesheet" type="text/css" href="http://bquotes.me/mystyle-a.css">
    <script src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
    <style>
      .head_text {
        color: #ffffff;
      }
      a {
        text-decoration: none;
      }
    </style>

    <script type="text/javascript">
      $('#g-login').bind('click', function (event) {
        // event.preventDefault();
        // $('#form-id').attr('action', 'google-login.php').trigger('submit');
        alert("Clicked");
      });
    </script>
  </head>
  <body style="color:#d4ffaa">


    <!-- BQ Edit Post Start -->
    <div data-role="page" id="editPost">
      <div data-role="header" style="background-color:#5FBF00">
        <h1 class="head_text">BQuotes: Edit Statuses</h1>
      </div>
      <div data-role="main" class="ui-content">

        <?php





          ?>


      </div>



         <?php
          define ('HOSTNAME', 'host');
          define ('USERNAME', 'user');
          define ('PASSWORD', 'pass');
          define ('DATABASE_NAME', 'db');

          $db = mysql_connect(HOSTNAME, USERNAME, PASSWORD) or die ('I cannot connect to MySQL.');

          mysql_select_db(DATABASE_NAME);

          $tbl='table';
          $id=$_POST['pid'];

          $query="SELECT * from $tbl WHERE $id=id";
          $result = mysql_query($query);

          while($row = mysql_fetch_array($result)) {
          $id=$row['id'];
          $username=$row['username'];
          $message=$row['message'];
          $tag=$row['tag'];



         session_start();
              if($_SESSION['myusername'] != null &&  isset($_SESSION['myusername'])){
              echo "<form action='logout.php' method='post' id ='form-logout' data-ajax='false'>
                    <br/><input type='submit' value='Logout'/>";
              echo "</form>";
              echo "<div style='margin-left:20px;'>Logged In As:  ".$_SESSION['myusername']."</div>";

             echo "<form name='post-edit' action='' method='post'>";
             echo "<input type='hidden' name='id' value=".$row['id'].">";
             echo "<input type='hidden' name='username' value=".$row['username'].">";
             echo "<textarea name='message' value=".$row['message'].">";
             echo "<input type='text' name='tag' value=".$row['tag'].">";
             echo "<input type='submit' name='submit' value='Edit!'>";
             echo "</form>";

              }
            else if($_SESSION['myusername'] == null){
              echo "<form action='google-login.php?login=true' method='post' id ='form-id' data-ajax='false'>";    
                 echo "<span class='loginreq'>Login to Edit</span>";           
                echo "<br/><input type='submit' value='Login with Google'/>";
                echo "</form>";
            }
            }



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

          $query = "UPDATE mybq_post_txt_main SET message=$message, tag=$tag WHERE id=$id ";

          $result = mysql_query($query);

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

          echo "Your post has been edited to:";<br>
          echo $row['message'];
          echo $row['tag'];
          }

          mysql_free_result($result);
          mysql_close();

          }

        ?>



        <a href='mybq-index.php'>Home</a>


      </div>


  </body>
</html>

Любая помощь будет оценена по достоинству.(не говоря уже о операторах PHP SQL, позже я преобразую их в PDO).

Это было полезно?

Решение 4

Здесь это код, который сработал (полный код под фрагментом).Первоначальной ошибкой был разрыв строки ( <br> ) после сообщения «ваше сообщение было отредактировано:», которое не было правильно отформатировано для php.Другие ошибки касались правильного связывания переменной $_GET, неправильного имени таблицы и неправильного цикла начального условия «пока».

Спасибо!

Другие советы

$query="SELECT * from $tbl WHERE $id=id";
.

должен быть

$query="SELECT * from $tbl WHERE id=$id";
.

(то есть. Переверните вокруг «ID», чтобы сначала поставить столбец SQL и вашу переменную PHP вторым)

Не уверен, что это исправит все, но это было первое, что выскочило у меня.

Я уверен, что вы хотя бы хотите, чтобы форма входа в систему отображается, если не войти в систему.Если это так, изменить:

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

...

}
.

к этому:

$row = mysql_fetch_array($result);

...

//}
.

Я предполагаю, что запрос предназначен только для возврата 1 или 0 строк, так что нет необходимости в цикле в любом случае.

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

Формы в вашем коде находятся в то время как цикл mysql_fetch_array, поэтому, когда пользовательская запись не найдена ни одна форма, не получит шанс отобразить.

Попробуйте переместить session_start () в верхнюю часть вашей страницы?Вы обычно хотите назвать это, прежде чем что-то еще отправлено в браузер.Над тегом HTML, возможно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top