Login.php hiba

Indította kicsiasdvagyok, 2015-06-28, 13:52:23

Sziasztok!

Valamiért nem reagál a bejelentkezés, ez a login.php-m.
Idéz<div id="content">         <div class="postui2 text-title">
               <h2>
                    Bejelentkezés
                   
                    </h2>
            
            </div>
            <div class="postui2 text-con">
            <div class="con-wrap">
<?PHP
  if(isset($_GET['do']) && $_GET['do']=="aktivieren" && isset($_GET['hash']) && !empty($_GET['hash'])) {
    if(strlen($_GET['hash'])==32 && $_GET['hash']!=1 && checkAnum($_GET['hash'])) {
      $cmdHash = "SELECT id,web_aktiviert FROM account.account WHERE web_aktiviert='".$_GET['hash']."' AND web_aktiviert!='1' LIMIT 1;";
      $qryHash = mysql_query($cmdHash,$sqlServ);
     
      if(mysql_num_rows($qryHash)) {
     
        $getData = mysql_fetch_object($qryHash);
        $userUpdate = "UPDATE account.account SET web_aktiviert='1',status='OK' WHERE id='".$getData->id."' LIMIT 1;";
        $updateQry = mysql_query($userUpdate,$sqlServ);
       
        if($updateQry) {
          echo'<p class="meldung">Ihr Account wurde erfolgreich aktiviert. Sie k&ouml;nnen sich nun einloggen.</p>';
          echo'<meta http-equiv="refresh" content="1; URL=index.php?s=login"> ';
        }
        else {
          echo'<p class="meldung">Query fehlgeschlagen. Bitte einen Admin kontaktieren!</p>';
        }
       
      }
      else {
        echo'<p class="meldung">Es wurde kein passender Eintrag gefunden. Aktivierung fehlgeschlagen.</p>';
      }
     
    }
    else {
      echo'<p class="meldung">Kein valider Hash!</p>';
    }
  }

  if(!empty($_SESSION['user_id']))
  {
    echo'<h2>Account&uuml;bersicht</h2>';
    echo'<div class="splitLeft">';
    echo'<ul class="menue">';
    echo'</div>';
    echo'<div class="splitRight">';
   
    $cmdStats = "SELECT SUM( player.playtime ) AS ges_spielzeit, COUNT( * ) AS ges_chars, player_index.empire
    FROM player.player
    INNER JOIN player.player_index ON player_index.id = player.account_id
    WHERE player.account_id = '".$_SESSION['user_id']."'
    LIMIT 1";
   
    $qryStats = mysql_query($cmdStats,$sqlServ);
    $getStats = mysql_fetch_object($qryStats);
   
    if(!empty($getStats->empire)) {
      $reich = '<img src="img/reiche/'.$getStats->empire.'.png" title="Reich" alt="Reich"/>';
    }
    else {
      $reich='kein Reich ausgew&auml;hlt';
    }
   
   
    echo'
   <table>
      <tr>
        <th class="topLine">Account:</th>
        <td class="tdunkel">'.$_SESSION['user_name'].'</td>
      </tr>
      <tr>
        <th class="topLine">Reich:</th>
        <td class="thell">'.$reich.'</td>
      </tr>
      <tr>
        <th class="topLine">Charaktere:</th>
        <td class="tdunkel">'.$getStats->ges_chars.'</td>
      </tr>
      <tr>
        <th class="topLine">Gesamte Spielzeit:</th>
        <td class="thell">'.$getStats->ges_spielzeit.' Minuten</td>
      </tr>';
    $sqlAcc = "SELECT account.social_id AS loeschcode, safebox.password AS lagerpw
    FROM account.account
    LEFT JOIN player.safebox
    ON account.id=safebox.account_id
    WHERE account.id='".$_SESSION['user_id']."'";

    $qryAcc = mysql_query($sqlAcc) or die(mysql_error());
    $getAcc = mysql_fetch_object($qryAcc);
   
    if(empty($getAcc->lagerpw)) $getAcc->lagerpw = '000000';
     
      echo'<tr>
        <th class="topLine">L&ouml;schcode:</th>
        <td class="tdunkel">'.$getAcc->loeschcode.'</td>
      </tr>
    </table>';
   
    echo'</div><div class="clear"></div>';
  }
  else
  {
  ?>
<h2>Login</h2>
<form action="index.php?s=login" method="POST">
  <table>
    <tr>
      <th class="topLine">Felhasználónév:</th>
      <td class="tdunkel"><input type="text" name="userid" maxlength="16" size="20"/></td>
    </tr>
    <tr>
      <th class="topLine">Jelszó:</th>
      <td class="thell"><input type="password" name="userpass" maxlength="16" size="20"/></td>
    </tr>
    <tr>
      <td class="topLine" style="text-align:center;" colspan="2"><input type="submit" name="submit" value="login"/></td>
    </tr>
  </table>
  <p><a href="index.php?s=register">Regisztráció</a> &bull; <a href="index.php?s=lostpw">Jelszó emlékeztető</a></p>
</form>
  <?PHP
  }
  ?>
 
            </div>

  </div>
            <div class="postui2 text-end">
           
               
                 
    </div></div>
 
 

2015-06-28, 19:29:53 #1 Utolsó szerkesztés: 2015-06-28, 19:32:10 Szerző: Anonimiti
Egy Fórumrészleggel arrébb kellett volna nyitnod a témát. http://metin2hungary.net/index.php/board,45.0.html




Na de, hogy ne legyen off.. megnéztem a PHP-t és ebben csak maga a Form azaz a Felhasználónév és a Jelszó bekérő van, és nincs megadva, hogy milyen PHP / MySQL utasítás fusson le a "login" gombra kattintás után.

A PHP elején egy aktiválórész van, E-mailos megerősítés esetére, alatta pedig már az, hogy megjeleníti magát a fiók információit, ha be van lépve, szóval így nehéz lesz bárhogy is a belépéssel próbálkozni.


*megosztott fiók, ketten használjuk

A feldolgozó része az inc/head.inc.php fájlban van. Azt másold be.
(Ha lehet akkor ne [quote][/quote] tag-ek közé, hanem [code][/code] közé írd a tartalmát)

Idéz<?PHP
 
  if(isset($_POST['submit']) && ($_POST['submit']=="login" || $_POST['submit']=="Log In"))
  {
    if(!empty($_POST['userid']) && !empty($_POST['userpass']) && checkAnum($_POST['userid']) && checkAnum($_POST['userpass']))
    {
      $sqlCmd = "SELECT id,login,coins,web_admin,email
      FROM account.account
      WHERE login
      LIKE '".mysql_real_escape_string($_POST['userid'])."'
      AND password=PASSWORD('".mysql_real_escape_string($_POST['userpass'])."')
      LIMIT 1";
      $sqlQry = mysql_query($sqlCmd,$sqlServ);
      if(mysql_num_rows($sqlQry)>0)
      {
        $getAdmin = mysql_fetch_object($sqlQry);
        $_SESSION['user_id'] = $getAdmin->id;
        $_SESSION['user_name'] = $getAdmin->login;
        $_SESSION['user_admin'] = $getAdmin->web_admin;
        $_SESSION['user_coins'] = $getAdmin->coins;
        $_SESSION['user_email'] = $getAdmin->email;
        $updateIP = mysql_query("UPDATE account.account SET web_ip='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."' WHERE id='".mysql_real_escape_string($getAdmin->id)."'",$sqlServ);
       
      }
    }
  }

  if(empty($_SESSION['user_id']))
  {
    unset($_SESSION['user_id']);
    unset($_SESSION['user_name']);
    unset($_SESSION['user_admin']);
    unset($_SESSION['user_coins']);
    unset($_SESSION['user_email']);
  }
  else {
    $sqlCmd = "SELECT id,login,web_admin,coins,email FROM account.account WHERE web_ip='".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."' AND id='".mysql_real_escape_string($_SESSION['user_id'])."' LIMIT 1";
    $sqlQry = mysql_query($sqlCmd,$sqlServ);
    if(mysql_num_rows($sqlQry)>0)
    {
      $getAdmin = mysql_fetch_object($sqlQry);
      $_SESSION['user_id'] = $getAdmin->id;
      $_SESSION['user_name'] = $getAdmin->login;
      $_SESSION['user_admin'] = $getAdmin->web_admin;
      $_SESSION['user_coins'] = $getAdmin->coins;
      $_SESSION['user_email'] = $getAdmin->email;
     
    }
   else
   {
      unset($_SESSION['user_id']);
      unset($_SESSION['user_name']);
      unset($_SESSION['user_admin']);
      unset($_SESSION['user_coins']);
      unset($_SESSION['user_email']);
   }
  }
 

?>

Elsőként, ami szemet szúrt az a legelső sor.

Ezt cseréld le:

  if(isset($_POST['submit']) && ($_POST['submit']=="login" || $_POST['submit']=="Log In"))


erre:

  if(isset($_POST['submit']) && ($_POST['submit']=="login" || $_POST['submit']=="login"))


*megosztott fiók, ketten használjuk

Ezzel sem jutsz előrébb. :)
Kétszer ugyanazt ellenőrzöd, semmi értelme. Azért van kettő különböző módon beírva, hogy például az egyik gombon "login" a value, a másikon meg "Log In", mindkettővel be tudjon lépni. Ha átírod, akkor annyi változik, hogy csak a "login" értékűvel fog beléptetni. De ahogy látom a login.php-ban úgy is csak ez van, de ki tudja, a loginbar.inc.php-ban lehet, hogy a "Log In", így az semmiképp sem fog működni. ;)

Uhh tényleg, igazad van, az előtte lévő részt meg sem néztem. :DD Mondjuk van pár hibalehetőség, lehet hogy magában az account táblából hiányzik olyan oszlop, amit belépésnél lekérne,  például a web_admin, ezt egy alap tábla nem tartalmazza, de így találomban... inkább TeamVieweren lenne érdemesebb, ha fellépne vagy valami "újabb" fajta oldalt használna.


*megosztott fiók, ketten használjuk