Heim php教程 php手册 教你用wechat类玩转微信公众号

教你用wechat类玩转微信公众号

Jun 07, 2016 am 11:36 AM

通过wechat类教你实现大部分常见功能,包括查天气,公交路线,机器人的自动回复等。。。记得点个赞哦!
没有公众号可以用的可以用自己的微信号申请一个测试号,功能还是挺全的<?php <br /> <br> namespace Home\Controller;<br> <br> use Think\Controller;<br> <br> <br> class IndexController extends Controller {<br> <br>     public function index() {<br>         $options = array(<br>             'token' => 'ruanqin', // 填写你设定的token<br>             'appid' => '1111111', // 填写高级调用功能的appid<br>             'appsecret' => '11111111' // 填写高级调用功能的密钥<br>         );<br> //这两个类我已放到附件,有需要可以下载<br>         Vendor('weixin.Wechat');<br>         Vendor('weixin.Snoopy');<br>         $weObj = new \Wechat($options);<br> <br>         $weObj->valid(); // 验证key<br>            //获取菜单操作:<br>        $menu = $weObj->getMenu();<br>           //设置菜单<br>        $newmenu =  array(<br>            <br>             'button' => array (<br>                   0 => array (<br>                         'name' => '扫码',<br>                         'sub_button' => array (<br>                             0 => array (<br>                               'type' => 'scancode_waitmsg',<br>                               'name' => '扫码带提示',<br>                               'key' => 'rselfmenu_0_0',<br>                         ),<br>                             1 => array (<br>                               'type' => 'scancode_push',<br>                               'name' => '扫码推事件',<br>                               'key' => 'rselfmenu_0_1',<br>                         ),<br>                     ),<br>                       ),<br>                   1 => array (<br>                     'name' => '发图',<br>                         'sub_button' => array (<br>                             0 => array (<br>                               'type' => 'pic_sysphoto',<br>                               'name' => '系统拍照发图',<br>                               'key' => 'rselfmenu_1_0',<br>                             ),<br>                             1 => array (<br>                               'type' => 'pic_photo_or_album',<br>                               'name' => '拍照或者相册发图',<br>                               'key' => 'rselfmenu_1_1',<br>                             ),<br>                              2 => array (<br>                             'type' => 'view',<br>                             'name' => 'baidu',<br>                             'url' => 'http://www.baidu.com',<br>                             'key' => 'rselfmenu_1_2',<br>                             ),<br>                     ),<br>                       ),<br>                       2 => array (<br>                         'type' => 'location_select',<br>                         'name' => '发送位置',<br>                         'key' => 'rselfmenu_2_0'<br>                       ),<br>                  <br>                     ),<br>          <br>           );<br>    $result = $weObj->createMenu($newmenu);<br> <br> //获得用户发送过来的消息的类型,有"text","music","image"等<br> $type = $weObj->getRev()->getRevType();<br> switch($type) {<br>     case \Wechat::MSGTYPE_TEXT:<br>             //获得用户发送过来的文字消息内容<br>             $content=$weObj->getRev()->getRevContent();<br>             //从消息的结尾数第二个字开始截取,截取两个字<br>             $str = mb_substr($content,-2,2,"UTF-8");<br>             //从消息的开头开始,截掉末尾的两个字,便得关键字。<br>             $str_key = mb_substr($content,0,-2,"UTF-8");<br>             //然后加以判断是否为关键字,是否为空,符合要求则调用函数查询翻译数据<br>             if($str == '翻译' && !empty($str_key)) {<br>                 $url1="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=9peNkh97N6B9GGj9zBke9tGQ&q={$str_key}&from=auto&to=auto";//百度翻译地址<br>                 //实例化采集类<br>                 $spy=new \Snoopy;<br>                 //获取采集来的数据<br>                 $spy->fetch($url1);<br>                 //将结果赋给$con_json<br>                 $con_json=$spy->results;<br>                 //json解析,转换为object对象类型<br>                 $transon=json_decode($con_json);<br>                 //读取翻译内容<br>                 $con_str = $transon->trans_result[0]->dst;<br>                 //以文字的形式输出结果<br>                 $weObj->text("{$con_str}")->reply();<br>             }<br>             //判断是否为关键字,是否为空,符合要求则调用函数查询书本数据<br>             if($str=='书本' && !empty($str_key)) {                              <br>                 $url="http://222.206.65.12/opac/search_rss.php?dept=ALL&title={$str_key}&doctype=ALL&lang_code=ALL&match_flag=forward&displaypg=20&showmode=list&orderby=DESC&sort=CATA_DATE&onlylendable=no";<br>                 $spp=new \Snoopy;<br>                 $spp->fetch($url);<br>                 $fa=$spp->results;<br>                 //将采集获取的XML数据转换成object对象类型<br>                 $f=simplexml_load_string($fa);<br>                 $da1=$f->channel->item[0]->title;<br>                 $da2=$f->channel->item[1]->title;<br>                $da3=$f->channel->item[2]->title;      <br>                $weObj->text("{$da1}\n{$da2}\n{$da3}")->reply();<br>             }<br>                //判断公交路线<br>                  if($str=='公交' && !empty($str_key)){<br>                     <br>                   $strbus=explode(',',$str_key);<br>                  $ch = curl_init();<br>                 $url = "http://apis.baidu.com/apistore/bustransport/buslines?city={$strbus[0]}&busNo={$strbus[1]}";<br>                 $header = array(<br>                     'apikey: 这里的apikey自己去百度APIstore去注册,免费的!' <br>           );<br>                 // 添加apikey到header<br>                 curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);<br>                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>                 // 执行HTTP请求<br>                 curl_setopt($ch , CURLOPT_URL , $url);<br>                 $res = curl_exec($ch);<br>             <br>                $b=json_decode($res);<br>                $a=$b->retData->result;<br>                $c=simplexml_load_string($a);<br>                $d=$c->lines->line[1]->stats;<br>                $rq=explode(';',$d);<br>                $ww=implode('->',$rq);<br>                $weObj->text("{$ww}")->reply();<br>                 <br>                 }<br>              //景点查询<br>      <br>                  if($str=='景点' && !empty($str_key)){<br>                     <br>                  <br>                 $ch = curl_init();<br>                      $url = "http://apis.baidu.com/apistore/attractions/spot?id={$str_key}&output=json";<br>                 $header = array(<br>                     'apikey: <b>同上</b>',<br>                 );<br>                 // 添加apikey到header<br>                 curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);<br>                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>                 // 执行HTTP请求<br>                 curl_setopt($ch , CURLOPT_URL , $url);<br>                 $res = curl_exec($ch);<br>             <br>                $a=json_decode($res);<br>                $name=$a->result->name;<br>                $phone=$a->result->telephone; <br>                $abstract=$a->result->abstract; <br>                $description=$a->result->description; <br>                $price=$a->result->ticket_info->price;<br>                $open_time=$a->result->ticket_info->open_time; <br>                      $b="景点名:{$name}\n景点联系电话:{$phone}\n价格:{$price}\n开放时间:{$open_time}\n景点详情:{$abstract}{$description}";<br>                 $weObj->text("{$b}")->reply();     <br>                 <br>                 }<br>   //这里做了一个健康的资讯信息查询,程序员嘛健康还是挺重要的<br>                 if($str=='健康' && !empty($str_key)){<br>                     $url = 'http://apis.baidu.com/yi18/lore/loreclass?id=1';<br>                     $header = array(<br>                         'apikey: 。。。自己申请。。。。。',<br>                     ); <br>                     $thisres=$this->curl($url,$header);<br>                    $a=$this->curl($url,$header);<br>                    $thisres=$a->yi18;  <br>                     for ($i=0; $i                          $q=$thisres[$i]->id;<br>                         $w=$thisres[$i]->name;<br>                         $qq.='';<br>                         $qq.="序号:{$q}--标题:{$w}\n";<br>                     }<br>                      $weObj->text("{$qq}\n请选择您想了解的信息的序号,如:1标题")->reply();<br>                 <br>                 <br>                 }<br>                    if($str=='标题' && !empty($str_key)){<br>                       $ch = curl_init();<br>                        $url = "http://apis.baidu.com/yi18/lore/list?page=1&limit=10&type=id&id={$str_key}";<br>                         $header = array(<br>                             'apikey: 同上',<br>                         ); <br>                         curl_setopt($ch, CURLOPT_HTTPHEADER  , $header);<br>                         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br>                         // 执行HTTP请求<br>                         curl_setopt($ch , CURLOPT_URL , $url);<br>                         $res = curl_exec($ch);<br>                         $b=json_decode($res);<br>                        <br>                          $thisres2=$b->yi18; <br>                          foreach ($thisres2 as $key => $value) {<br>                                         $q=$thisres2[$key]->id;<br>                                         $w=$thisres2[$key]->title;<br>                                         $qq.='';<br>                                         $qq.="id:{$q}--信息:{$w}\n";<br>                           } <br>                                     <br>                      $weObj->text("{$qq}\n请选择您想了解的信息的id,如:18069信息")->reply();<br>                     <br>                     }<br>                     if($str=='信息' && !empty($str_key)){<br>                     <br>                     $url = "http://apis.baidu.com/yi18/lore/detail?id={$str_key}";<br>                     $header = array(<br>                         'apikey: ',<br>                     ); <br>                     $a=$this->curl($url,$header);<br>                      $thisres=$a->yi18; <br>          <br>                         $q=$thisres->message;<br>                         $w=$thisres->title;<br>                         //$qq='标题.$w.正文.$q';<br>                       <br>                         <br>                         $qq="标题:{$w}\n正文:{$q}";<br>                         $str=str_replace("<strong>","",$qq);<br>                         $ww=strip_tags($str);<br>                         $weObj->text("{$ww}")->reply();<br>                     <br>                     <br>                     }<br>                                             <br> <br>     <br>             //天气查询<br>             if($str == '天气' && !empty($str_key)) {<br>                 $url="http://api.map.baidu.com/telematics/v2/weather?location={$str_key}&ak=同上";<br>                 $sp=new \Snoopy;<br>                 $sp->fetch($url);<br>                 $l_xml=$sp->results;<br>                 $f=simplexml_load_string($l_xml);<br>                 $city=$f->currentCity;<br>                 $da1=$f->results->result[0]->date;<br>                 $da2=$f->results->result[1]->date;<br>                $da3=$f->results->result[2]->date;     <br>                 $w1=$f->results->result[0]->weather;<br>                 $w2=$f->results->result[1]->weather;<br>                $w3=$f->results->result[2]->weather;       <br>                 $p1=$f->results->result[0]->wind;<br>                 $p2=$f->results->result[1]->wind;<br>                $p3=$f->results->result[2]->wind;<br>                 $q1=$f->results->result[0]->temperature;<br>                 $q2=$f->results->result[1]->temperature;<br>                $q3=$f->results->result[2]->temperature;<br>                $k1=$f->results->result[0]->dayPictureUrl; <br>                $k2=$f->results->result[1]->dayPictureUrl;<br>                $k3=$f->results->result[2]->dayPictureUrl;    <br>                 $d1=$city.$da1.$w1.$p1.$q1;<br>                 $d2=$city.$da2.$w2.$p2.$q2;<br>                 $d3=$city.$da3.$w3.$p3.$q3;<br>                 $weObj->text("{$d1}\n{$d2}\n{$d3}")->reply();<br>             }<br> <br>             //剩下的任务就交给机器人自己去完成吧!;<br>            //这里我使用的是图灵机器人,通过我女朋友和机器人聊天实验表明还是付费的机器人比较聪明,免费的有点傻傻的,所以土豪们可以选择付费的,按条数付费的<br>             <br>             else {<br>              <br>                  $strurl="http://www.tuling123.com/openapi/api?key=自己申请个key吧&info={$content}";<br>                 $xhy=new \Snoopy;<br>                 $xhy->fetch($strurl);<br>                 $x_json=$xhy->results;<br>                 $strjson=json_decode($x_json);<br>                 //$a=var_dump($strjson);<br>                 $contentStr = $strjson->text;<br>                 //$weObj->text("{$contentStr}")->reply();<br>                 $weObj->text("{$contentStr}")->reply();<br>             }<br>             break;<br> <br>     case \Wechat::MSGTYPE_LOCATION:<br>                 //接收消息的地理位置<br>                 $arr1=$weObj->getRev()->getRevGeo();<br>                 $snoopy=new \Snoopy;<br>                 $url="http://api.map.baidu.com/telematics/v2/distance?waypoints=填你的位置的经纬度;{$arr1['x']},{$arr1['y']}&ak=同上";<br>                 $snoopy->fetch($url);<br>                 $lines_string=$snoopy->results; <br>                 $fk=simplexml_load_string($lines_string);<br>                 $juli=$fk->results->distance;<br>                 $contentstring="你和我的距离有{$juli}米远";<br>                 $weObj->text("{$contentstring}")->reply();<br>             break;<br>     //接受图片回复文字,也可以回复图片,你们自由发挥吧<br>     case \Wechat::MSGTYPE_IMAGE:<br>                 $b=" ";<br>                 $a=rand(1,3);<br>                  switch ($a)<br>                  {case 1;<br>                  $b="你傻逼啊,发这么二的图片";<br>                  break;<br>                  case 2;<br>                  $b="跟你一样丑";<br>                  break;<br>                  default;<br>                  $b="啊,我的天哪";    <br>                  }                                                                       <br>                 $weObj->text("哈哈我知道这是图片\n:{$b}")->reply();<br>                 //exit; <br>             break;<br>     //实现首次关注回复功能<br>     case \Wechat::MSGTYPE_EVENT:<br>             $msgEvent=$weObj->getRev()->getRevEvent();<br>            <br>             $weObj->text("感谢您关注阮琴专用测试版公众号\n查天气:城市+天气,如广州天气\n翻译:字词+翻译,如好翻译\n测距:发送位置\n查书:书名+书本,如php书本\n听歌:回复音乐\n查公交路线,如杭州,151公交\n健康知识:任意字+健康,如,查健康\n景点查询:景点名(请使用拼音)+景点如xihu景点\n还可选择发送图片,搞笑也会来和大家聊天哦!\n更多内容,敬请期待...")<br>                    ->reply();<br>             break;<br>     <br>     default:<br>             $weObj->text("查天气:城市+天气,如广州天气\n翻译:字词+翻译,如好翻译\n测距:发送位置\n查书:书名+书本,如php书本\n听歌:回复音乐\n还可选择发送图片,谢谢你的关注,更多内容,敬请期待...")->reply();<br>  <br> }<br>     }<br>    <br> }     </strong>

附件 weixin.zip ( 20.27 KB 下载:203 次 )

AD:真正免费,域名+虚机+企业邮箱=0元

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Es gibt Gerüchte, dass „das iPhone 16 WeChat möglicherweise nicht unterstützt', und Apples technischer Berater in China sagte, dass man mit Tencent über App-Store-Provisionen kommuniziert Es gibt Gerüchte, dass „das iPhone 16 WeChat möglicherweise nicht unterstützt', und Apples technischer Berater in China sagte, dass man mit Tencent über App-Store-Provisionen kommuniziert Sep 02, 2024 pm 10:45 PM

Vielen Dank an die Internetnutzer Qing Qiechensi, HH_KK, Satomi Ishihara und Wu Yanzu aus Südchina für die Übermittlung von Hinweisen! Laut Nachrichten vom 2. September gibt es aktuelle Gerüchte, dass „das iPhone 16 WeChat möglicherweise nicht unterstützt.“ Als Reaktion darauf antwortete ein Reporter von Shell Finance bei Apples offizieller Hotline, ob iOS-Systeme oder Apple-Geräte weiterhin unterstützt werden könnten Verwenden Sie WeChat und WeChat. Die Frage, ob es weiterhin im Apple App Store gelistet und heruntergeladen werden kann, erfordert eine Kommunikation und Diskussion zwischen Apple und Tencent, um die zukünftige Situation zu bestimmen. Software App Store und WeChat Problembeschreibung Der technische Berater des Software App Store wies darauf hin, dass Entwickler möglicherweise Gebühren zahlen müssen, um Software im Apple Store bereitzustellen. Ab einer bestimmten Anzahl an Downloads muss Apple für weitere Downloads entsprechende Gebühren zahlen. Apple kommuniziert aktiv mit Tencent,

Deepseek Image Generation Tutorial Deepseek Image Generation Tutorial Feb 19, 2025 pm 04:15 PM

Deepseek: Ein leistungsstarkes Werkzeug für KI -Bildgenerierung! Deepseek selbst ist kein Werkzeug zur Bildgenerierung, aber seine leistungsstarke Kerntechnologie unterstützt viele KI -Malwerkzeuge. Möchten Sie wissen, wie Sie Deepseek verwenden, um Bilder indirekt zu generieren? Bitte lesen Sie weiter! Generieren Sie Bilder mit Deepseek-basierten KI-Tools: In den folgenden Schritten werden die folgenden Tools verwendet. Wählen Sie den Zeichnungsmodus aus: Wählen Sie "AI -Zeichnung" oder eine ähnliche Funktion aus und wählen Sie den Bildtyp entsprechend Ihren Anforderungen wie "Anime Avatar", "Landschaft" aus, "Landschaft".

Mit der Angelegenheit vertraute Personen antworteten, dass „WeChat das Apple iPhone 16 möglicherweise nicht unterstützt': Gerüchte sind Gerüchte Mit der Angelegenheit vertraute Personen antworteten, dass „WeChat das Apple iPhone 16 möglicherweise nicht unterstützt': Gerüchte sind Gerüchte Sep 02, 2024 pm 10:43 PM

Gerüchte, dass WeChat das iPhone 16 unterstützt, wurden entlarvt. Vielen Dank an die Internetnutzer Xi Chuang Jiu Shi und HH_KK für die Übermittlung von Hinweisen! Laut Nachrichten vom 2. September gibt es heute Gerüchte, dass WeChat das iPhone 16 möglicherweise nicht unterstützt. Sobald das iPhone auf das iOS 18.2-System aktualisiert wird, kann es WeChat nicht mehr verwenden. Laut „Daily Economic News“ erfuhren mit der Angelegenheit vertraute Personen, dass es sich bei diesem Gerücht um ein Gerücht handelt. Antwort von Apple: Laut Shell Finance antwortete der technische Berater von Apple in China, dass die Frage, ob WeChat weiterhin auf iOS-Systemen oder Apple-Geräten genutzt werden könne und ob WeChat weiterhin im Apple App Store gelistet und heruntergeladen werden dürfe, geklärt werden müsse Nur durch Kommunikation und Diskussion können wir die zukünftige Situation bestimmen. Derzeit kommuniziert Apple aktiv mit Tencent, um zu bestätigen, ob Tencent dies auch weiterhin tun wird

Gateio Chinesische offizielle Website Gate.io Trading Platform Website Gateio Chinesische offizielle Website Gate.io Trading Platform Website Feb 21, 2025 pm 03:06 PM

Gate.io, eine 2013 gegründete führende Kryptowährungs -Handelsplattform, bietet chinesischen Nutzern eine vollständige offizielle chinesische Website. Die Website bietet eine breite Palette von Dienstleistungen, darunter Spot -Handel, Futures -Handel und -kredite, und bietet besondere Funktionen wie chinesische Schnittstelle, reichhaltige Ressourcen und Community -Unterstützung.

Liste der Bearbeitungsgebühren für die OKX -Handelsplattform Liste der Bearbeitungsgebühren für die OKX -Handelsplattform Feb 15, 2025 pm 03:09 PM

Die OKX -Handelsplattform bietet eine Vielzahl von Zinssätzen, einschließlich Transaktionsgebühren, Auszahlungsgebühren und Finanzierungsgebühren. Bei Spot -Transaktionen variieren die Transaktionsgebühren je nach Transaktionsvolumen und VIP -Ebene und übernehmen das "Market Maker -Modell", dh der Markt, für jede Transaktion eine niedrigere Handhabungsgebühr. Darüber hinaus bietet OKX eine Vielzahl von Futures -Verträgen an, darunter Währungsstandardverträge, USDT -Verträge und Lieferverträge, und die Gebührenstruktur jedes Vertrags ist ebenfalls unterschiedlich.

Sesam Open Door Login Registrierung Eingangstor Sesam Open Door Login Registrierung Eingangstor Mar 04, 2025 pm 04:51 PM

Gate.io (Sesam Open Door) ist die weltweit führende Kryptowährungsprüfung. Das Tutorial umfasst Schritte wie Kontoregistrierung und Anmeldung, KYC -Zertifizierung, Fiat -Währung und digitale Währungsaufladung, Handelspaarauswahl, Grenz-/Markttransaktionsbestellungen sowie Bestellungen und Transaktionsaufzeichnungen, wodurch Sie schnell auf der Gate.IO -Plattform für den Kryptowährungshandel beginnen. Egal, ob ein Anfänger oder ein Veteran, Sie können von diesem Tutorial profitieren und die Handelsfähigkeiten von Gate.io problemlos beherrschen.

Gateio Exchange App Old Version Gateio Exchange App Old Version Download Kanal Gateio Exchange App Old Version Gateio Exchange App Old Version Download Kanal Mar 04, 2025 pm 11:36 PM

Gateio Exchange-App-Kanäle für alte Versionen, die offizielle Anwendungsmärkte von Drittanbietern, Forum-Communities und andere Kanäle abdecken.

Ouyi Exchange App Inländische Download -Tutorial Ouyi Exchange App Inländische Download -Tutorial Mar 21, 2025 pm 05:42 PM

Dieser Artikel enthält einen detaillierten Leitfaden zum sicheren Download der Ouyi OKX -App in China. Aufgrund von Einschränkungen in den inländischen App -Stores wird den Benutzern empfohlen, die App über die offizielle Website von Ouyi OKX herunterzuladen oder den von der offiziellen Website bereitgestellten QR -Code zum Scannen und Herunterladen zu verwenden. Überprüfen Sie während des Download-Prozesses unbedingt die offizielle Website-Adresse, überprüfen Sie die Anwendungsberechtigungen, führen Sie nach der Installation einen Sicherheitsscan durch und aktivieren Sie die Zwei-Faktor-Überprüfung. Bleiben Sie während der Nutzung an lokale Gesetze und Vorschriften ein, verwenden Sie ein sicheres Netzwerkumfeld, schützen Sie die Sicherheit der Kontos, wachsam gegen Betrug und investieren rational. Dieser Artikel ist nur als Referenz und stellt keine Anlageberatung dar.

See all articles