Kérdések és válaszok

Indította DoomKiller, 2010 augusztus 10, 06:46:54 DÉLUTÁN

Előző téma - Következő téma

NevemSenki

Újra én, csináltam egy kisebb login rendszert, csak egy dolgot nem értek. A Session-t hogy pucolom ki ha kilép az user? A beléptetés már jó, de a kiléptetés nem.
Így próbáltam: <?php session_unset(); session_destroy(); ?>
Keresgéltem neten, de nem találtam választ, ez a google fordító olyan hülyeségeket fordít hogy nem hiszem el.

Linkelem az egész dolgot, a segítséget előre is köszönöm.

index.php

<?php
session_start
();

include(
"conn.php");

if (isset(
$_SESSION["id"])) {
    echo 

"<div align='middle'>
Be vagy lépve " 
$_SESSION["username"] ." néven, a " $_SESSION["email"] . " E-Mail címet használod, és " $_SESSION["joindate"] ." időpontban csatlakoztál hozzánk.
<br />
<img src='http://jornalistas.blog.br/jornalistas3.0/img/artigos/artigo12355.gif'></img>
<br /> <a href='logout.php'>Kilépés</a>
</div>"
;
} else {
    die(
"Nem vagy belépve! LÉpj be itt" '<a href="login.php">Belépés</a>');
}

?>



login.php

<?php
session_start
();
if (isset(
$_POST["u"]) AND isset($_POST["p"])) {
    include(
"conn.php");
    
$sql "select * from account WHERE username='" mysql_real_escape_string($_POST["u"]) . "' ";
    
$eredmeny mysql_query($sql);
    if (!
$eredmeny) {
        die(
"Hiba a lekérésbe:" mysql_error());
    }

    if (
mysql_num_rows($eredmeny) == 1) {
        
$adat mysql_fetch_assoc($eredmeny);


// elvileg jónak kéne lennie sha_pass_hash
$pass sha1(strtoupper($_POST["u"].':'.$_POST['p']));


        if (
$adat["sha_pass_hash"] == $pass) {
            echo 
"Beléptél!";

$_SESSION["id"]= $adat["id"];
$_SESSION["username"]= $adat["username"];
$_SESSION["email"]= $adat["email"];
$_SESSION["joindate"]= $adat["joindate"];

echo '<meta http-equiv="refresh" content="2;url=index.php"/>';

} else {
            echo 
"Jelszó hibás!";
        }
    } else {
        echo 
"Nincs ilyen felhasználó!";
    }
}

?>


<form method="post">
FElhasznalonev: <input type="text" name="u"><br />
Jelszo: <input type="password" name="p"><br />
<input type="submit" name="mehet" value="belep">


logout.php

<?php include("conn.php"); ?>
<!DOCTYPE html>
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  </head>
  <body>
    <div id="embedded-login">
      <br />
      <center>
      <h3>Kilépés</h3><br />
      <div class="loader"></div>
      <?php session_unset(); session_destroy(); ?>
      <meta http-equiv="refresh" content="2;url=index.php"/>   
      </center>
    </div>
  </body>
  </html>


conn.php

<?php
    $dbhost 
"localhost";
    
$dbuser "root";
    
$dbpass "szabo1990";
    
$authdb "auth";
    
mysql_connect$dbhost$dbuser$dbpass ) or die ( "Unable to connect to MySQL server" );
    
mysql_select_db"$authdb);
    
mysql_query"SET NAMES utf8" );

?>


Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

NevemSenki

Találtam egy megoldást, de nem biztos hogy jó, igaz működik, de nem vagyok biztos hogy ez a legjobb megoldás. Leírom.
Mindenhonnan kikaptam a session_start();-ot.
Majd  a conn.php-ben kezdtem az egészet indítani, mégpedig így:

$sessionid = session_id();
if($sessionid == ""){
  session_start();
}


És így működik a kiléptetés is.

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

AximCore

"Tanítani lehet az ostobát, de gondolkodásra bírni nem."
A Talmud

Windows Firewall
http://devopsreactions.tumblr.com/

Why use Windows, if you have open doors... to Linux

IrOn

vagy másik megoldás ürítésre:
$_SESSION[] = array();

NevemSenki

Köszönöm a válaszokat, most már működik!
Nekiláttam megcsinálni egy egyedi weboldalt TC-hez, az eredeti mintájára.
Egy kép, nem nagy dolog, de legalább leköt, és tanulok vele.
Beszéltünk itt régebben közös Projektről.
Na én elkezdtem, és ha már azért tartalmaz is valamit, akkor megosztom, és hajrá van.
Mindenki segít aki tud, és persze aki akar.


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

IrOn

képeken direkt vannak mindig 18as tartalmak? :D
Idézetet írta: NevemSenki Dátum 2012 október 12, 08:08:31 DÉLUTÁN
Köszönöm a válaszokat, most már működik!
Nekiláttam megcsinálni egy egyedi weboldalt TC-hez, az eredeti mintájára.
Egy kép, nem nagy dolog, de legalább leköt, és tanulok vele.
Beszéltünk itt régebben közös Projektről.
Na én elkezdtem, és ha már azért tartalmaz is valamit, akkor megosztom, és hajrá van.
Mindenki segít aki tud, és persze aki akar.


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

Üdv.: Senki

NevemSenki

A fene se figyelte. Csak találtam egy oldalt nagy keresgélésem közepette, és voltak jó felvételek, párat lekaptam JDownloader-el. Csak véletlenül megnyitva maradt.
Majd lecserélem a képet.

Lenézést kérek. :D

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

NevemSenki

Újra én.
Elhaladtam ezzel a dologgal, megvannak az alap oldalak, de egy számomra megoldhatatlan hibába ütköztem.
Az eredeti http://us.battle.net/wow/en/ oldalon a beléptetés egy kis ablakkal indul, majd ér véget.
A beléptetés működik. Előjön a kis ablak, felh.név + jelszó, el is fogadja. ( $_SESSION megoldás )
Noss igen, de ott a probléma, hogy beléptet, de a kis ablakot nem zárja be.
És nem a főoldalt frissíti, hanem a kis ablakot.
Ha kiikszelem, majd frissítek egyet a főoldalon, akkor már be vagyok lépve.
Szóval a beléptetés menet jó.
Hol lehet a hiba?

1--2 kódrész, majd egy kép.

test_login.php

<?php
$page
="test_login.php";
if (isset(
$_POST["u"]) AND isset($_POST["p"])) {
    include(
"beallitasok/conn.php");
    mysql_select_db"$authdb);
    
$sql "select * from account WHERE username='" mysql_real_escape_string($_POST["u"]) . "' ";

    
$eredmeny mysql_query($sql);
    if (!
$eredmeny) {
        die(
"Hiba a lekérésbe:" mysql_error());
    }

    if (
mysql_num_rows($eredmeny) == 1) {
        
$adat mysql_fetch_assoc($eredmeny);


// ezt tettem be sha_pass_hash
$pass sha1(strtoupper($_POST["u"].':'.$_POST['p']));


        if (
$adat["sha_pass_hash"] == $pass) {
            echo 
"Beléptél!";
          echo 
'<meta http-equiv="refresh" content="2;"';
          echo 
'Succesfully';

$_SESSION["id"]= $adat["id"];
$_SESSION["username"]= $adat["username"];
$_SESSION["email"]= $adat["email"];
$_SESSION["joindate"]= $adat["joindate"];

echo '<meta http-equiv="refresh" content="2;url=fooldal.php"/>';

}
else 
{
            echo 
"Jelszó hibás!";
        }
    }
else
{
        echo 
"Nincs ilyen felhasználó!";
    }
}
else
{
?>

<html xmlns="http://www.w3.org/1999/xhtml" class="">
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="/login/static/local-common/css/common.css" />
<link rel="stylesheet" type="text/css" href="/login/static/_themes/bam/css/master.css" />
<script type="text/javascript" src="/login/static/local-common/js/third-party.js"></script>
<script type="text/javascript" src="/login/static/local-common/js/common/core.js"></script>
<script type="text/javascript">
var targetOrigin = "http://localhost/";

function updateParent(action, key, value) {
var obj = { action: action };

if (key) obj[key] = value;

parent.postMessage(JSON.stringify(obj), targetOrigin);
return false;
}

function checkDefaultValue(input, isPass) {
if (input.value == input.title)
input.value = "";

if (isPass)
input.type = "password";
}
</script>
</head>
<body>
<div id="embedded-login">
<h1>Battle.net</h1>

<form action="" method="post">
<a id="embedded-close" href="javascript:;" onclick="updateParent('close')"> </a>

<div>

<p><label for="accountName" class="label">E-mail Address</label>
<input id="accountName" value="" name="u" maxlength="320" type="text" tabindex="1" class="input" /></p>

<p><label for="password" class="label">Password</label>
<input id="password" name="p" maxlength="16" type="password" tabindex="2" autocomplete="off" class="input" /></p>


<p>
<span id="remember-me">
<label for="persistLogin">
<input type="checkbox" checked="checked" name="persistLogin" id="persistLogin" />
Keep me logged in
</label>
</span>

<input type="hidden" name="app" value="com-sc2" />



<button class="ui-button button1 " type="submit" data-text="Processing...">
<span class="button-left">
<span class="button-right">Log In</span>
</span>
</button>

</p>
</div>

<ul id="help-links">


<li class="icon-pass">
<a href="https://us.battle.net/account/support/login-support.html">Can't log in</a>?
</li>

<li class="icon-secure">
Learn how to <a href="http://us.battle.net/security/?ref=">protect your account</a>!
</li>



<li class="icon-signup">
Don't have an account yet? <a href="https://us.battle.net/account/creation/tos.html?ref=">Sign up now</a>!
</li>



</ul>

<script type="text/javascript">
$(function() {
$("#help-links a").click(function() {
updateParent('redirect', 'url', this.href);
return false;
});

$('#accountName').focus();

updateParent('onload', 'height', $(document).height());
});

function reLoadCaptcha(target,path) {
target.src = '/login/captcha.jpg?' + new Date().getTime();
}
</script>
</form>
</div>
</body>
</html>
<?php ?>


Részlet a lábécből: lábléc.php

<li class="service-cell service-welcome">
<a href="?login" onclick="return Login.open('<?php echo $kiindulomappa;?>test_login.php?')">Log in</a> or <a href="https://us.battle.net/account/creation/tos.html">Create an Account</a>
</li>
.
.
.
.
.
<script type="text/javascript">
//<![CDATA[
Core.load("<?php echo $kiindulomappa ?>megjelenes/js/jquery-ui-1.8.6.custom.min.js");
Core.load("<?php echo $kiindulomappa ?>megjelenes/js/login.js", false, function() {
Login.embeddedUrl = '<?php echo $kiindulomappa ?>test_login.php.php';
});
//]]>
</script>


login.js

http://pastebin.com/x4B59GKB

És egy kép:


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

Aki tud valami okosat mondani, várom a válaszát.

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

NevemSenki

Megfejtettem, a probléma egy új sor volt, egy üres sor ( vagyis egy enter a javascript-ben ).
var targetOrigin = "http://localhost/";

function updateParent(action, key, value) {


Iron köszönöm a 3dcaharcter-es dolgot amihez hülye voltam, de azt fogom felhasználni az armory-ban.


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

NevemSenki

#249
Na én telepakolom ezt a Topic-ot, mert szerintem itt az is a lényeg, hogy segítsünk egymásnak. És vannak emberek, akik segítenek is, és ezt köszönöm.
Három embert említenék meg:

IrOn

zerus

AximCore

Újabb kérdés vetődött fel.
Ugye ha nyitok egy MySql kapcsolatot, azt illik is bezárni, na de hol?
Fejléc, lábléc külön van, Include-al van betéve. Egy oylan kódot fog közre, ami csak beilleszti a megfelelő tartalmakat.

<?php 

include ("fejlec.php");
$_GET['wajcraft'] = str_replace('../''',$_GET['wajcraft'] );
if (isset(
$_GET['wajcraft']) and $_GET['wajcraft'] != '')
{

if (
is_file(""$_GET["wajcraft"] . ".php"))
{
include(
""$_GET["wajcraft"] . ".php");
}
}
else
{
include (
"kezdooldal.php");
}
include (
"lablec.php"); ?>


Na most, én a kapcsolatot létrehozom egy conn.php-ban, ami a fejlécbe van include-olva.

<?php
$sessionid 
session_id();
if(
$sessionid == ""){
  
session_start();
}
    
/* For the following details, ask your server vendor  */
    
$dbhost "localhost";   // Hoszt
    
$dbuser "root"; // Felhasználónév
    
$dbpass "szabo1990"; // Jelszó
$weboldadb "weboldal"; // Weboldalhoz tartozó adatbázis
    
$authdb "auth"; // Realm adatbázis Trinity
$charsdb "chars"; // Karakter adatbázis Trinity
$worlddb "world"; // World adatbázis Trinity
$kiindulomappa "/"; // Kiinduló mappa, Root mappa. például: " / " vagy " /ebben_van_a_weboldal/ "
$oldaleleres "http://localhost"; // Oldalelérés Például: http://localhost vagy http://www.xyz.hu
$weboldalnev "World of Wajcraft"; // Weboldal látható neve
    
$adatbaziskapcsolodas mysql_connect$dbhost$dbuser$dbpass ) or die ( 'Nem tudok kapcsolódni: ' mysql_error() );
    
mysql_query"SET NAMES utf8" ); // Set this to latin2 if you're using latin2 collacation in your database

?>


A kapcsolatot pedig az include-olt, lablec.php végén teszem így a következő kóddal:

<?php mysql_close($adatbaziskapcsolodas);

Működik, igaz, amíg nem zártam be a kapcsolatot, addig is működött.
Jó ez így, vagy hogy csináljam másképpen?




Másik kérdésem pedig, hogy ez a shadez armory-ból nekem csak a falsh kéne, ami megjeleníti a karaktert.
Lehetséges lenne kideríteni valahogy, hogy mit vár el a flash alapú megjelenítő?
Mondjuk valamilyen módon visszafejteni?
Mert ehhez megvannak a megjelenítéshez szükséges fájlok, szóval minden, csak nem tudom hogy milyen adatokat, és milyen sorrendben várja el őket.

( Gondolatmenet kiindulónak ezt használtam :

<div id="model_scene" align="center">
<object id="wowhead" type="application/x-shockwave-flash" data="http://static.wowhead.com/modelviewer/ModelView.swf" height="400px" width="300px">
<param name="quality" value="high">
<param name="allowscriptaccess" value="always">
<param name="menu" value="false">
<param value="transparent" name="wmode">
<param name="flashvars" value="model=<?php echo $rg ?>&amp;modelType=16&amp;ha=<?php echo $ha;?>&amp;hc=<?php echo $hc;?>&amp;fa=<?php echo $fa;?>&amp;sk=<?php echo $sk;?>&amp;fh=<?php echo $fh;?>&amp;fc=0&amp;contentPath=http://static.wowhead.com/modelviewer/&amp;blur=0&amp;equipList=<?php echo $eq ?>">
<param name="movie" value="http://static.wowhead.com/modelviewer/ModelView.swf">
</object>
</div>


Na most ez is megvan, kicsit Decompilláltam is a ModelViev.swf-et, de nem jutottam előrébb. Mert itt hiányoznak a megjelenítéshez szükséges fájlok. Más baj nem lenne. Noss de a Shadez-nél ez mind adott, csak épp nem tudjuk hogy mit vár el.

Várom az ötleteket. )


Üdv.: Senki

Update

Még valami. TC caharacters tábla a char DB-ben. Ott ugye az account oszlopban meg van adva a fiókhoz tartozó account id. Ha nekem több karakterem van egy account-on, akkor ugye az account id változatlan marad, és csak a többi érték fog változni.
Hogyan tudnám egy tömbbe kiválasztani a megadott account id-hez tartozó összes karaktert, majd ezek nevét kiíratni?

Akárhogy próbálkoztam, vagy csak azt írta ki hogy: Array, vagy pedig az eső karakter nevét ( legkisebb guid ). De nekem kéne az összes.

Elég döcögősen megy a mysql_fetch_assoc és a mysql_fetch_array is..
$_SESSION-oknál jó volt a mysql_fetch_assoc, de itt most nem jó. Meg igaz, hogy egyszerre több sorral szeretnék dolgozni, nem csak konkrétan egyel. Olvastam utána, találtam is leírást, de nem vagyok képes fölfogni hogy miért. Mert igazából sehol sem magyarázzák meg, csak leírják a megoldást, és ennyi.

A segítséget előre is köszönöm.

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

IrOn

updatere:
<?php
$karakterek 
mysql_query("SELECT * FROM xy.characters WHERE accountid='idm'"mysqlkapcsolat);
while(
$karakter mysql_fetch_array($karakterek))
{
  echo 
$karakter['name'].'<br />';
}
?>

NevemSenki

Nagyon szépen köszönöm IrOn a segítséget!


Én így írtam meg:

<?php mysql_select_db( "$charsdb" );
$karakterlekerdezes = mysql_query("select * from characters WHERE account=$_SESSION[id]");
while($karakter = mysql_fetch_array($karakterlekerdezes))
{
// class='char pinned' vany pipa <- vagy -> class='char' nincs pipa
echo "<a href='/wow/en/character/mazrigos/Bravandvia/' class='char pinned' rel='np'> 
<span class='pin'></span>
<span class='name'><?php echo $karakter[name];?>
</span>
<span class='class wow-class-8'>1 Orc Mage</span>
<span class='realm up'>Mazrigos</span>
</a>";
}?>


Ez egy ciklus, ezt megtanultam. De viszont felmerült egy újabb kérdés. Hogyan tudnám azt megoldani, hogy a lekért nevekkel, külön-külön tudjak dolgozni?
Ezalatt azt értem, hogy ugye ebben az esetben annyiszor ismétli a ciklust, amíg az
accountID=$_SESSION[id]. Így ugye megtalál, minimum 1, maximum mondjuk 5 sort.
Mondjuk 5 sort talál, szépen ki is írja, na de én ebből a 2. sor-al szeretnék dolgozni.
De hogyan veszem változóba csak és kizárólag az 1. sor, vagy a 2. sort ... stb... ?

Nem tudom másként megkérdezni, kicsit hülyén mondtam el, de a lényeg ott van, hogy azon sorok közül, én csak az egyikkel szeretnék tovább dolgozni ahol accountID=$_SESSION[id], de viszont az 5 találat közül, nekem csak 1 kéne, és az is egy változóban.
Mert ugye a későbbiekben a caharacter-hez tartozó giud ID-vel kellene tovább dolgoznom...

( Bocsi a sok fárasztó kérdésért, lehet akkora hülyeségeket kérdezek hogy majd 1 év múlva sírva fakadok saját magamon, de most ezt nem értem. )

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

IrOn

select * from characters WHERE account=$_SESSION[id] LIMIT 2
vagy ha mindegyiket leakarod kérni, csak azon belül még arról a karakterről szeretnél vmit és más táblában van akkor cikluson belül dolgozz, és mindegyikkel lefut

NevemSenki

Köszönöm a választ, és a segítséget, holnap ki is próbálom.

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

NevemSenki

Köszönöm IrOn, kipróbálta, és működik. Cikluson belül oldottam megy egyenlőre, most ameddig eljutottam, megfelelőnek tűnik így, lehet később majd változtatnom kell rajta.
http://pastebin.com/CREpSctP

Újabb kérdés.
A keresőknél tartok most, előjött a LIKE lekérdezés.. $_GET.....
Karakter neveket kérdezek le. Na most a karakterek neve Nagy betűvel kezdődik, ha úgy keresek rá hogy nagy betűvel kezdem a karakternevet, akkor meg is találja, de én azt szeretném, ha úgy is megtalálja, ha kisbetűvel írom az első betűt.
Például:

Karakternév az adatbázisban: Baelgunk
Én pedig rákeresek a " baelgunk " névre.
És így is találja meg a megfelelő sort.

Olvasgattam MySql beállításokról, többek között  a " _ci " végződésekről. Hiába állítottam be az az adatbázist

Idézutf8
utf8_hungaryan_ci

-re, nem működik a dolog.
Ötleteket szívesen fogadok.

Üdv.: Senki
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

Powered by EzPortal