Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 11 odgovora
  • 3.675 pregleda

Najnovija ↓

mysql_query php4 -> php5 19.03.2009. u 21:03 · pre 214 meseci
izmenjeno 1 put, poslednji put flylord 02.07.2009. u 21:07
  1. flylord02.07.2009. u 21:07zapis iz teksta poruke
#1
Pozdrav,

imao sam jednu mysql bazu jos od 2003. godine i ta baza od 2006. vide nije koristena... tada je radila na mysql 4.1.9. i na php 4.3.10.

Ovih danas sam je prebacio na server na kome je mysql 5.0.5 i php 5.2.6.

Onda se pojavio problem, jer po postavkama php fajla iz tog vremena na serveru na kome je php 4-rka (kucni komp) dokumenat moze prikazivati podatke iz baze, a onaj server na kome je php 5-ica, php jednostavno ne procesira podatke kroz php fajl, ne prijavi nikakvu gresku i kad se ukljuci debugg, jednostavno prikaze prazan dokumenat bez $promjenjivih, jedino su td tr table i ostali klasicni html tagovi vidljivi...

Onako, googlajuci okolo mislim da je problem oko mysql_query, tj. nacina "izvlacenja" podataka iz baze. Evo dijela koda orginalnog dokumenta starog 5-6 godina:

Code:
$get_news = mysql_query("SET CHARACTER SET 'utf8'",$db);
$get_news = mysql_query("SELECT *,Article.UserId as uid, $article_catfile.ArtDesc AS CatDesc, $article_catfile.ArtIcon AS CatIcon 
                                    FROM $article_file,$article_catfile 
                                   WHERE $article_file.ArtCat = $article_catfile.ArtCat AND $article_file.ArtID = '$ArtID' LIMIT 0,1",$db);
$get_rows = mysql_fetch_array($get_news);

$date = stripslashes($get_rows[ArtDate]);
$msg = stripslashes($get_rows[ArtMsg]);
$title = stripslashes($get_rows[ArtTitle]);
$lead = stripslashes($get_rows[ArtLead]);

Ikakva pomoc? :)
Potpis
"Q" 9G - Ponosni Titin pionir
Re: mysql_query php4 -> php5 19.03.2009. u 21:53 · pre 214 meseci #2
U, pa to je baš staro... :) Odnosno, stil pisanja koda je baš "izašao iz mode". :)

Taj prvi upit "ovih dana" obično izgleda ovako: SET NAMES UTF8, i njega samo treba da izvršiš, bez potrebe za upisom rezultata u neku promenljivu.

A taj glavni upit mi deluje ok, i on bi, koliko vidim, trebao da vrati samo jedan red.

Ako hoćeš da radiš sa asocijativnim nizom koristi mysql_fetch_assoc, ili ako baš voliš mysql_fetch_array, a rezultate hoćeš da uzimaš asocijativno, kao drugi argument prosledi MYSQL_ASSOC. Za svaki slučaj, imena kolona piši pod jednostrukim navodnicima ($get_rows['ArtDate'], $get_rows['ArtMsg'], itd.).
Re: mysql_query php4 -> php5 19.03.2009. u 23:15 · pre 214 meseci #4
Posto si rekao da je to bilo na php4, pretpostavljam da promenljive nisi preuzimao iz GET/POST array-a, vec iz globala (vec ni ne znam kako se zove to :-/).

Elem, moje pitanje se svodi na sledece: odakle uzimas $ArtID?
Re: mysql_query php4 -> php5 19.03.2009. u 23:19 · pre 214 meseci #5
pored detalja koje ti je nikola vec rekao (navodnici za indexe asocijativnog niza), "set names utf8" ... upit je malo "nezgodan" .. tj, sta je sa

$article_catfile.ArtDesc, $article_catfile.ArtCat ....

jel imas te varijable? u starom php-u on bi iskulirao deo iza tacke i zamenio samo $article_catfile parce ali u 5.2 koliko se ja secam (moguce da gresim) trazice klasu $article_catfile i property ArtCat ...

odradi upit sa "xxx" . $xyz . "yyy" sintaksom - tako je mnogo manja sansa da napravis gresku ...


EDIT: sto kaze robert, proveri register_globals

EDIT: nije ti problem to mysql-a vec do php-a, izbacuje ti praznu stranu posto ne moze da isparsira stranu - da je problem do mysql-a php bi prosledio upit i vratio gresku
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: mysql_query php4 -> php5 19.03.2009. u 23:49 · pre 214 meseci #6

Na ovome serveru kod kuce sam imao register_globals = On i radilo je, kada sam podesio u php.ini register_globals = Off nije vise radilo... Znaci do toga je

Mislim da moj server admin nece dopustiti da ukljucim register_globals = On na serveru na kome mi je ovo potrebno. Da li postoji neki drugi nacin "zaobilazenja" opcije register_globals?!
Potpis
"Q" 9G - Ponosni Titin pionir
Re: mysql_query php4 -> php5 20.03.2009. u 00:30 · pre 214 meseci #7
Dinamicki kreiras varijable na osnovu podataka iz $_GET

GET: skripta.php?v1=jedan&v2=dva&v3=tri

Code:

<?php
    foreach($_GET as $var => $val) {
        ${$var} = $val;
    }
    
    
    echo $v1;
    echo $v2;
    echo $v3;
?>
Potpis
NO FATE. ONLY THE POWER OF WILL.
Re: mysql_query php4 -> php5 20.03.2009. u 08:39 · pre 214 meseci #8
Nemoj molim te ovako pisati:

Citat:
ihti: Dinamicki kreiras varijable na osnovu podataka iz $_GET

GET: skripta.php?v1=jedan&v2=dva&v3=tri

Code:

<?php
foreach($_GET as $var => $val) {
${$var} = $val;
}


echo $v1;
echo $v2;
echo $v3;
?>


Ovo je najgora moguća varijanta. Poenta isključivanja register_globals je da se ne konvertuju svi GET parametri u varijable. Zamisli ovakav query:

GET: skripta.php?article_catfile[ArtDesc]=* FROM users WHERE 1=1 --

Nisam siguran da li je ovo najbolji attack vector, ali hakeri će sigurno znati bolje i opasnije napade da urade.

Za numeričke varijable koristi recimo:
$numvar = isset($_GET['numvar']) && !is_null($_GET['numvar']) && ctype_digit($_GET['numvar']) ? $_GET['numvar'] : 0;
za string:
$stringvar = isset($_GET['stringvar']) ? mysql_real_escape_string($_GET['stringvar']) : '';
Potpis
"Common sense is not so common." - Voltaire
Re: mysql_query php4 -> php5 20.03.2009. u 13:15 · pre 214 meseci #9
ako je sysadmin dozvolio mozes da upalis register_globals iz .htaccess fajla, ali ako ikako mozes da to zaobidjes, zaobidji, register_globals je ovoooooliiiiiiiiika rupa .. dakle kao sto ti napisa shinan

Citat:

Za numeričke varijable koristi recimo:
Code:

$numvar = isset($_GET['numvar']) && !is_null($_GET['numvar']) && ctype_digit($_GET['numvar']) ? $_GET['numvar'] : 0;

za string:
Code:

$stringvar = isset($_GET['stringvar']) ? mysql_real_escape_string($_GET['stringvar']) : '';



btw, neko bi mogao ovo da vrati u php forum ili kako se vec isti zove posto ovo stvarno nema apsolutno nikakve veze sa mysql-om
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: mysql_query php4 -> php5 20.03.2009. u 13:56 · pre 214 meseci #10
Citat:
Shinhan: Nemoj molim te ovako pisati:



Procitaj post od Q_Line, trazi rjesenje da zaobidje register_globals=off, vjerovatno ne zeli da u cijeloj app mjenja $var u $_GET['var].
Ovo sto sam ja napisao je ono sto php interno uradi kada je register_globals=on.
Naravno da je ovo lose rjesenje s aspekta sigurnosti ali to u ovom slucaju nisam uzimao u obzir...
Potpis
NO FATE. ONLY THE POWER OF WILL.
Re: mysql_query php4 -> php5 21.03.2009. u 23:31 · pre 214 meseci #11

Pozdrav svima koji su odgovarali i koji su mi pomogli :) Procitao sam sve sto ste napisali i "napisao" rjesenje na zadovoljstvo svih.

Hvala jos jednom ES timu!

"Q"
Potpis
"Q" 9G - Ponosni Titin pionir
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme