Diskuze: urlencode/urldecode

PHP PHP urlencode/urldecode American English version English version

Avatar
ofajfr
Člen
Avatar
ofajfr:

Ahojte, opravuji SFGame script, a mám problém s diakritikou.

V kódu jsem si všiml jakého si kódování který dikritiku přemění na % a čísla nevíte jak bych to kódování mohl změnit aby to fungovalo?
Zdroják:
case $ACT_SEND_CHAT :
$data = explode ( ';', $action_extra );

$msg = urlencode($da­ta[0]);

$time = new DateTime ();
$time = $time->getTimestamp ();

$recid = $data[1];

// get some ids
$qry = $db->prepare ( "SELECT user_id, guild_id FROM user_data WHERE ssid = :ssid" );
$qry->bindParam ( ':ssid', $SSID );
$qry->execute ();
$ids = $qry->fetchAll ();

// put into db
$qry = $db->prepare ("INSERT INTO guild_chat(gu­ild_id, sender_id, reciver_id, time, msg)
VALUES(:guildid, :uid, :recid, :time, :msg)");
$qry->bindParam ( ':guildid', $ids [0] ['guild_id'] );
$qry->bindParam ( ':uid', $ids [0] ['user_id'] );
$qry->bindParam ( ':recid', $recid );
$qry->bindParam ( ':time', $time );
$qry->bindParam ( ':msg', $msg );
$qry->execute ();

break;

case $ACT_GET_CHAT_H­ISTORY :

// Get guild id
$qry = $db->prepare ( "SELECT gchat_last, guild_id FROM user_data WHERE ssid = :ssid" );
$qry->bindParam ( ':ssid', $SSID );
$qry->execute ();
$udata = $qry->fetchAll ();

// get last 5 messages
$qry2 = $db->prepare ( "SELECT * FROM guild_chat WHERE guild_id = :gid ORDER BY time DESC LIMIT 5");
$qry2->bindParam ( ':gid', $udata [0] ['guild_id'] );
$qry2->execute ();
$gcdata = $qry2->fetchAll ();
/*
if($gcdata [4] ['msg_id'] > $udata [0] ['gchat_last'])
{ */
// construct message
$msg = array();
$resto = array();
foreach($gcdata as $row)
{
$qry = $db->prepare ( "SELECT user_name FROM user_data WHERE user_id = :sid" );
$qry->bindParam ( ':sid', $row['sender_id'] );
$qry->execute ();
$una = $qry->fetchAll();

// pretty time
$pt = date('G:i',$ro­w["time"]);

$msg[] = $pt . " " . $una[0]['user_na­me'].": " . urldecode($row['msg­']);
$resto[] = $row['msg_id'];
}

$msgs = implode("/", $msg);
$pitm = ";".$gcdata [0] ['msg_id'].";;";
$rest = implode("/", $resto) . "/";

// return packet
$ret = array (
"161".$msgs.$pit­m.$rest
);
/*
// loopswitch
$qry = $db->prepare ( "UPDATE user_data SET gchat_last = " . gcdata [0] ['msg_id']. " WHERE ssid = :ssid" );
$qry->bindParam ( ':ssid', $SSID );
$qry->execute ();
} */
break;
Dík za pomoc :)

 
Odpovědět 22.8.2014 21:23
Avatar
Old Account
Člen
Avatar
Odpovídá na ofajfr
Old Account:

Ked sa naucis pouzivat funkciu pre vlozenie kodu, potom ti mozno niekto pomoze.

Nahoru Odpovědět  +2 22.8.2014 21:26
"If you keep your eye on the profit, you’re going to skimp on the product. But if you focus on making really gre...
Avatar
Martin Konečný (pavelco1998):

Jen takovej dotaz, než použiješ funkci na vložení kódu... tj. script ze hry sfgame.cz? Pokud jo, tak to se zdrojáky mohou ukazovat?

 
Nahoru Odpovědět 22.8.2014 21:31
Avatar
ofajfr
Člen
Avatar
ofajfr:
case $ACT_SEND_CHAT :
$data = explode ( ';', $action_extra );

$msg = urlencode($data[0]);


$time = new DateTime ();
$time = $time->getTimestamp ();

$recid = $data[1];

// get some ids
$qry = $db->prepare ( "SELECT user_id, guild_id FROM user_data WHERE ssid = :ssid" );
$qry->bindParam ( ':ssid', $SSID );
$qry->execute ();
$ids = $qry->fetchAll ();

// put into db
$qry = $db->prepare ("INSERT INTO guild_chat(guild_id, sender_id, reciver_id, time, msg)
VALUES(:guildid, :uid, :recid, :time, :msg)");
$qry->bindParam ( ':guildid', $ids [0] ['guild_id'] );
$qry->bindParam ( ':uid', $ids [0] ['user_id'] );
$qry->bindParam ( ':recid', $recid );
$qry->bindParam ( ':time', $time );
$qry->bindParam ( ':msg', $msg );
$qry->execute ();



break;

case $ACT_GET_CHAT_HISTORY :

// Get guild id
$qry = $db->prepare ( "SELECT gchat_last, guild_id FROM user_data WHERE ssid = :ssid" );
$qry->bindParam ( ':ssid', $SSID );
$qry->execute ();
$udata = $qry->fetchAll ();

// get last 5 messages
$qry2 = $db->prepare ( "SELECT * FROM guild_chat WHERE guild_id = :gid ORDER BY time DESC LIMIT 5");
$qry2->bindParam ( ':gid', $udata [0] ['guild_id'] );
$qry2->execute ();
$gcdata = $qry2->fetchAll ();
/*
if($gcdata [4] ['msg_id'] > $udata [0] ['gchat_last'])
{ */
// construct message
$msg = array();
$resto = array();
foreach($gcdata as $row)
{
$qry = $db->prepare ( "SELECT user_name FROM user_data WHERE user_id = :sid" );
$qry->bindParam ( ':sid', $row['sender_id'] );
$qry->execute ();
$una = $qry->fetchAll();

// pretty time
$pt = date('G:i',$row["time"]);

$msg[] = $pt . " " . $una[0]['user_name'].": " . urldecode($row['msg']);
$resto[] = $row['msg_id'];
}

$msgs = implode("/", $msg);
$pitm = ";".$gcdata [0] ['msg_id'].";;";
$rest = implode("/", $resto) . "/";

// return packet
$ret = array (
"161".$msgs.$pitm.$rest
);
/*
// loopswitch
$qry = $db->prepare ( "UPDATE user_data SET gchat_last = " . gcdata [0] ['msg_id']. " WHERE ssid = :ssid" );
$qry->bindParam ( ':ssid', $SSID );
$qry->execute ();
} */
break;
 
Nahoru Odpovědět 22.8.2014 21:32
Avatar
ofajfr
Člen
Avatar
ofajfr:

Tak aby byli pánové spokojení :)

 
Nahoru Odpovědět 22.8.2014 21:33
Avatar
Ori
Člen
Avatar
Odpovídá na ofajfr
Ori:

mňa by zaujímali hodnoty, ktoré to vracia ale aj ktoré vkladáš.

 
Nahoru Odpovědět 23.8.2014 8:58
Avatar
Odpovídá na ofajfr
Martin Konečný (pavelco1998):

Nevím, kde je přesně problém, ale funkce urlencode() přemění diakritiku na procenta a znaky, ale když to proženu zpět funkcí urldecode(), tak mi to vrací písmena s diakritikou správně.

 
Nahoru Odpovědět 23.8.2014 12:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.