Jump to content
GSForum - Segélyvonal

PHP kérdésem van


Recommended Posts

Posted

Ha a good_password elsõ sorába beírod, hogy:

return $lang['ketjelsz_nemegy']; 

akkor vissza adja a megfelelõ szöveget?

Posted

Az ezer éves könyvembe az volt írva, funkción kívüli változót meg mindnet külön "meg kell hívni" a global elemmel. :hááát:

Posted

Nem meghívni, hanem úgy definiálni. Egyébként egy php fájlon belül elérhetõek az ott definiált változók, ott nem kell a global.

Posted

NA.. a helyzet a következõ:

@arpsoft:

nem ír ki semmit. :(

 

De viszont az alábbi kód alapján kiírja a formban lévõ szövegeket:

<?php

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

if ( ($_POST['pass1'] != "" ) && ($_POST['pass2'] != "" ) && ($_POST['oldpass'] != "" ) ) {

    function good_password($oldpass, $pass1, $pass2)

        {

         return $lang['ketjelsz_nemegy']; 

         }

$result = good_password($_POST['oldpass'], $_POST['pass1'], $_POST['pass2']);

echo $result;

}
}
?>
<div id="tartalom">
<table width=1050 border=0>

    <form method="post" action="">
    
        <tr><td colspan="2" class="login_piros" align="center" height="50"><?=$ok;?><?php if($result != "OK"){echo $result;}?> </td></tr>
        
        <tr><td width=50% class="pass" align="right" height=30><?php echo $lang['regi_jelszo'];?>:</td><td> <input type="password" name="oldpass"></td></tr>
        
        <tr><td class="pass" align="right" height=30 ><?php echo $lang['uj_jelszo'];?>:</td><td> <input type="password" name="pass1"></td></tr>
        
        <tr><td class="pass" align="right" height=30><?php echo $lang['uj_jelszo_ism'];?>:</td><td> <input type="password" name="pass2"></td></tr>
        
        <tr><td colspan="2" class="pass_td" align="center" height=60 valign=middle><input type="submit" value="<?php echo $lang['mentes'];?>" /><input type="hidden" name="pass_csere"><input type="hidden" name="id" value="<?php print $_SESSION['nick']['id']; ?>"></td></tr>
        
    
    </form>

</table>
</div>

Szóval már végképp nem értem.

Posted

Valóban, kell a global a functionbe, kléninél a pont.

 

(Magyarul még sincs értéke a $lang-nak a függvényben, Balázsnak megítélünk 1/100-ad pontot. :P)

Posted

Ez volt baj ...

 

Köszönöm :)

Posted

Sziasztok.

 

Azt szeretném kérdezni, hogy hogyan lehet azt megoldani, hogy ha van egy gombom ami egy másik oldalra vinne át és ha arra rákattintok akkor ugyanabban az ablakban nyíljon meg

 

Bemásolom, hogy jelenleg hogy is néz ki:

 

),

'blog' => array(

'title' => "Blog",

'href' => "http://blog-skyrpg.atw.hu" . '?action=blog',

'show' => true,

'sub_buttons' => array(

),

 

 

Elõre is köszönöm a válaszaitokat.

 

Üdv:Zoli

 

Posted

Na most a PHP-ban nincsen gomb. Itt kezdõdik. Annak, pedig, amit bemásoltál, nincs semmi értelme, úgy tûnik, mintha egy kiragadott részlet volna valamibõl.

 

Tehát fussunk neki szerintem távolabbról, hogy mit is csinálsz éppen, mit szeretnél csinálni, és miben segíthetünk? :)

Posted

Na akkor az elejétől.

 

Bocsi az előzőért. :D

 

Az SMF Portál módot használom, és a menübe sikerült a fenti részlet beírásával egy új menüpontot beletenni(ezt hívtam gomb-nak) ha erre a menüpontra kattintok akkor be kellene jönnie a blog oldalamnak ami más url címen van, na most azt szeretném elérni, hogy ilyenkor az adott ablakban jelenjen meg a blog oldal. Jelenleg is megjelenik, de mivel ingyenes tárhelyre tettem fel ezért kitesz egy újabb reklámcsíkot.

Az egy darab reklámcsíkkal nincs baj, de ha oda vissza lépek a blog és a fórum között akkor egy idő után tele lesz reklámmal az oldal.

 

Leírom a fórum címét hogy lássátok miről is beszélek (nem reklámnak szánom):

Skyrpg

 

Itt a teljes subs.php is csak a teljesség miatt :)

http://addat.hu/40d62e91/Subs.php.html

Posted

    if (isset($_POST["keres"])){
        $sql = mysql_query("SELECT * FROM adat WHERE szoveg LIKE '%".$_POST['kereses']."%' ORDER BY mi");
        $sor2 = mysql_fetch_array($sql);
        if ($sor2['szoveg'] !== NULL){
            while ($sor = mysql_fetch_array($sql)){
                if($sor["mi"] == "hir"){}
                if($sor["mi"] == "mod"){}
                if($sor["mi"] == "tutor"){}
                if($sor["mi"] == "letolt"){}
            }
        }
        else{    echo "<p>Nincs találat!</p>\n";}
    }

 

Ezzel a baj csak az, ha van találat, nem jeleníti meg a {} közötti tartalmat, vagy ha jól sejtem, az elsõt nem.

Kipróbálható itt (igen extra, és csk második félórában elérhatõ, ha jól számoltam :( )

A switch-nek lehet egyszerre két találata?

Posted

Az alapprobléma talán az lehet, hogy { } között nincs egyetlen megjelenítő utasítás sem. De ismét csak elképzelni sem tudom, mi volt a cél ezzel a fura programkóddal? :)

---

@brunzwik: ez nem PHP-probléma. A blog linkjét kéne úgy megcsinálni, hogy ne az alsó frame-be töltsön be, hanem a teljes oldalra. Tekintve, hogy bottal nem piszkálok meg frame-eket, nem vagyok otthon a dologban, de próbáld meg ezek közül valamelyiket, hátha bejön.

Posted

A {} között van kód, és az jó is, ha a keresõbe beírod hogy már, akkor kapsz is találatot, de nem a fõoldalét, pedig ott is van.

Keresõ akarna lenni, reméltem ez azért észrevehetõ :P

Az elsõ ifet azért raktam, mert ha a lekérés után nincs semmi, akkor ki tudjam írni hogy nincs találat. Ha mégis van, akkor leelenõrzöm az ismétlésben milyen fajta, és annak megfelelõen írom ki. Talán nem jó gondolkodás? :)

Posted

Ok, szóval...

 

- ha van $_POST['keres']

- akkor csinálunk egy MySQL lekérdezést*

- az eredménytáblából beolvassuk az első sort assoc és numerikus tömbként

- ha a 'szoveg' oszlop nem volt üres

- akkor belekezdünk egy while-ba (a második sortól kezdve)

- és attól függően, hogy a 'mi' oszlop micsoda... NEM CSINÁLUNK SEMMIT

 

Rosszul értelmezek valamit?

 

* Ilyet sosem csinálunk, hogy a $_POST-ban érkező adatot közvetlenül berakunk egy lekérdezésbe. Hacker bácsi beletolja a $_POST['keres']-be azt, hogy "a%';SELECT... stb." (nem akarok ötleteket adni), és máris töri fel az adatbázisodat!

Posted

Ezt a postos dolgot hogy lehet kiküszöbölni?

Posted

Validálással.

Átrakod egy másik változóba, kiirtod belõle, amire biztosan nincs szükséged, stb.

 

Amúgy én magát a ciklusszervezést nem értem.

A lekérdezés elsõ sorát berakod a $sor2 tömbbe.

Majd az eredmény összes többi sorát leellenõrzöd, hogy melyik kategóriába tartozik.

Az eredmény elsõ sora alapján nem tud megjelenni semmi.

 

Szerintem ezt

       $sor2 = mysql_fetch_array($sql);
        if ($sor2['szoveg'] !== NULL){

cseréld ki ezzel:

 if (mysql_num_rows($sql)>0){ 

Posted

Erre írtam azt fent, hogy "elképzelni sem tudom, mi volt a cél" és sajnos gondolatolvasó sem vagyok.

 

Hackelés ellen: php mysql sanitize

Posted

Na átalakítottam kicsit, és így jó is, csoportosítani is jobban tudtam. Viszont ha nincs találat, nem írja ki hogy nincs.

 

function keres(){
    if (isset($_POST["keres"])){
        $sql = mysql_query("SELECT * FROM adat WHERE szoveg LIKE '%".mysql_real_escape_string($_POST['kereses'])."%'");
        hir($sql);
    }
}

function hir($keresett){
    if (isset($keresett)) {$sql = $keresett;}
    else{$sql = mysql_query("SELECT * FROM adat WHERE mi='hir'");}
    if (mysql_num_rows($sql)>0){
        while ($sor = mysql_fetch_array($sql)){
            echo "...";
        }
    }
    else{    echo "<p>Nincs találat!</p>\n";}
}

Posted

Én ezt így használnám:

 
function keres(){
    if (isset($_POST["keres"])){
        
        $keres=trim($_POST['keres']);
        $keres=mysql_real_escape_string($keres);
        
        $sql = mysql_query("SELECT * FROM adat WHERE szoveg LIKE '%".$keres."%'");
        hir($sql);
    }
}

Posted

Kléni: be van kapcsolva a hibaüzenetek megjelenítése? Mert érzésem szerint, ha nincs találat, akkor elszáll hibával.

Posted

Még extrán vagyok, ott meg semmi nincs :(

 

kiskalóz, kipróbáltam a tied is, de még mindig nem jeleníti meg a nincstalálatot. (mellesleg még mindig nem értem, mi értelme van mindent külön változóba tenni...)

 

Na megvan, a hiba az volt, hogy ugyan az a lekérés volt, így mindenhol ugyan az volt a sorok száma. Így ki is javítottam, mit kérjen le :D

Posted

Esetleg használjuk ki a PHP strukturált mivoltát:

 

    ...
    $sql = mysql_query("SELECT * FROM adat WHERE szoveg LIKE '%".$keres."%'");
    eredmeny($sql,'hir');
    eredmeny($sql,'mod');
    eredmeny($sql,'tutor');
    eredmeny($sql,'letolt');
}

function eredmeny($keresett,$csoport){
    if (isset($keresett)) {
      $sql2 = $keresett;
    }
    else{
      $sql2 = mysql_query("SELECT * FROM adat WHERE mi='".$csoport."'");
    }
    if($sql2 && mysql_num_rows($sql2)>0){
        while ($sor = mysql_fetch_array($sql2)){
            echo "...";
        }
    }
    else{
      echo "<p>Nincs találat!</p>\n";
    }
}

  • 2 weeks later...
Posted (edited)

Sziasztok.

Olyan problémám van, hogy mysql lekérdezésnél "visszadumál"^^ igaz lefut a php parancs, eredménye is megvan, viszont kiad egy hibaüzenetet, hogy "already" blab blab bla... Folyamatosan újra akarja futtatni? :pislog:

Vagy már késő van és csak én vagyok láma nem'tom :lol:

 

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at "tárhely"\profil.php:3) in "tárhely"\profil.php on line 67

 

Itt a php:

 

<?php

session_start ();

 

include ("checkuser3.php");

 

include ("config_player.php");

 

 

$sql = "SELECT

*

FROM

player

WHERE (account_id = '".$_SESSION["user_id"]."')";

 

$ergebnis = mysql_query($sql);

while($row = mysql_fetch_object($ergebnis))

{

 

echo "<center>";

echo "<font color=red>KarakterID :</font>";

echo "<font color=red>$row->id</font>";

echo "<br>";

echo "<font color=red>Karakternév :</font>";

echo "<font color=red>$row->name</font>";

echo "<br>";

echo "<font color=red>Szint:</font>";

echo "<font color=red>$row->level</font>";

echo "<br>";

echo "</center>";

echo "<br>";

echo "<br>";

}

?>

 

másik... checkuser3.php

 

<?php

session_start ();

if (!isset ($_SESSION["user_id"]))

{

("Location: index.php");

}

include ("config_account.php");

$id = $_SESSION["user_id"];

$sql = "SELECT

*

FROM

account WHERE id = $id ";

 

$ergebnis = mysql_query($sql);

$row = mysql_fetch_object($ergebnis);

 

if($row->isadmin == "1"){

include ("templates/headeradmin.html");

} else {

}

 

?>

 

És nemértem mi a fene baja :(

Edited by Sleeeeeep
Posted

A session_start() után kell ez:

if (!session_is_registered("user_id"))

session_register("admin");

 

Én a Location: -t egy header() függvénybe raknám ;) (arról nem is beszélve, hogy <font>-ról már álmodni se szabad)

Posted

Az a baja, hogy a session-t még akkor kell elindítani, amikor a szerver még nem küldte el a header részét a html fájlnak. Egyszerûen csak késõn küldöd a session_start() utasítást.

[OP]Destroy-man
Posted

PHP-vel nemrég kezdtem el foglalkozni, és egy olyan problémám van, hogy a mySQL nem tudja eltárolni az üres mezõket, hanem hibát ad vissza. Az adatokat egy formbol kapja, ellenõriztem, mindent szépen megkap, viszont ha nincs érték az egyik mezõben, akkor már hiba történik, és nem tárol el semmit. :( ASP.NET + MSSQL-nél nem volt ilyen gond. MySQL-nek milyen igénye vannak e téren, és hogy tudnám megoldani, hogy elfogadja a NULL értéket is? A táblában engedve van a NULL értéke.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...