IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: urlencode/urldecode

Aktivity
Avatar
ofajfr
Člen
Avatar
ofajfr:22.8.2014 21:23

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:22.8.2014 21:26

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

Nahoru Odpovědět
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):22.8.2014 21:31

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
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
ofajfr
Člen
Avatar
ofajfr:22.8.2014 21:32
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:22.8.2014 21:33

Tak aby byli pánové spokojení :)

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

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):23.8.2014 12:43

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
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
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.