Html: Difference between revisions

From 太極
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
== Some useful HTML tags about form ==
= Some useful HTML tags about form =
http://www.w3schools.com/html/html_forms.asp
http://www.w3schools.com/html/html_forms.asp


=== [http://www.w3schools.com/tags/tag_form.asp form] ===
== [http://www.w3schools.com/tags/tag_form.asp form] ==
<pre>
<pre>
<form action="demo_form.asp">
<form action="demo_form.asp">
Line 11: Line 11:
</pre>
</pre>


=== radio button [http://www.w3schools.com/tags/tag_label.asp label] and [http://www.w3schools.com/tags/tag_input.asp input] ===
== radio button [http://www.w3schools.com/tags/tag_label.asp label] and [http://www.w3schools.com/tags/tag_input.asp input] ==
<pre>
<pre>
<form action="demo_form.asp">
<form action="demo_form.asp">
Line 22: Line 22:
</pre>
</pre>


=== dropdown list [http://www.w3schools.com/tags/tag_select.asp select] and [http://www.w3schools.com/tags/tag_option.asp option] ===
== dropdown list [http://www.w3schools.com/tags/tag_select.asp select] and [http://www.w3schools.com/tags/tag_option.asp option] ==
<pre>
<pre>
<select>
<select>
Line 32: Line 32:
</pre>
</pre>


=== [http://www.w3schools.com/tags/att_input_type.asp Upload file] using [http://www.w3schools.com/tags/att_input_type.asp input] ===
== [http://www.w3schools.com/tags/att_input_type.asp Upload file] using [http://www.w3schools.com/tags/att_input_type.asp input] ==
<pre>
<pre>
<form action="demo_form.asp">
<form action="demo_form.asp">
Line 40: Line 40:
</pre>
</pre>


=== [http://www.w3schools.com/tags/tag_div.asp div] ===
== [http://www.w3schools.com/tags/tag_div.asp div] ==
<pre>
<pre>
<div style="color:#0000FF">
<div style="color:#0000FF">
Line 48: Line 48:
</pre>
</pre>


== PHP ==
= PHP =


=== Differences between a standard HTML doc and a PHP doc ===
== Differences between a standard HTML doc and a PHP doc ==


* PHP scripts should be saved with the .php file extension.
* PHP scripts should be saved with the .php file extension.
Line 85: Line 85:
</syntaxhighlight>
</syntaxhighlight>


=== Resource ===
== Resource ==


* [http://www.amazon.com/Learning-MySQL-JavaScript-Step---Step/dp/1449319262/ref=sr_1_1?s=books&ie=UTF8&qid=1353525357&sr=1-1&keywords=php Learning PHP, MySQL, JavaScript, and CSS]
* [http://www.amazon.com/Learning-MySQL-JavaScript-Step---Step/dp/1449319262/ref=sr_1_1?s=books&ie=UTF8&qid=1353525357&sr=1-1&keywords=php Learning PHP, MySQL, JavaScript, and CSS]
Line 91: Line 91:
* [http://www.cyberciti.biz/faq/centos-rhel-6-install-suhosin-php-advanced-protection-system/ Suhosin PHP Advanced Protection System]
* [http://www.cyberciti.biz/faq/centos-rhel-6-install-suhosin-php-advanced-protection-system/ Suhosin PHP Advanced Protection System]


=== Debugging techniques ===
== Debugging techniques ==


* Run PHP scripts through a URL; i.e. it must be requested through '''http'''://something.
* Run PHP scripts through a URL; i.e. it must be requested through '''http'''://something.
Line 99: Line 99:
* Trust the error message.
* Trust the error message.


=== Quick sheet ===
== Quick sheet ==


* print_r($_SERVER); print 'ABCD';
* print_r($_SERVER); print 'ABCD';
Line 119: Line 119:
* abcd
* abcd


=== PHP, form and POST method ===
== PHP, form and POST method ==
{| style="background:#cccc99;color:black;width:80%;" border="1"  
{| style="background:#cccc99;color:black;width:80%;" border="1"  
|+ PHP form handling  
|+ PHP form handling  
Line 151: Line 151:
The 'action' attribute in <form> defines an absolute or a relative URL. That is, the action could be pointing to an asp, cgi page or something like "mailto:[email protected]".
The 'action' attribute in <form> defines an absolute or a relative URL. That is, the action could be pointing to an asp, cgi page or something like "mailto:[email protected]".


=== PHP, form and GET method ===
== PHP, form and GET method ==
{| border="1"
{| border="1"
|+ GET method
|+ GET method
Line 174: Line 174:
GET, the default, will send the form input in an URL, whereas POST sends it in the body of the submission. The latter method means you can send larger amounts of data, and that the URL of the form results doesn't show the encoded form.
GET, the default, will send the form input in an URL, whereas POST sends it in the body of the submission. The latter method means you can send larger amounts of data, and that the URL of the form results doesn't show the encoded form.


=== MySQL basic operations ===
== MySQL basic operations ==
* Log into root
* Log into root
<pre>
<pre>
Line 245: Line 245:
</pre>
</pre>


=== Username/password ===
== Username/password ==


# http://taichi.selfip.net:81/lang/php/w3/login/login.php
# http://taichi.selfip.net:81/lang/php/w3/login/login.php


=== File upload ===
== File upload ==
Need to change the folder permission/property. See [http://stackoverflow.com/questions/14116708/adding-apache-to-a-user-group-file-upload-permission here].
Need to change the folder permission/property. See [http://stackoverflow.com/questions/14116708/adding-apache-to-a-user-group-file-upload-permission here].


Line 268: Line 268:
# http://taichi.selfip.net:81/lang/php/xqto/index.php
# http://taichi.selfip.net:81/lang/php/xqto/index.php


=== Login/out + File upload ===
== Login/out + File upload ==


The following test page combines the ideas of login/out and file upload.  
The following test page combines the ideas of login/out and file upload.  
Line 274: Line 274:
# http://taichi.selfip.net:81/lang/php/w3/loginuploadphp/loginupload.php
# http://taichi.selfip.net:81/lang/php/w3/loginuploadphp/loginupload.php


=== PHP and database ===
== PHP and database ==


=== Books ===
== Books ==
http://www.amazon.com/Head-First-MySQL-Lynn-Beighley/dp/0596006306/ref=tmm_pap_title_0?ie=UTF8&qid=1360359135&sr=8-2
http://www.amazon.com/Head-First-MySQL-Lynn-Beighley/dp/0596006306/ref=tmm_pap_title_0?ie=UTF8&qid=1360359135&sr=8-2


== CSS ==
= CSS =
* http://www.w3schools.com/css/default.asp
* http://www.w3schools.com/css/default.asp
* [http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189/ref=pd_bxgy_b_img_z HTML and CSS: Design and Build Websites]
* [http://www.amazon.com/HTML-CSS-Design-Build-Websites/dp/1118008189/ref=pd_bxgy_b_img_z HTML and CSS: Design and Build Websites]
Line 285: Line 285:
* [http://channel9.msdn.com/Series/HTML5-CSS3-Fundamentals-Development-for-Absolute-Beginners channel9.msdn.com]
* [http://channel9.msdn.com/Series/HTML5-CSS3-Fundamentals-Development-for-Absolute-Beginners channel9.msdn.com]


=== [https://en.wikipedia.org/wiki/Web_colors Web colors] ===
== [https://en.wikipedia.org/wiki/Web_colors Web colors] ==
Normally hex form requires 6 digits but the short form only requires 3 digits. For example, #09C is the same as #0099CC.
Normally hex form requires 6 digits but the short form only requires 3 digits. For example, #09C is the same as #0099CC.


Line 300: Line 300:
* '''Color Picker''' or '''Eyedropper''' from Chrome-DevTools [https://developers.google.com/web/tools/chrome-devtools/css/reference CSS Reference]
* '''Color Picker''' or '''Eyedropper''' from Chrome-DevTools [https://developers.google.com/web/tools/chrome-devtools/css/reference CSS Reference]


=== Important Tools ===
== Important Tools ==
http://www.lifehack.org/314802/10-best-tools-optimize-and-audit-css-code
http://www.lifehack.org/314802/10-best-tools-optimize-and-audit-css-code


Line 309: Line 309:
* [http://csscompressor.com/ CSS Compressor] - reducing the size of your CSS code and helping your website to load much faster as a result
* [http://csscompressor.com/ CSS Compressor] - reducing the size of your CSS code and helping your website to load much faster as a result


=== Simple example ===
== Simple example ==
<pre>
<pre>
<style>
<style>
Line 334: Line 334:
</pre>
</pre>


=== Margin vs padding ===
== Margin vs padding ==
* http://www.digizol.com/2006/12/margin-vs-padding-css-properties.html
* http://www.digizol.com/2006/12/margin-vs-padding-css-properties.html
* http://www.w3schools.com/css/css_boxmodel.asp
* http://www.w3schools.com/css/css_boxmodel.asp


=== What’s the difference between comma separated identifiers and space separated? ===
== What’s the difference between comma separated identifiers and space separated? ==
* http://stackoverflow.com/questions/6670360/space-separated-things-in-css
* http://stackoverflow.com/questions/6670360/space-separated-things-in-css
* http://community.sitepoint.com/t/whats-the-difference-between-comma-separated-identifiers-and-space-separated/6309/2  
* http://community.sitepoint.com/t/whats-the-difference-between-comma-separated-identifiers-and-space-separated/6309/2  


=== Style ===
== Style ==
CSS Styling
CSS Styling


=== Overlapping elements ===
== Overlapping elements ==
CSS position -> overlapping elements
CSS position -> overlapping elements


=== Float an image ===
== Float an image ==
CSS floating -> How Elements Float
CSS floating -> How Elements Float


=== Text in Transparent Box ===
== Text in Transparent Box ==
CSS Image Opacity
CSS Image Opacity


== jQuery ==
= jQuery =
* [http://www.amazon.com/JavaScript-jQuery-The-Missing-Manual/dp/1449399029/ref=pd_bxgy_b_text_y Javascript & jQuery: The Missing Manual]
* [http://www.amazon.com/JavaScript-jQuery-The-Missing-Manual/dp/1449399029/ref=pd_bxgy_b_text_y Javascript & jQuery: The Missing Manual]


Line 375: Line 375:
</pre>
</pre>


=== Image slider/carousel/lightbox ===
== Image slider/carousel/lightbox ==
* [http://nivo.dev7studios.com/ Nivo slider] Free to abuse.
* [http://nivo.dev7studios.com/ Nivo slider] Free to abuse.
* [http://highslide.com/ High slide] Non free for commerical/government use.
* [http://highslide.com/ High slide] Non free for commerical/government use.
Line 386: Line 386:
It seems if we want to create lightbox image gallery, we need to create thumbnails first. We can skip creating thumbnail images if we don't need javascript and lightbox effect.
It seems if we want to create lightbox image gallery, we need to create thumbnails first. We can skip creating thumbnail images if we don't need javascript and lightbox effect.


=== Tree ===
== Tree ==
* http://code.stephenmorley.org/javascript/collapsible-lists/
* http://code.stephenmorley.org/javascript/collapsible-lists/
* http://code.google.com/p/dynatree/
* http://code.google.com/p/dynatree/
Line 392: Line 392:
* http://www.queness.com/post/1138/10-javascriptcss-treeview-and-sitemap-plugins-and-tutorials
* http://www.queness.com/post/1138/10-javascriptcss-treeview-and-sitemap-plugins-and-tutorials


== [http://getbootstrap.com/ Twitter Bootstrap] ==
= [http://getbootstrap.com/ Twitter Bootstrap] =


=== Tutorial ===
== Tutorial ==
* http://www.w3resource.com/twitter-bootstrap/
* http://www.w3resource.com/twitter-bootstrap/
* [https://www.youtube.com/playlist?list=PL6gx4Cwl9DGBPw1sFodruZUPheWVKchlM Youtube from thenewBoston]
* [https://www.youtube.com/playlist?list=PL6gx4Cwl9DGBPw1sFodruZUPheWVKchlM Youtube from thenewBoston]


=== Examples ===
== Examples ==
* [http://getbootstrap.com/getting-started/#examples Examples]
* [http://getbootstrap.com/getting-started/#examples Examples]
* http://user2014.stat.ucla.edu/
* http://user2014.stat.ucla.edu/
* http://projecttemplate.net/
* http://projecttemplate.net/


=== Plugins ===
== Plugins ==
* http://getbootstrap.com/javascript/ Take a look at ScrollSpy.  
* http://getbootstrap.com/javascript/ Take a look at ScrollSpy.  
* http://jquery-plugins.net/tag/sticky-scroll
* http://jquery-plugins.net/tag/sticky-scroll
* http://bigspotteddog.github.io/ScrollToFixed/
* http://bigspotteddog.github.io/ScrollToFixed/


== Misc ==
= Misc =
=== Cheatsheet ===
== Cheatsheet ==
https://hostingfacts.com/html-cheat-sheet/ (23 pages in pdf or 1 in png)
https://hostingfacts.com/html-cheat-sheet/ (23 pages in pdf or 1 in png)


=== Intro to Graphic Design ===
== Intro to Graphic Design ==
https://www.udemy.com/introduction-to-graphic-design/?dtcode=onMH2sD3bj21
https://www.udemy.com/introduction-to-graphic-design/?dtcode=onMH2sD3bj21


=== Test mobile-friendliness ===
== Test mobile-friendliness ==
https://www.google.com/webmasters/tools/mobile-friendly/
https://www.google.com/webmasters/tools/mobile-friendly/


=== How to emulate a mobile device in a desktop browser ===
== How to emulate a mobile device in a desktop browser ==
https://www.digitalcitizen.life/emulate-mobile-device-desktop-browser
https://www.digitalcitizen.life/emulate-mobile-device-desktop-browser


=== Identify font in a web page ===
== Identify font in a web page ==
* [http://www.makeuseof.com/tag/4-ways-quickly-identify-favorite-web-page-fonts/ 4 Ways To Quickly Identify Your Favorite Web Page Fonts]. For example, it looks like [https://www.linux.com/learn/how-build-email-server-ubuntu-linux this site] is using [https://www.fontsquirrel.com/fonts/open-sans Open Sans] according to the Chrome Developer Tools.
* [http://www.makeuseof.com/tag/4-ways-quickly-identify-favorite-web-page-fonts/ 4 Ways To Quickly Identify Your Favorite Web Page Fonts]. For example, it looks like [https://www.linux.com/learn/how-build-email-server-ubuntu-linux this site] is using [https://www.fontsquirrel.com/fonts/open-sans Open Sans] according to the Chrome Developer Tools.


=== Fonts, icons ===
== Fonts, icons ==
* [https://stackoverflow.com/questions/884177/how-can-i-determine-what-font-a-browser-is-actually-using-to-render-some-text How can I determine what font a browser is actually using to render some text?] Firefox is easy.
* [https://stackoverflow.com/questions/884177/how-can-i-determine-what-font-a-browser-is-actually-using-to-render-some-text How can I determine what font a browser is actually using to render some text?] Firefox is easy.
* http://icoconvert.com/
* http://icoconvert.com/
Line 474: Line 474:
</syntaxhighlight>
</syntaxhighlight>


=== Editor ===
== Editor ==
* [http://brackets.io/ Brackets]
* [http://brackets.io/ Brackets]
* [http://plnkr.co/ Plunker] online editor
* [http://plnkr.co/ Plunker] online editor


=== Free images ===
== Free images ==
* [http://www.lifehack.org/573898/10-best-sites-that-offer-gorgeous-free-images-for-blogs 10 Best Sites That Offer Gorgeous Free Images for Blogs]
* [http://www.lifehack.org/573898/10-best-sites-that-offer-gorgeous-free-images-for-blogs 10 Best Sites That Offer Gorgeous Free Images for Blogs]


=== Free icons ===
== Free icons ==
* https://www.flaticon.com/
* https://www.flaticon.com/
* https://icons8.com/icon/
* https://icons8.com/icon/
Line 490: Line 490:
* http://icoconvert.com/ (you cannot select an area)
* http://icoconvert.com/ (you cannot select an area)


=== Design logos, banners, book covers, icons, covers, menus, ... ===
== Design logos, banners, book covers, icons, covers, menus, ... ==
[https://www.makeuseof.com/tag/things-create-with-canva/ 10 Things You Can Create With Canva With Zero Effort]
[https://www.makeuseof.com/tag/things-create-with-canva/ 10 Things You Can Create With Canva With Zero Effort]


=== Cookies ===
== Cookies ==
An example to inform visitors https://www.jamescoyle.net/how-to/116-simple-apache-reverse-proxy-example
An example to inform visitors https://www.jamescoyle.net/how-to/116-simple-apache-reverse-proxy-example


https://www.cookielaw.org/the-cookie-law/
https://www.cookielaw.org/the-cookie-law/


=== DAP: Digital Analytics Program ===
== DAP: Digital Analytics Program ==
* https://digital.gov/dap/
* https://digital.gov/dap/
* https://digital.gov/2015/03/04/what-is-the-digital-analytics-program-dap/
* https://digital.gov/2015/03/04/what-is-the-digital-analytics-program-dap/


=== [https://en.wikipedia.org/wiki/Web_analytics Web analytics] ===
== [https://en.wikipedia.org/wiki/Web_analytics Web analytics] ==
[https://en.wikipedia.org/wiki/List_of_web_analytics_software List of web analytics software] such as AWStats
[https://en.wikipedia.org/wiki/List_of_web_analytics_software List of web analytics software] such as AWStats


=== Section 508 compliant ===
== Section 508 compliant ==
* https://training.cit.nih.gov/class_details.aspx?cId=NIHCIT-AT100
* https://training.cit.nih.gov/class_details.aspx?cId=NIHCIT-AT100
* https://training.cit.nih.gov/class_details.aspx?cId=NIHCIT-AT173
* https://training.cit.nih.gov/class_details.aspx?cId=NIHCIT-AT173
Line 516: Line 516:
</syntaxhighlight>
</syntaxhighlight>


=== How to force pdf files to open or downloaded in browser  ===
== How to force pdf files to open or downloaded in browser  ==
https://stackoverflow.com/questions/6293893/how-to-force-files-to-open-in-browser-instead-of-download-pdf
https://stackoverflow.com/questions/6293893/how-to-force-files-to-open-in-browser-instead-of-download-pdf


=== Examples of R package html page ===
== Examples of R package html page ==
* [https://dceg.cancer.gov/tools/risk-assessment/bcra BCRA R Package] (linked from [https://dceg.cancer.gov/about/staff-directory/biographies/K-N/gail-mitchell Mitchell H. Gail] page
* [https://dceg.cancer.gov/tools/risk-assessment/bcra BCRA R Package] (linked from [https://dceg.cancer.gov/about/staff-directory/biographies/K-N/gail-mitchell Mitchell H. Gail] page


=== URL Encode/decode (such as Chinese characters) using UTF-8 encoding ===
== URL Encode/decode (such as Chinese characters) using UTF-8 encoding ==
* To copy URL with UTF-8 encoding, [https://stackoverflow.com/questions/18176661/copying-a-utf-8-url-from-browsers-address-bar-gives-only-the-ugly-encoded-one adding a space at the end of URL in the address bar] before copying. It works.  
* To copy URL with UTF-8 encoding, [https://stackoverflow.com/questions/18176661/copying-a-utf-8-url-from-browsers-address-bar-gives-only-the-ugly-encoded-one adding a space at the end of URL in the address bar] before copying. It works.  
* bing: url decode
* bing: url decode
Line 528: Line 528:
* https://www.url-encode-decode.com/
* https://www.url-encode-decode.com/


=== Check websites for broken links ===
== Check websites for broken links ==
* [https://wummel.github.io/linkchecker/ LinkChecker]
* [https://wummel.github.io/linkchecker/ LinkChecker]
* bash script [[Linux_Programming#Find_broken_links_in_a_website_by_lynx_-traversal|lynx_traversal]]
* bash script [[Linux_Programming#Find_broken_links_in_a_website_by_lynx_-traversal|lynx_traversal]]


=== Calculate page loading time ===
== Calculate page loading time ==
[https://stackoverflow.com/questions/26093076/get-pageload-time-using-command-line-linux Get pageload time using command line]. This works on local servers too.
[https://stackoverflow.com/questions/26093076/get-pageload-time-using-command-line-linux Get pageload time using command line]. This works on local servers too.
<syntaxhighlight lang='bash'>
<syntaxhighlight lang='bash'>
Line 550: Line 550:
</syntaxhighlight>
</syntaxhighlight>


=== Code beautify/validator ===
== Code beautify/validator ==
https://codebeautify.org/
https://codebeautify.org/


=== Print with PDF ===
== Print with PDF ==
Tested on [https://dev.to/domysee/setting-up-a-reverse-proxy-with-nginx-and-docker-compose-29jg this page]
Tested on [https://dev.to/domysee/setting-up-a-reverse-proxy-with-nginx-and-docker-compose-29jg this page]


Line 560: Line 560:
* http://pdfmyurl.com. Not good.
* http://pdfmyurl.com. Not good.


== Developer Tools ==
= Developer Tools =


=== HTML 5 outliner ===
== HTML 5 outliner ==
* [https://en.wikipedia.org/wiki/Outliner Outliner] from Wikipedia. Some common file formats include XML, HTML, OPML, OML,RDF.
* [https://en.wikipedia.org/wiki/Outliner Outliner] from Wikipedia. Some common file formats include XML, HTML, OPML, OML,RDF.
* https://gsnedders.html5.org/outliner/
* https://gsnedders.html5.org/outliner/
Line 568: Line 568:
* https://chrome.google.com/webstore/detail/html5-outliner/afoibpobokebhgfnknfndkgemglggomo
* https://chrome.google.com/webstore/detail/html5-outliner/afoibpobokebhgfnknfndkgemglggomo


=== Inspect ===
== Inspect ==
* Google Chrome: right click -> Inspect
* Google Chrome: right click -> Inspect
** https://developers.google.com/web/tools/chrome-devtools/, https://developers.google.com/web/tools/chrome-devtools/inspect-styles/
** https://developers.google.com/web/tools/chrome-devtools/, https://developers.google.com/web/tools/chrome-devtools/inspect-styles/
Line 574: Line 574:
* Firefox: right click -> Inspect Element. See [https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Open_the_Inspector Open the Inspector].
* Firefox: right click -> Inspect Element. See [https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Open_the_Inspector Open the Inspector].


== CGI/Perl ==
= CGI/Perl =
* [http://www.elated.com/articles/your-first-cgi-script/ hello.cgi] and [http://www.elated.com/articles/form-validation-with-perl-and-cgi/ form validation]
* [http://www.elated.com/articles/your-first-cgi-script/ hello.cgi] and [http://www.elated.com/articles/form-validation-with-perl-and-cgi/ form validation]
* [http://www.amazon.com/CGI-Programming-101-Second-Edition/dp/0966942612/ref=sr_1_2?ie=UTF8&qid=1353525140&sr=8-2&keywords=cgi+programming+with+perl CGI Programming 101]
* [http://www.amazon.com/CGI-Programming-101-Second-Edition/dp/0966942612/ref=sr_1_2?ie=UTF8&qid=1353525140&sr=8-2&keywords=cgi+programming+with+perl CGI Programming 101]

Revision as of 21:02, 23 June 2019

Some useful HTML tags about form

http://www.w3schools.com/html/html_forms.asp

form

<form action="demo_form.asp">
First name: <input type="text" name="FirstName" value="Mickey"><br>
Last name: <input type="text" name="LastName" value="Mouse"><br>
<input type="submit" value="Submit">
</form>

radio button label and input

<form action="demo_form.asp">
  <label for="male">Male</label>
  <input type="radio" name="sex" id="male" value="male"><br>
  <label for="female">Female</label>
  <input type="radio" name="sex" id="female" value="female"><br>
  <input type="submit" value="Submit">
</form>

dropdown list select and option

<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

Upload file using input

<form action="demo_form.asp">
  Select a file: <input type="file" name="img">
  <input type="submit">
</form>

div

<div style="color:#0000FF">
  <h3>This is a heading in a div element</h3>
  <p>This is some text in a div element.</p>
</div>

PHP

Differences between a standard HTML doc and a PHP doc

  • PHP scripts should be saved with the .php file extension.
  • You place PHP code within <?php and ?> tags, normally withink the context of some HTML.
  • PHP is a server-side technology. So PHP scripts must be run on a PHP-enabled Web server. This means that PHP must be run through a URL (i.e. http://yourdomain/mypage.php).

If the php source code is

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<body>
<?php
# This script does nothing much.

echo '<p>This is a line of text.<br />This is another line of text.</p>';

/*
echo 'This line will not be executed.';
*/

echo "<p>Now I'm done.</p>"; // End of PHP code.

?>
</body>
</html>

then when we view the page source from a web browser, it will look like

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<body>
<p>This is a line of text.<br />This is another line of text.</p><p>Now I'm done.</p>
</body>
</html>

Resource

Debugging techniques

  • Run PHP scripts through a URL; i.e. it must be requested through http://something.
  • Know what version of PHP you're running; run phpinfo.php to confirm.
  • Make sure display_errors is on. This is related to PHP configuration setting.
  • CHeck the HTML source code.
  • Trust the error message.

Quick sheet

  • print_r($_SERVER); print 'ABCD';
  • Use /* and */ for comments
  • Variables are case-sensitive!
  • Constants define('PI', 3.14);
  • Strings: "Hello, $first_name", "I said \"How are you?\"". Note that backslash is used to escape the quotation.
  • Arrays can be used by using either indexed array or associative array. For indexed arrays, the key is 0,1,2,3,... and for associative arrays, the key is a string. For example, $name[0]='Don' and $state['VT'] = 'Vermont'.
  • Single quotation marks are treated literally; items within double quotation marks are extrapolated. This means that within double quotation marks, a variable's name is replaced with its value, but the same is not true for single quotation marks.
  • XHTML are different from HTML
    • the code needs to be in all lowercase letters
    • every tag attribute must be enclosed in quotes
    • For example, <INPUT TYPE=TEXT NAME=address SIZE=40> in HTML becomes <input text="text" name="address" size="40"> in XHTML
  • For avoiding security problems in form, use PHP functions like htmlspecialchars(), htmlentities(), strip_tags().
    • htmlspecialchars() converts certain HTMLM tags into their entity versions. The entity version appears in the output but isn't rendered.
    • htmlentities() turns all HTML tags into their entity versions.
    • strip_tags() removes all HTML and PHP tags.
  • foreach() {}
  • abcd

PHP, form and POST method

PHP form handling
# index.php welcome.php
1.
<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>

</body>
</html>
 <html>
 <body>

 Welcome <?php echo $_POST["fname"]; ?>!<br />
 You are <?php echo $_POST["age"]; ?> years old.

 </body>
 </html>

The 'action' attribute in <form> defines an absolute or a relative URL. That is, the action could be pointing to an asp, cgi page or something like "mailto:[email protected]".

PHP, form and GET method

GET method
index.php welcome.php
<form action="welcome.php" method="get">
Name: <input type="text" name="fname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
Welcome <?php echo $_GET["fname"]; ?>.<br />
You are <?php echo $_GET["age"]; ?> years old!

GET, the default, will send the form input in an URL, whereas POST sends it in the body of the submission. The latter method means you can send larger amounts of data, and that the URL of the form results doesn't show the encoded form.

MySQL basic operations

  • Log into root
$ mysql -u root -h myserver-sever.com -p
  • Create a new mysql database called demo
mysql> CREATE DATABASE demo;
  • create a new user and GRANT (add) privileges to a newly created user on all tables in the demo database.
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL ON demo.* TO 'user1'@'localhost';

OR

mysql> GRANT ALL ON demo.* TO user1@localhost IDENTIFIED BY 'mypassword';
  • How to connect to the demo database on local/remote MySQL server?
$ mysql -u user1 -h mysql.server.com -p demo
  • To remove an account
DROP USER 'user1'@'localhost'
  • Create a table on the demo database
mysql> USE demo;
mysql> DROP TABLE Employee;

mysql> CREATE TABLE Employee (
    ->     Name VARCHAR(50),
    ->     Phone VARCHAR(15)
    -> );
Query OK, 0 rows affected (0.21 sec)

mysql> Show tables;
mysql> Describe Employee;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| Name  | varchar(50) | YES  |     | NULL    |       |
| Phone | varchar(15) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.03 sec)

mysql> INSERT INTO Employee (Name, Phone) VALUES ('Joe Wang', '666 2323');
Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO Employee (Name) VALUES ('John Doe');
Query OK, 1 row affected (0.02 sec)

mysql> INSERT INTO Employee (Name, Phone) VALUES ('John Doe', NULL);
Query OK, 1 row affected (0.01 sec)

mysql> Select * from Employee;
+----------+----------+
| Name     | Phone    |
+----------+----------+
| Joe Wang  | 666 2323 |
| John Doe | NULL     |
| John Doe | NULL     |
+----------+----------+

Username/password

  1. http://taichi.selfip.net:81/lang/php/w3/login/login.php

File upload

Need to change the folder permission/property. See here.

  • chmod -R 777 FOLDERNAME
  • sudo usermod www-data --apend --groups GROUPNAME

where GROUPNAME is the group name of the folder and www-data is the user that runs the web server.

  • sudo chown -R .www-data FOLDERNAME

where the dot means no change for the owner's name. We just change the group name. It is also helpful to do chmod -R 775 FOLDERNAME.

  • just edit /etc/group file. See the link above.

Examples:

  1. http://taichi.selfip.net:81/lang/php/w3/uploadphp/
  2. http://taichi.selfip.net:81/lang/php/xqto/index.php

Login/out + File upload

The following test page combines the ideas of login/out and file upload.

  1. http://taichi.selfip.net:81/lang/php/w3/loginuploadphp/loginupload.php

PHP and database

Books

http://www.amazon.com/Head-First-MySQL-Lynn-Beighley/dp/0596006306/ref=tmm_pap_title_0?ie=UTF8&qid=1360359135&sr=8-2

CSS

Web colors

Normally hex form requires 6 digits but the short form only requires 3 digits. For example, #09C is the same as #0099CC.

Google chrome devtools provides a color magnifier which can be used to identify the color code of a specific pixel on the screen. The way I discover it is

  1. Open devtools
  2. Right click on a website and choose 'inspect'
  3. Click somewhere having class. The style definition will be shown in a small panel
  4. If color was used somewhere, there should be a small square showing the defined color. Click the square.
  5. Now if we move the cursor to the website, a magnifier will be shown up

Here is a gif showing the process to get the color picker.

Important Tools

http://www.lifehack.org/314802/10-best-tools-optimize-and-audit-css-code

  • Notepad++ - color coded formatting
  • Stylizer - CSS editor with preview and has 8 built-in browsers
  • Blueprint - CSS framework
  • ProCSSor - cleans and organizes your css the way you want it
  • CSS Compressor - reducing the size of your CSS code and helping your website to load much faster as a result

Simple example

<style>
body
{
    background-color:#d0e4fe;
}
h1
{
    color:orange;
    text-align:center;
}
p
{
    font-family:"Times New Roman";
    font-size:20px;
}
</style>

To insert a CSS in an html file, use

<link rel="stylesheet" type="text/css" href="mystyle.css">

Margin vs padding

What’s the difference between comma separated identifiers and space separated?

Style

CSS Styling

Overlapping elements

CSS position -> overlapping elements

Float an image

CSS floating -> How Elements Float

Text in Transparent Box

CSS Image Opacity

jQuery

To use the javascript in the HTML code, we can grab the script from internet, local directory or defined in the html.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="../jquery.nivo.slider.js"></script>
<script type="text/javascript">
    $(window).load(function() {
        $('#slider').nivoSlider();
          effect: 'random'
    });
</script>

Image slider/carousel/lightbox

It seems if we want to create lightbox image gallery, we need to create thumbnails first. We can skip creating thumbnail images if we don't need javascript and lightbox effect.

Tree

Twitter Bootstrap

Tutorial

Examples

Plugins

Misc

Cheatsheet

https://hostingfacts.com/html-cheat-sheet/ (23 pages in pdf or 1 in png)

Intro to Graphic Design

https://www.udemy.com/introduction-to-graphic-design/?dtcode=onMH2sD3bj21

Test mobile-friendliness

https://www.google.com/webmasters/tools/mobile-friendly/

How to emulate a mobile device in a desktop browser

https://www.digitalcitizen.life/emulate-mobile-device-desktop-browser

Identify font in a web page

Fonts, icons

Font-icon.png

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>MUO Icon Fonts</title>
		<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
		<style>
			html {
				font-family: helvetica, arial;
			}

            @keyframes move {
              from { margin-left: 0; }
              to { margin-left: 400px; }
            }

            .bike {
              animation-name: move;
              animation-duration: 4s;
            }
		</style>
	</head>
	<body>
        <i class="fa fa-cog"></i> My First Icon

        <i class="fa fa-battery-0 fa-lg"></i>
        <i class="fa fa-battery-1 fa-2x"></i>
        <i class="fa fa-battery-2 fa-3x"></i>
        <i class="fa fa-battery-3 fa-4x"></i>
        <i class="fa fa-battery-4 fa-5x"></i>

        <i class="fa fa-refresh fa-spin fa-3x"></i>

        <i class="fa fa-motorcycle fa-5x bike"></i>
	</body>
</html>

Editor

Free images

Free icons

Convert/crop an image to round shape, or different resolutions

Design logos, banners, book covers, icons, covers, menus, ...

10 Things You Can Create With Canva With Zero Effort

Cookies

An example to inform visitors https://www.jamescoyle.net/how-to/116-simple-apache-reverse-proxy-example

https://www.cookielaw.org/the-cookie-law/

DAP: Digital Analytics Program

Web analytics

List of web analytics software such as AWStats

Section 508 compliant

An example is to add alt="" to provide an alternative text for an image. Note that alt attribute is not allowed for an a element.

<a href="abc.png"><img src="abc.png" alt="">Visit me</a>

How to force pdf files to open or downloaded in browser

https://stackoverflow.com/questions/6293893/how-to-force-files-to-open-in-browser-instead-of-download-pdf

Examples of R package html page

URL Encode/decode (such as Chinese characters) using UTF-8 encoding

Check websites for broken links

Calculate page loading time

Get pageload time using command line. This works on local servers too.

$ time wget -pq --no-cache --delete-after http://10.42.0.66/wiki/index.php/C
real	4m30.402s
user	0m0.036s
sys	0m0.032s

It seems apache/mediawiki have a cache system. If I repeat the testing on the same page, it will be fast. But if I test on a new page, it will be slow again.

We can also use curl. Testing a website from Linux command line

$ curl --trace-time -o /dev/null http://10.42.0.66/wiki/index.php/Virtualbox
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  145k    0  145k    0     0   5161      0 --:--:--  0:00:28 --:--:-- 32638

Code beautify/validator

https://codebeautify.org/

Print with PDF

Tested on this page

Developer Tools

HTML 5 outliner

Inspect

CGI/Perl

On Ubuntu, the CGI script should be placed in /usr/lib/cgi-bin folder.

$ ls -l /usr/lib/cgi-bin/hello.cgi
-rwxr-xr-x 1 root root 139 2012-11-21 12:19 /usr/lib/cgi-bin/hello.cgi

Notice that mode is 755 for the executable file. The script

$ cat /usr/lib/cgi-bin/hello.cgi
#!/usr/bin/perl

print "Content-type: text/html\n\n";

print <<END_HTML;
<html>
<head></head>
<body>Hello, World!</body>
</html>
END_HTML

Open a web browser and enter http://localhost/cgi-bin/hello.cgi.

If the cgi was used in html form, the html code should look like

<FORM ACTION="/cgi-bin/mycgi.pl">
favorite color: <INPUT name="favecolor">
<INPUT TYPE=SUBMIT VALUE="Submit">
</FORM>