offline
- FoxVanis
- Ugledni građanin
- Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
- Pridružio: 13 Jun 2010
- Poruke: 307
- Gde živiš: Subotica
|
Napisano: 08 Maj 2013 10:45
SVAKA ČAST! Hvala ti!
Evo i kompletnog koda:
function data_save($table_name, $array_row_name, $array_values)
{
if(count($array_row_name)==count($array_values))
{
global $DBprefix;
array_walk($array_row_name, function(&$value, $key) {$value = "`" .$value. "`";});
array_walk($array_values, function(&$value, $key) {$value = "'".mysql_real_escape_string($value)."'";});
$data_sql =mysql_query("INSERT INTO `".$DBprefix.$table_name."` (".join(', ',$array_row_name).") VALUES (".join(', ', $array_values).")") or die(mysql_error());
return $data_sql ? true : false;
}else{return die('PHP Error: $array_row_name and $array_values must have identical number of array!<br />-Data not saved into MySQL!');}
}
Super radi. Ovo se zove timski rad.
Mogli bi jednom organizovati druženje programera negde u nekom gradu.
Dopuna: 08 Maj 2013 13:15
NAPREDNI RENDER ZA PRETVARANJE HTML U BB KODOVE
Pošto veoma često koristim razne editore u svojim CMS sistemima, rešio sam da napravim jedan render za BB kodove, odnosno da pretvorim HTML u BB kodove. Ovo je veoma korisno jer se baza podataka kompresuje i dozvoljavaju se samo određeni HTML elementi koji su veoma čisti i precizno raspoređeni unutar sadržaja. Postoje ovakva Javascript rešenja ali ja kombinujem i jedno i drugo.
HTML u BB
/*
* HTML SELEKTOR
* Ova opcija čisti sadržaje od neželjenih tagova i dozvoljava samo one koje sam odredim
* Poziv: clear_html($content, $tags)
*/
function clear_html($content, $tags)
{
$content = preg_replace(array('@<body[^>]*?>.*?</body>@siu','@<head[^>]*?>.*?</head>@siu','@<style[^>]*?>.*?</style>@siu','@<script[^>]*?>.*?</script>@siu','@<object[^>]*?>.*?</object>@siu','@<applet[^>]*?>.*?</applet>@siu','@<noframes[^>]*?>.*?</noframes>@siu','@<noscript[^>]*?>.*?</noscript>@siu','@<noembed[^>]*?>.*?</noembed>@siu','@</?((address)|(blockquote)|(center)|(del))@iu','@</?((div)|(h[1-9])|(ins)|(isindex)|(p)|(pre))@iu','@</?((dir)|(dl)|(dt)|(dd)|(li)|(menu)|(ol)|(ul))@iu','@</?((table)|(th)|(td)|(caption))@iu','@</?((form)|(button)|(fieldset)|(legend)|(input))@iu','@</?((label)|(select)|(optgroup)|(option)|(textarea))@iu','@</?((frameset)|(frame)|(iframe))@iu'),array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "$0", "$0", "$0", "$0", "$0", "$0","$0"), $content ); $content=strip_tags($content, $tags); return $content;
}
/*
* HTML U BB CODE
* Ova opcija pretvara HTML kod u BB kod
* Poziv: html2bb($content);
*/
function html2bb($html2bb)
{
// allaw some HTML tag's
$html2bb=clear_html($html2bb, '<a><b><i><u><em><li><ul><p><ol><div><strong><font><span><h1><h2><h3><h4><h5><h6><br><em><center><cite><code><tt><big><small><img>');
$pre = array();$i=0;
while ($pre_str = stristr($html2bb,'<pre>'))
{
$pre_str = substr($pre_str,0,strpos($pre_str,'</pre>')+6);
$html2bb = str_replace($pre_str, "***pre_string***$i", $html2bb);
$pre[$i] = str_replace("\r\n","\n",$pre_str);
$i++;
}
$html2bb = str_replace('<<<<', '**$@$**<<', $html2bb);
$html2bb = str_replace('>>>>', '>>**@^@**', $html2bb);
$html2bb = str_replace('<<<', '**$@$**<', $html2bb);
$html2bb = str_replace('>>>', '>**@^@**', $html2bb);
$html2bb = str_replace('<<', '**$@$**', $html2bb);
$html2bb = str_replace('>>', '**@^@**', $html2bb);
$html2bb = str_replace('***^***', '[[', $html2bb);
$html2bb = str_replace('**@^@**', ']]', $html2bb);
// Auto close opened tags
$tags_to_close = array('<ul>','<li>','<ol>','<b>','<i>','<u>','<em>','<strong>','<center>','<div>','<span>','<font>','<h1>','<h2>','<h3>','<h4>','<h5>','<h6>');
foreach ($tags_to_close as $key => $value)
{
$open = substr_count($html2bb, $value);
$close_tag = '</'.substr($value, 1);
while (substr_count($html2bb, $close_tag) < $open){$html2bb.= $close_tag;}
}
$check_string = preg_replace("/\<(.+)\/\>/Ui","",$html2bb); // self-closers
$check_string = preg_replace("/\<\!--(.+)--\>/i","",$check_string); // we support comments!
$removers = array('<body>','</body>','<html>','</html>','<script>','</script>','<style>','</style>','<title>','</title>','</li>','</img>'); // Remove some tags
$check_string = str_replace($removers, '', $check_string);
$html2bb = str_replace($removers, '', $check_string);
// let's remove all the linefeeds, unix
$html2bb = str_replace(chr(10), '', $html2bb); // "\n"
// and Mac (windoze uses both)
$html2bb = str_replace(chr(13), '', $html2bb); // "\r"
// 'ordinary' transformations..
$html2bb = str_replace('<br>', '<br />', $html2bb);
// Replace special tags
$html2bb = preg_replace("/\<font style\=\"color:(.+?);\"\>(.+?)\<\/font\>/is", "[color=$1]$2[/color]", $html2bb);
$html2bb = preg_replace("/\<span style\=\"font-size:(.+?)%;\"\>(.+?)\<\/span\>/is", "[size=$1]$2[/size]", $html2bb);
$html2bb = preg_replace("/\<div align\=\"left\"\>(.+?)\<\/div\>/is", "[left]$1[/left]", $html2bb);
$html2bb = preg_replace("/\<div align\=\"right\"\>(.+?)\<\/div\>/is", "[right]$1[/right]", $html2bb);
$html2bb = preg_replace("/\<div align\=\"center\"\>(.+?)\<\/div\>/is", "[center]$1[/center]", $html2bb);
$html2bb = preg_replace("/\<a target\=\"_blank\" href\=\"(.+?)\"\>(.+?)\<\/a\>/is", "[url=$1]$2[/url]", $html2bb);
$html2bb = preg_replace("/\<a target\=\"_blank\" href\=\"mailto:(.+?)\"\>(.+?)\<\/a\>/is", "[email]$2[/email]", $html2bb);
$html2bb = preg_replace("/\<a href\=\"mailto:(.+?)\"\>(.+?)\<\/a\>/is", "[email]$2[/email]", $html2bb);
$html2bb = preg_replace("/\<img src\=\"(.+?)\"\>/is", "[img]$1[/img]", $html2bb);
$html2bb = preg_replace("/\<p\>(.+?)\<\/p\>/is", "[p]$1[/p]", $html2bb);
$html2bb = preg_replace('/"(.+?)"/is', "[iss]$1[/iss]", $html2bb); // [iss] Ivijan-Stefan Stipic™
// cleer options into tag
$html2bb = preg_replace("/\<small (.+?)\>(.+?)\<\/small\>/is", "[small]$2[/small]", $html2bb);
$html2bb = preg_replace("/\<font (.+?)\>(.+?)\<\/font\>/is", "[font]$2[/font]", $html2bb);
$html2bb = preg_replace("/\<span (.+?)\>(.+?)\<\/span\>/is", "[span]$2[/span]", $html2bb);
$html2bb = preg_replace("/\<strong (.+?)\>(.+?)\<\/strong\>/is", "[b]$2[/b]", $html2bb);
$html2bb = preg_replace("/\<div (.+?)\>(.+?)\<\/div\>/is", "[div]$2[/div]", $html2bb);
$html2bb = preg_replace("/\<big (.+?)\>(.+?)\<\/big\>/is", "[big]$2[/big]", $html2bb);
$html2bb = preg_replace("/\<a (.+?)\>(.+?)\<\/a\>/is", "[link]$2[/link]", $html2bb);
$html2bb = preg_replace("/\<li (.+?)\>(.+?)\<\/li\>/is", "[li]$2[/li]", $html2bb);
$html2bb = preg_replace("/\<ul (.+?)\>(.+?)\<\/ul\>/is", "[ul]$2[/ul]", $html2bb);
$html2bb = preg_replace("/\<ol (.+?)\>(.+?)\<\/ol\>/is", "[ol]$2[/ol]", $html2bb);
$html2bb = preg_replace("/\<h1 (.+?)\>(.+?)\<\/h1\>/is", "[h1]$2[/h1]", $html2bb);
$html2bb = preg_replace("/\<h2 (.+?)\>(.+?)\<\/h2\>/is", "[h2]$2[/h2]", $html2bb);
$html2bb = preg_replace("/\<h3 (.+?)\>(.+?)\<\/h3\>/is", "[h3]$2[/h3]", $html2bb);
$html2bb = preg_replace("/\<h4 (.+?)\>(.+?)\<\/h4\>/is", "[h4]$2[/h4]", $html2bb);
$html2bb = preg_replace("/\<h5 (.+?)\>(.+?)\<\/h5\>/is", "[h5]$2[/h5]", $html2bb);
$html2bb = preg_replace("/\<h6 (.+?)\>(.+?)\<\/h6\>/is", "[h6]$2[/h6]", $html2bb);
$html2bb = preg_replace("/\<tt (.+?)\>(.+?)\<\/tt\>/is", "[tt]$2[/tt]", $html2bb);
$html2bb = preg_replace("/\<em (.+?)\>(.+?)\<\/em\>/is", "[b]$2[/b]", $html2bb);
$html2bb = preg_replace("/\<p (.+?)\>(.+?)\<\/p\>/is", "[p]$2[/p]", $html2bb);
$html2bb = preg_replace("/\<b (.+?)\>(.+?)\<\/b\>/is", "[b]$2[/b]", $html2bb);
$html2bb = preg_replace("/\<i (.+?)\>(.+?)\<\/i\>/is", "[i]$2[/i]", $html2bb);
$html2bb = preg_replace("/\<u (.+?)\>(.+?)\<\/u\>/is", "[u]$2[/u]", $html2bb);
$html2bb = preg_replace("/\<hr (.+?)\>/is", "<hr>", $html2bb);
$html2bb = preg_replace("/\<img (.+?)\>/is", " ", $html2bb);
$html2bb = str_replace(';">', ']', $html2bb);
$html2bb = str_replace('"', '', $html2bb);
$find_html=array('<hr>','<center>','</center>','<strong>','</strong>','<b>','</b>','<div>','</div>','<em>','</em>','<i>','</i>','<u>','</u>','<big>','</big>','<small>','</small>','<li>','</li>','<ul>','</ul>','<ol start=','</ol>','<cite>','</cite>','<code>','</code>','<tt>','</tt>','<p>','</p>','<a>','</a>');
$insert_bb=array('[hr]','[center]','[/center]','[b]','[/b]','[b]','[/b]','[div]','[/div]','[i]','[/i]','[i]','[/i]','[u]','[/u]','[big]','[/big]','[small]','[/small]','[li]','[/li]','[list]','[/list]','[list=','[/list]','[quote]','[/quote]','[code]','[/code]','[tt]','[/tt]','[p]','[/p]','[link]','[/link]');
$html2bb = str_replace($find_html, $insert_bb, $html2bb);
// Debuger and fixer
$html2bb=clear_html($html2bb, '<br>');
$html2bb = str_replace('[/li]<br />', "[/li]\r\n", $html2bb);
$html2bb = str_replace('[list]<br />', "[list]\r\n", $html2bb);
$html2bb = str_replace('[/list]<br />', "[/list]\r\n", $html2bb);
$html2bb = str_replace('<br />[div]', "\r\n[div]", $html2bb);
$html2bb = str_replace('[/div]<br />', "[/div]\r\n", $html2bb);
$html2bb = str_replace('<br />', "[br]\r\n", $html2bb);
$html2bb = str_replace(' ', '[sp]', $html2bb);
$html2bb = str_replace('***^***', '[[', $html2bb);
$html2bb = str_replace('**@^@**', ']]', $html2bb);
$html2bb = str_replace(' <', '[', $html2bb);
$html2bb = str_replace(' >', ']', $html2bb);
$html2bb = str_replace('>', ']', $html2bb);
$html2bb = str_replace('<', '[', $html2bb);
$html2bb = str_replace('-->', '--]', $html2bb); // comments within comments!
$html2bb = str_replace('/>', '/]', $html2bb); // self-closers
$html2bb = str_replace('%]', ']', $html2bb);
$html2bb = str_replace(' ', ' ', $html2bb);
$html2bb = str_replace("[iss]", '"', $html2bb);
$html2bb = str_replace("[/iss]", '"', $html2bb);
// Stop other HTML tag's
return $html2bb;
}
Poziv je veoma jednostavan i sve radi automatizovano:
// Sadržaj sa HTML tagovima
$string='<a href="http://www.google.com">Ovo je link <b>Googla</b></a><h2>POSETITE</h2>';
// Prebaci u BB kodove
echo html2bb($string);
NAPREDNI RENDER ZA PRETVARANJE BB U HTML KODOVE
Sad pošto smo napravili BB kodove trebamo ih vratiti u HTML izdanje:
https://www.mycity.rs/must-login.png
Poziv je veoma lak samo je potrebno ubaciti umesto $string tekst sa BB kodovima i to je to.
// Prebaci u HTML tagove
echo bb2html($string);
Par dana sam radio na ovim skriptama i mislim da sam sve obuhvatio što sam mogao. Voleo bih da još neko ovo prouči i da se okači neka minimalnija verzija jer sam ga minimalizovao koliko sam mogao. Probao sam razne kombinacije i ovo mi je najidealnje izgledalo. Ako neko ima vremena i volje, neka prekopira u svoj PHP i neka isproba pa da čujem mišljenje. Za sada mi lepo koristi i stavljam svoj potpis da radi lepo. Voleo bih i da u koliko sam nešto propustio, ako treba dodati nešto ili menjati - slobodno napišite. Neka se ova skripta razvija dalje. Hvala!
Dopuna: 13 Maj 2013 14:00
PASSWORD GENERATOR
Mnogi od nas se boje za bezbednost svog portala. E sada ako pravimo svoj portal u PHP i hoćemo da obezbedimo naše korisnike od nepoželjnih upada moramo imati jedinstveni koding. Naročito ako svoj CMS sistem multipliciramo na raznim hostinzima.
/*
* GENERATOR ŠIFRE
* Ova opcija generiše specijalan jedinstveni ključ za registraciju i logovanje usera
* Poziv: password($password,$email,$config->SecretKey);
*/
function password($generate,$email,$secretkey)
{
if($email)
{
if(!empty($generate) & !empty($secretkey))
{
$passw = md5(md5(md5('fk15wet546rL\a1sd 564da6&t').md5('-m4hqAI#NdWPzPlaZDYXDCA+JVIjzERy').md5(trim($email))).md5(trim($secretkey)).md5(trim($generate)));
$generate = md5($passw);
return $generate;
}else{return false;}
}else{return false;}
}
Poziv je jednostavan. Sve što treba jeste da u toku logovanja kao username koristite email, ubacite šifru i da imate svoj zaseban ključ.
$email='mojmail@gmail.com'
$password='1234';
$secretkey='a6d+5f+d65j';
echo password($password,$email,$secretkey);
$secretkey sami napišite zatvorenih očiju i on je fiksan za sve korisnike. Ako isti svoj sajt stavljate na drugi hosting kao zaseban novi sajt promenite taj kod pre registracije novih korisnika.
Prednost ovog MD5 koda je što nemože da se dekodira i zaseban je za svakog korisnika. Ne postoji mogućnost prebacivanja ovog koda na drugog korisnika radi logovanja.
|