arpsoft Posted February 3, 2010 Posted February 3, 2010 Ha a good_password elsõ sorába beírod, hogy: return $lang['ketjelsz_nemegy']; akkor vissza adja a megfelelõ szöveget?
kléni Posted February 3, 2010 Posted February 3, 2010 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.
arpsoft Posted February 4, 2010 Posted February 4, 2010 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.
Kiskalóz Posted February 4, 2010 Posted February 4, 2010 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.
payskin Posted February 4, 2010 Posted February 4, 2010 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. )
brunzwik Posted February 5, 2010 Posted February 5, 2010 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
payskin Posted February 5, 2010 Posted February 5, 2010 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?
brunzwik Posted February 5, 2010 Posted February 5, 2010 Na akkor az elejétől. Bocsi az előzőért. 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
kléni Posted February 5, 2010 Posted February 5, 2010 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?
payskin Posted February 6, 2010 Posted February 6, 2010 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.
kléni Posted February 6, 2010 Posted February 6, 2010 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õ 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?
payskin Posted February 8, 2010 Posted February 8, 2010 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!
arpsoft Posted February 10, 2010 Posted February 10, 2010 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){
payskin Posted February 10, 2010 Posted February 10, 2010 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
kléni Posted February 11, 2010 Posted February 11, 2010 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";} }
Kiskalóz Posted February 12, 2010 Posted February 12, 2010 É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); } }
payskin Posted February 12, 2010 Posted February 12, 2010 Kléni: be van kapcsolva a hibaüzenetek megjelenítése? Mert érzésem szerint, ha nincs találat, akkor elszáll hibával.
kléni Posted February 12, 2010 Posted February 12, 2010 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
arpsoft Posted February 12, 2010 Posted February 12, 2010 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"; } }
Sleeeeeep Posted February 21, 2010 Posted February 21, 2010 (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? Vagy már késő van és csak én vagyok láma nem'tom 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 February 21, 2010 by Sleeeeeep
kléni Posted February 21, 2010 Posted February 21, 2010 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)
arpsoft Posted February 22, 2010 Posted February 22, 2010 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 February 28, 2010 Posted February 28, 2010 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now