﻿<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>GreekTuts &#187; HTML</title> <atom:link href="http://greektuts.net/category/programming/html/feed/" rel="self" type="application/rss+xml" /><link>http://greektuts.net</link> <description>Ελληνικά Βοηθήματα</description> <lastBuildDate>Fri, 27 Apr 2012 09:31:40 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <item><title>Τι είναι το Zen Coding;</title><link>http://greektuts.net/what-is-zen-coding/</link> <comments>http://greektuts.net/what-is-zen-coding/#comments</comments> <pubDate>Fri, 27 Apr 2012 09:31:40 +0000</pubDate> <dc:creator>Pantso</dc:creator> <category><![CDATA[CSS]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[coda]]></category> <category><![CDATA[notepad]]></category> <category><![CDATA[zen coding]]></category> <category><![CDATA[ζεν]]></category> <category><![CDATA[ζεν ψοδινγ]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=5743</guid> <description><![CDATA[Η χρήση του Zen Coding είναι ένας από τους καλύτερους τρόπους για να αυξηθεί η παραγωγικότητα μας και να μειωθεί ο χρόνος παραγωγής μας. Τι είναι; Είναι ένα πλήθος εντολών/συντομεύσεων που γράφουν κώδικα για εμάς, χωρίς να χρειάζεται να κάνουμε και πολλά πράγματα. Απλά να γνωρίζουμε την δομή τους.]]></description> <content:encoded><![CDATA[<p>Το Zen Coding δεν είναι καινούργιο στον χώρο αλλά είναι ένα εργαλείο το οποίο αξίζει να αναφέρουμε, μιας και ποτέ δεν έχουμε μπεί στην διαδικασία μέσα από το GreekTuts. Το Zen Coding λοιπόν είναι μια σειρά συντομεύσεων που θα μας βοηθήσουν πάρα πολύ όταν γράφουμε κώδικα. Ο τρόπος που λειτουργεί είναι αρκετά απλός, και οι συντομεύσεις του καλύπτουν HTML, CSS, XML και κάποιες άλλες δομημένες γλώσσες &#8220;προγραμματισμού&#8221;.</p><p>Οι συντομεύσεις αυτές έρχονται σε μορφή plugin για τον editor της επιλογής μας, και υποστηρίζουν μια μεγάλη γκάμα editors όπως το Dreamweaver, το Notepad++, τον Coda (για Mac) και πολλούς πολλούς άλλους.</p><p>Πρώτο πράγμα που πρέπει να κάνουμε λοιπόν είναι να εγκαταστήσουμε το πρόσθετο στον editor που χρησιμοποιούμε. Αυτό το κάνουμε αφού επισκεφτούμε τον επίσημο χώρο της Google στον οποίο φιλοξενείται το project <a
title="Zen Coding" href="http://code.google.com/p/zen-coding/" target="_blank">http://code.google.com/p/zen-coding/</a>.</p><blockquote><p><a
title="Zen Coding" href="http://code.google.com/p/zen-coding/" target="_blank"><img
class="aligncenter size-full wp-image-5748" title="zen1" src="http://static.greektuts.net/uploads/2012/04/zen1.png" alt="" width="540" height="500" /></a></p></blockquote><p>Από την σελίδα Downloads, κατεβάζουμε το πρόσθετο για τον δικό μας editor, και μετά κάνουμε εγκατάσταση. Συνήθως οι οδηγίες για τα πρόσθετα στους editors είναι αρκετά απλές. Για παράδειγμα στον Notepad++ απλά πρέπει να εγκαταστήσουμε το πρόσθετο μέσα από τον plugin manager που διαθέτει.</p><p>Το επόμενο βήμα είναι και αυτό το οποίο θα αλλάξει τον τρόπο που εργαζόμαστε. Ας δούμε ένα παράδειγμα πριν εξηγήσουμε παραπάνω.</p><blockquote><p
style="text-align: center;"><img
class="aligncenter size-full wp-image-5749" title="zen2" src="http://static.greektuts.net/uploads/2012/04/zen2.png" alt="" width="540" height="500" /> Για αρχή έχουμε το άδειο document μας</p></blockquote><blockquote><p
style="text-align: center;"><img
class="aligncenter size-full wp-image-5750" title="zen3" src="http://static.greektuts.net/uploads/2012/04/zen3.png" alt="" width="540" height="500" /> Γράφουμε την δομή που θέλουμε να δημιουργήσουμε</p></blockquote><blockquote><p
style="text-align: center;"><img
class="aligncenter size-full wp-image-5752" title="zen4" src="http://static.greektuts.net/uploads/2012/04/zen41.png" alt="" width="540" height="500" /> Και voila! Έτοιμος ο κώδικας μας</p></blockquote><p>Ας δούμε λοιπόν αναλυτικά τι συνέβει στο παραπάνω παράδειγμα.</p><hr
/><p>Στο άδειο document μας γράφουμε τις συντομεύσεις για τον κώδικα που θέλουμε να δημιουργήσουμε, με την δομή του Zen Coding. Δηλαδή ξεκινάμε να γράφουμε</p><pre>div#main&gt;div.wrapper&gt;div.head&gt;nav&gt;ul&gt;li*5&gt;a</pre><p>Αυτός ο κώδικας αν τον διαβάσουμε σημαίνει ότι θέλουμε να δημιουργήσουμε ένα div με ID=main, μέσα του να έχει ένα div με Class=wrapper, μέσα του ένα div με Class=head και τέλος μέσα του ένα nav tag με μια unordered list, με 5 list items που θα περιέχουν anchor tags.</p><p>Το επόμενο βήμα είναι να πατήσουμε Ctrl+E (στο Notepad++) και αυτόματα το plugin του Zen Coding αναλαμβάνει να δημιουργήσει τον κώδικα για εμάς.</p><p>Αυτό λοιπόν σημαίνει ότι μπορούμε να γράψουμε μεγάλα κομμάτια κώδικα, χωρίς ουσιαστικά να χάσουμε χρόνο κάνοντας copy/paste ίδια κομμάτια, ή γράφοντας ένα ένα τα tags που χρειαζόμαστε, απλά γράφοντας την σειρά των πραγμάτων όπως ακριβώς την θέλουμε.</p><hr
/><p>Έτσι για να δούμε μερικά ακόμα παραδείγματα κώδικα με το Zen Coding, αν θέλουμε να φτιάξουμε  την δομή</p><pre class="prettyprint"><span class="tag">&lt;table&gt;</span><span class="pln"></span><span class="tag">&lt;tr&gt;</span><span class="pln">&nbsp; &nbsp; </span><span class="tag">&lt;td&gt;&lt;/td&gt;</span><span class="pln"></span><span class="tag">&lt;/tr&gt;</span><span class="pln"></span><span class="tag">&lt;/table&gt;</span></pre><p>Γράφουμε απλά</p><pre>
table+
</pre><p>Αν θέλουμε να φτιάξουμε την δομή</p><pre class="prettyprint"><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"name"</span><span class="tag">&gt;</span><span class="pln">&nbsp; &nbsp; </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"one"</span><span class="tag">&gt;&lt;/p&gt;</span><span class="pln">&nbsp; &nbsp; </span><span class="tag">&lt;p</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"two"</span><span class="tag">&gt;&lt;/p&gt;</span><span class="pln"></span><span class="tag">&lt;/div&gt;</span></pre><p>Γράφουμε απλά</p><pre>
div#name>p.one+p.two
</pre><p>Αν θέλουμε να φτιάξουμε την δομή</p><pre class="prettyprint"><span class="tag">&lt;select&gt;</span><span class="pln">&nbsp; &nbsp; </span><span class="tag">&lt;option</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"item-1"</span><span class="tag">&gt;&lt;/option&gt;</span><span class="pln">&nbsp; &nbsp; </span><span class="tag">&lt;option</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"item-2"</span><span class="tag">&gt;&lt;/option&gt;</span><span class="pln">&nbsp; &nbsp; </span><span class="tag">&lt;option</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"item-3"</span><span class="tag">&gt;&lt;/option&gt;</span><span class="pln"></span><span class="tag">&lt;/select&gt;</span></pre><p>Γράφουμε απλά</p><pre>
select>option#item-$*3
</pre><p>και μετά από κάθε συντόμευση πατάμε το shortcut του Zen Coding για να μας δημιουργήσει αυτόματα τον κώδικα που θέλουμε! Αν παρατηρήσατε στο τελευταίο παράδειγμα, μπορούμε ακόμα να βάλουμε και μια μεταβλητή που θα αυξάνεται μόνη της με αποτέλεσμα να μας δίνει έναν αύξοντα αριθμό στις κλάσεις ή στα id που θέλουμε.</p><p>Μπορείτε να διαβάσετε περισσότερα για την <a
title="Zen Coding" href="http://code.google.com/p/zen-coding/wiki/ZenHTMLSelectorsEn" target="_blank">δομή του Zen Coding</a> και έτσι να δημιουργήσετε όποιες δομές χρειάζεστε με πολύ λίγες γραμμές κώδικα.</p><p>Εσείς χρησιμοποιείτε το Zen Coding; Αν όχι, πως σας φαίνεται; Θα το δοκιμάσετε;</p> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/what-is-zen-coding/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>HTML5 Canvas</title><link>http://greektuts.net/html5-canvas/</link> <comments>http://greektuts.net/html5-canvas/#comments</comments> <pubDate>Wed, 28 Sep 2011 09:15:04 +0000</pubDate> <dc:creator>Pantso</dc:creator> <category><![CDATA[HTML5]]></category> <category><![CDATA[Web Building]]></category> <category><![CDATA[canvas]]></category> <category><![CDATA[html 5]]></category> <category><![CDATA[html canvas]]></category> <category><![CDATA[html5 canvas]]></category> <category><![CDATA[Javascript]]></category> <category><![CDATA[ζωγραφική]]></category> <category><![CDATA[ζωγραφική canvas]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=5369</guid> <description><![CDATA[Σε αυτό το βοήθημα, θα δούμε πως θα χρησιμοποιήσουμε το νέο στοιχείο της HTML5 που μας επιτρέπει να "ζωραφίζουμε" διάφορα γραφικά και εικόνες στην ιστοσελίδα μας. Μιλάμε φυσικά για το στοιχείο canvas που έχει γίνει πλέον πολύ διαδεδομένο ανάμεσα στους developers ιστοσελίδων.]]></description> <content:encoded><![CDATA[<p>Ας ξεκινήσουμε με μια μικρή αναδρομή στην ιστορία του στοιχείου <strong>canvas</strong>. H Apple είχε πρώτοεμφανίσει το στοιχείο canvas για χρήση στο OSX Dashboard αρκετά χρόνια πρίν, και σιγά σιγά οι browsers άρχισαν να το υποστηρίζουν σαν χαρακτηριστικό, όταν το ενσωμάτωσε στον Safari. Πλέον το στοιχείο canvas υποστηρίζεται πλήρως από τους περισσότερους browsers (για την ακρίβεια από όλους τους νέους browsers) και είναι πλέον στα επίσημα χαρακτηριστικά της HTML5.</p><hr/><h1>Δημιουργούμε τον καμβά μας</h1><p>Ανοίγουμε τον αγαπημένο μας text editor (για παράδειγμα το Notepad++) και δημιουργούμε ένα νέο αρχείο HTML. Γράφουμε μέσα στο body τον παρακάτω κώδικα:</p><pre name="code" class="html">
<canvas id="MyCanvas" width="400" height="225">
  
</canvas>
</pre><p>Αφού σώσουμε την σελίδα ώς <strong>index.html</strong> για παράδειγμα, έχουμε δημιουργήσει το περιβάλλον στο οποίο θα βρίσκεται ο καμβάς μας. Συνεχίζουμε γράφοντας μέσα στο head της σελίδας μας τον παρακάτω κώδικα:</p><pre name="code" class="js">%MINIFYHTMLfbe196165c0ac342f8ed8897a5c708b60%%MINIFYHTMLfbe196165c0ac342f8ed8897a5c708b61%</pre><p>Έτσι εισάγουμε την jQuery στην σελίδα μας, και &#8220;καλούμε&#8221; το στοιχείο canvas που δημιουργήσαμε μέσα από την βιβλιοθήκη. Προσοχή, ο javascript κώδικας που γράψαμε στο head, χρειάζεται οπωσδήποτε το στοιχείο canvas που γράψαμε στο body, για να δουλέψει. Από μόνος του δεν κάνει τίποτα.</p><hr/><h1>Ας ζωγραφίσουμε</h1><p>Στο head μας, αλλάζουμε τον κώδικα στον παρακάτω κώδικα</p><pre name="code" class="js">
var ctx = canvas.getContext("2d");
	// Ζωγραφίζουμε τον σταυρό
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(0, 0, 50, 50);
	ctx.fillStyle = "white";
	ctx.fillRect(50, 0, 25, 50);
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(75, 0, 50, 50);
	ctx.fillStyle = "white";
	ctx.fillRect(0, 50, 125, 25);
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(0, 75, 50, 50);
	ctx.fillStyle = "white";
	ctx.fillRect(50, 75, 25, 50);
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(75, 75, 50, 50);
	// Ζωγραφίζουμε τις ρίγες
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(125, 0, 280, 25);
	ctx.fillStyle = "white";
	ctx.fillRect(125, 25, 280, 25);
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(125, 50, 280, 25);
	ctx.fillStyle = "white";
	ctx.fillRect(125, 75, 280, 25);
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(125, 100, 280, 25);
	ctx.fillStyle = "white";
	ctx.fillRect(0, 125, 400, 25);
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(0, 150, 400, 25);
	ctx.fillStyle = "white";
	ctx.fillRect(0, 175, 400, 25);
	ctx.fillStyle = "#0873a5";
	ctx.fillRect(0, 200, 400, 25);
});
</pre><p>O παραπάνω κώδικας μας δίνει το εξής αποτέλεσμα</p><blockquote><p><img
src="http://static.greektuts.net/uploads3/2011/09/greek-flag1.jpg" alt="" title="greek-flag" width="680" height="450" class="aligncenter size-full wp-image-5385" /></p></blockquote><p>Ας δούμε λοιπόν τι ακριβώς γίνεται στον παραπάνω κώδικα.</p><p>Για να ζωγραφίσουμε παραλληλόγραμμα χρησιμοποιούμε την εντολή:</p><pre name="code" class="js">
fillRect(x,y,width,height)
</pre><p>Στην παραπάνω εντολή το <strong>χ</strong> και το <strong>ψ</strong> αντιπροσωπεύουν την αρχή του παραλληλόγραμμου, και ώς σημείο 0,0 θεωρούμε την πάνω αριστερή γωνία του παραθύρου μας.</p><hr/><p>Για να ορίσουμε το χρώμα του παραλληλογράμμου που θα σχεδιάσουμε, ακριβώς στην γραμμή πρίν το σχεδιάσουμε χρησιμοποιούμε την εντολή:</p><pre name="code" class="js">
ctx.fillStyle = "#0873a5"
</pre><p>στην οποία δίνουμε σε δεκαεξαδική ή rgb μορφή τον κωδικό του χρώματος.</p><hr/><p>Τέλος αν θέλουμε να προσθέσουμε και περίγραμμα γύρω από το παραλληλόγραμμο μας χρησιμοποιούμε την εντολή:</p><pre name="code" class="js">
strokeRect(x,y,width,height)
</pre><p>με την οποία δίνουμε συντεταγμένες για το που ακριβώς θα ζωγραφιστεί το border.</p><hr/><p>Χρησιμοποιώντας και επιπλέον εντολές όπως στην λίστα παρακάτω μπορούμε να δημιουργήσουμε rounded corners στα borders μας, με διαφορετικό χρώμα, και διαφορετικό πάχος.</p><pre name="code" class="js">
  var rectX = 10;
  var rectY = 10;
  var rectWidth = 100;
  var rectHeight = 100;
  var cornerRadius = 15;
  context.lineJoin = "round";
  context.lineWidth = cornerRadius;
  context.strokeStyle = "rgb(0, 128, 0)";
  context.strokeRect(rectX+(cornerRadius/2), rectY+(cornerRadius/2),
  rectWidth-cornerRadius, rectHeight-cornerRadius);
</pre><p>Διαβάστε περισσότερα για το στοιχείου canvas σε μια από τις καλύτερες ιστοσελίδες για τεχνικά θέματα της HTML5, το <a
href="http://diveintohtml5.org/canvas.html" title="Dive Into HTML5" target="_blank">DiveIntoHTML5</a></p><hr/><p><a
href="http://demo.greektuts.net/html5/canvas/"><img
src="http://static.greektuts.net/uploads3/2011/09/live-demo.png" alt="" title="Live Demo" width="680" height="69" class="aligncenter size-full wp-image-5398" /></a></p><hr/><p>Εσείς τι μπορείτε να σχεδιάσετε με το στοιχείο canvas; Περιμένουμε στα σχόλια να δούμε τις δικές σας δοκιμές.</p> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/html5-canvas/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Σχετικά Με Τα Νέα Πεδία Φόρμας Στην HTML5</title><link>http://greektuts.net/about-new-form-fields-in-html5/</link> <comments>http://greektuts.net/about-new-form-fields-in-html5/#comments</comments> <pubDate>Wed, 06 Jul 2011 06:05:27 +0000</pubDate> <dc:creator>prince.gr</dc:creator> <category><![CDATA[CSS]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[input]]></category> <category><![CDATA[input fields]]></category> <category><![CDATA[new inputs]]></category> <category><![CDATA[prince.gr]]></category> <category><![CDATA[νέα πεδία]]></category> <category><![CDATA[παναγιώτης βελισαράκος]]></category> <category><![CDATA[φόρμα]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=5199</guid> <description><![CDATA[Σε αυτό το πρώτο guest άρθρο από τον Παναγιώτη Βελισαράκο, θα μάθουμε για τα νέα πεδία φόρμας που προστίθενται με τον ερχομό της HTML5 και θα δούμε κάποια ζητήματα που αφορούν στο στυλ των νέων πεδίων και τις διαφορές μεταξύ των browsers, κάτι που απασχολεί ιδιαίτερα όσους θέλουν (ή απαιτείται) τα site τους να εμφανίζονται ίδια σε κάθε browser.]]></description> <content:encoded><![CDATA[<p>Η <abbr
title="HyperText Markup Language" style="text-decoration:underline;cursor:help;">HTML</abbr>5 αναβαθμίζει αρκετά τις φόρμες, κάτι που έπρεπε να έχει συμβεί από καιρό. Στο <a
href="http://diveintohtml5.org/forms.html">Dive into HTML5</a> μπορείτε να δείτε μια παρουσίαση / ανάλυση των νέων πεδίων που έχουμε ήδη στη διάθεσή μας κι εγώ θα συμπληρώσω αυτές τις πληροφορίες με διάφορα ζητήματα που αφορούν στο στυλ των νέων πεδίων και τις διαφορές μεταξύ των browsers, κάτι που απασχολεί ιδιαίτερα όσους θέλουν (ή απαιτείται) τα site τους να εμφανίζονται ίδια σε κάθε browser.</p><hr/><h2>type=&#8221;email&#8221; και type=&#8221;url&#8221;</h2><p>Το πεδίο αυτό<br
/> <input
type="email" /> είναι το email που, όπως όλα τα καινούργια <code>input</code>s συμπεριφέρεται σαν <code>type="text"</code>σε όσους browsers δεν υποστηρίζεται. Θα δοκιμάσουμε να δώσουμε το παρακάτω (όχι πολύ όμορφο!) στυλ και θα περιμένουμε να αποκτήσει ένα εκτυφλωτικό πράσινο border σε όλους τους σύγχρονους browsers.</p><pre name="code" class="html">
input[type="text"]	{ border:1px solid #f00; }
input[type="email"],
input[type="number"],
input[type="range"],
input[type="search"],
input[type="url"]	{ border:1px solid #0f0; }
</pre><blockquote><p> <a
href="http://static.greektuts.net/uploads3/2011/07/html5inputs.png"><img
class="size-full wp-image-5212 aligncenter" title="html5inputs" src="http://static.greektuts.net/uploads3/2011/07/html5inputs.png" alt="" width="680" height="302" /></a></pre></blockquote><p><strong>Firefox</strong> 4–5, <strong>Chrome</strong> 12, <strong>Opera</strong> 11, <strong>Internet Explorer</strong> 9 και -περιέργως- 8 μια χαρά, στον Internet Explorer 7 το border είναι κόκκινο. Δουλεύει περίπου όπως μας υποσχέθηκαν! Θα περίμενα να εμφανιστεί το κόκκινο border και στον IE 8 αλλά, φαίνεται πως ναι μεν δεν αναγνωρίζει το <em>attribute</em> <code>type="email"</code> αλλά του δίνει το κατάλληλο στυλ. Ο IE 7 «δημιουργεί» ένα <code>type="text"</code> attribute που είναι το default <code>type</code> για τα <code>input</code>s και του δίνει τα αντίστοιχα στυλ.</p><p>Το ίδιο συμβαίνει και στο πεδίο <code>url</code>:<br
/> <input
type="url" /><hr/><h2>type="number"</h2><p>Το <code>number</code><br
/> <input
type="number" /> συμπεριφέρεται με τον ίδιο τρόπο — πράσινο border σε όλους τους browsers, κόκκινο στον IE 7. Ο Chrome και ο Opera προσθέτουν 2 <em>άσχημα μικρά κουμπιά-βελάκια</em> στην δεξιά άκρη του πεδίου για τον έλεγχο της τιμής του, ενώ μπορoύμε α αλλάξουμε αυτή την τιμή και με τα βελάκια του πληκτρολογίου· αυτά όμως είναι <a
href="http://diveintohtml5.org/forms.html#type-number">ήδη καταγεγραμμένα</a>, δεν έχει μείνει κάτι να προσθέσω!</p><hr/><h2>type="range"</h2> <input
type="range" value="5" /> Εδώ έχουμε πρόβλημα! Το πεδίο αυτό εμφανίζεται με πολύ διαφορετικό τρόπο σε Chrome / Opera και σε οποιοδήποτε άλλο browser και αυτό δεν είναι πολύ… χρήσιμο αφού, π.χ. για να δω την τιμή που έχω επιλέξει πρέπει να χρησιμοποιήσω Javascript. Θα δοκιμάσω μερικά στυλ να δω τι θα γίνει:</p><pre name="code" class="html">
input[type="range"] {
	border:0 none;
	background-color:#009;
	color:#fff;
	width:60px;
	height:16px;
}
</pre><p>Το <code>border</code> δεν το χρειαζόμαστε — άλλωστε δεν εμφανίζεται καν σε Chrome και μάλλον είναι καλύτερα έτσι. Το <code>background-color</code> αγνοείται από τους browsers που σχεδιάζουν <em>sliders</em> αντί για <code>input</code>s, όπως επίσης και το <code>color</code>, αφού δεν υπάρχει κείμενο να πάρει χρώμα. Οι περισσότεροι browsers σέβονται τις διαστάσεις που ζήτησα εκτός από τον Chrome που αδιαφορεί για το ύψος. Στον Opera βέβαια το ύψος ενδέχεται να δημιουργήσει πρόβλημα αφού μπορεί το χειριστήριο να γίνει τόσο μικρό που να είναι άχρηστο! Η γνώμη μου είναι -ντρέπομαι που το λέω- να χρησιμοποιήσετε jQuery UI για αυτή τη δουλειά (ή κάποιο άλλο Javascript) αφού οι διαφορές δεν είναι μόνο οπτικές αλλά και λειτουργικές.</p><hr/><h2>type="date"</h2><p>Για την ακρίβεια, όχι μόνο <code>date</code> αλλά και <a
href="http://diveintohtml5.org/forms.html#type-date">διάφορες παραλλαγές ημερομηνίας και ώρας</a>. Ξεχάστε το καλύτερα, μόνο ο Opera κάνει κάτι χρήσιμο με αυτά τα πεδία ενώ ο Chrome εμφανίζει τα άσχημα μικρά βελάκια του <code>number</code> που δεν βοηθούν καθόλου στη συμπλήρωση του πεδίου. Καλύτερα να μείνουμε στην Javascript για λίγο ακόμα.</p><hr/><h2>type="search"</h2><p>Το <code>search</code><br
/> <input
type="search" /> δεν έχει κάποια ιδιαιτερότητα εκτός από το <strong>x</strong> που εμφανίζεται στην δεξιά μεριά σε Webkit browsers και μου επιτρέπει να καθαρίσω το πεδίο.</p><hr/><h2>type="color"</h2> <input
type="color" /> Color; Αλήθεια; Give me a break!</p><hr/><h2>Επίλογος</h2><p>Μπορούμε από τώρα, άφοβα, να εντάξουμε τα <code>email</code>, <code>url</code>, <code>number</code> και <code>search</code> στον κώδικά μας αφού είναι σίγουρο πως οι browsers σιγά-σιγά θα χρησιμοποιήσουν αυτά τα πεδία για να διευκολύνουν τον χρήστη, όπως π.χ. κάνει το iOS με τα <code>email</code>, <code>url</code> και <code>number</code>, ενώ δεν δημιουργούν προβλήματα σε παλιότερους browsers. Χρειάζεται λίγες γραμμές παραπάνω CSS αλλά αυτό δεν είναι πρόβλημα. Για τα υπόλοιπα πεδία, <code>range</code>, <code>date</code> (και παραλλαγές) και <code>color</code>, εγώ δηλώνω μάλλον επιφυλακτικός αφού η εμφάνιση διαφέρει πολύ από browser σε browser και ίσως τελικά να χρειαστείτε περισσότερη Javascript. Ίσως να είναι νωρίς ακόμα, θα δούμε!</p> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/about-new-form-fields-in-html5/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>GreekTuts Sessions</title><link>http://greektuts.net/greektuts-sessions-description/</link> <comments>http://greektuts.net/greektuts-sessions-description/#comments</comments> <pubDate>Fri, 24 Jun 2011 10:12:56 +0000</pubDate> <dc:creator>Pantso</dc:creator> <category><![CDATA[+]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[Illustrator]]></category> <category><![CDATA[Internet]]></category> <category><![CDATA[Javascript]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[Photoshop]]></category> <category><![CDATA[SEO]]></category> <category><![CDATA[Web Building]]></category> <category><![CDATA[Wordpress]]></category> <category><![CDATA[front end design]]></category> <category><![CDATA[Google]]></category> <category><![CDATA[greektuts sessions]]></category> <category><![CDATA[online lessons]]></category> <category><![CDATA[private lessons]]></category> <category><![CDATA[seo]]></category> <category><![CDATA[sessions]]></category> <category><![CDATA[web design lessons]]></category> <category><![CDATA[Μαθήματα online]]></category> <category><![CDATA[μαθήματα web design]]></category> <category><![CDATA[μαθήματα υπολογιστών]]></category> <category><![CDATA[σεμινάρια υπολογιστών]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=5091</guid> <description><![CDATA[Μετά από 6 μήνες προετοιμασίας, βρισκόμαστε επιτέλους στην ευχάριστη θέση να ανακοινώσουμε την νέα μας προσφορά. Σε μια σειρά προσωπικών Online Εκπαίδευσεων που θα ξεκινήσει τον Σεπτέμβριο, μπορείτε να μπείτε και εσείς στον κόσμο του Web Design και να μάθετε πως να δημιουργείτε ιστοσελίδες σαν επαγγελματίας. Το μόνο εργαλείο που θα χρειαστείτε είναι ο browser σας και όρεξη για μάθηση. Διαβάστε περισσότερα]]></description> <content:encoded><![CDATA[<p>Βρισκόμαστε σε μια εποχή που πλέον κατακλύζεται από ιστοσελίδες και web designers, και όπου πολλοί νέοι επιλέγουν αυτόν τον τομέα για τις σπουδές τους και την επαγγελματική τους κατάρτιση. Υπάρχουν επίσης πολλές περιπτώσεις στις οποίες η κατασκευή μιας ιστοσελίδας παρεξηγείται σαν έννοια, και το τελικό αποτέλεσμα δεν είναι το αναμενόμενο.</p><p>Σε μια προσπάθεια να κάνουμε πιο κατανοητά και διακριτά τα βήματα που χρειάζεται να ακολουθηθούν, αλλά και τις γνώσεις που χρειάζονται, για την δημιουργία μιας ιστοσελίδας, από την σκέψη μέχρι την υλοποίηση και την συντήρηση, προσφέρουμε σε όλους τους επισκέπτες μας μια σειρά από προσωπικούς online εκπαιδευτικούς οδηγούς που θα ξεκινήσει τον Σεπτέμβριο.</p><p>Αν ενδιαφέρεστε να συμμετάσχετε στις εκπαιδεύσεις και να μάθετε και εσείς πως να δημιουργείτε ιστοσελίδες με τον σωστό τρόπο, διαβάστε περισσότερες πληροφορίες παρακάτω.</p><hr
/><blockquote><p><a
href="#form"><img
class="size-full wp-image-5096 aligncenter" title="gts-big2" src="http://static.greektuts.net/uploads3/2011/06/gts-big2.png" alt="" width="680" height="450" /></a></p></blockquote><hr
/><h1>Τι είναι τα GreekTuts Sessions</h1><p>Τα GreekTuts Sessions είναι μια σειρά από <strong>προσωπικούς online εκπαιδευτικούς οδηγούς</strong> που θα ξεκινήσουν από τον Σεπτέμβριο. H διεξαγωγή αυτών των οδηγών θα γίνει μέσω μιας online πλατφόρμας e-learning, που σας προσφέρει δυνατότητα αλληλεπίδρασης με τον παρουσιαστή σας. Οι εκπαιδεύσεις είναι <strong>προσωπικές</strong>, πράγμα που σημαίνει ότι έχετε την δυνατότητα να μάθετε όλα όσα χρειάζεστε από το σπίτι σας, τις ώρες και μέρες που σας βολέυουν.</p><p>Κατά την παρουσίαση, θα μπορείτε να δείτε σε <strong>video</strong> την εκπαίδευση και να κάνετε ερωτήσεις όσο συχνά χρειαστεί. Το μόνο εργαλείο που θα χρειαστείτε είναι <strong>ο αγαπημένος σας browser</strong>, και <strong>πολύ όρεξη για μάθηση</strong>.</p><p>Επίσης, μετά την ολοκλήρωση των εκπαιδεύσεων, θα μπορείτε να έχετε πλήρη πρόσβαση στα video αλλά και σε όλο το εκπαιδευτικό υλικό, με τους κωδικούς σας <strong>για πάντα</strong>.</p><hr
/><h1>Πακέτα Εκπαιδεύσεων</h1><p>Σας προσφέρουμε 2 διαφορετικά πακέτα συμμετοχής στις εκπαιδεύσεις, για να διαλέξετε αυτό που σας συμφαίρει και σας βολέυει.</p><ul><li><strong>Πλήρες Πακέτο &#8211; Για παρακολούθηση όλης της σειράς </strong></li><li><strong>Συγκεκριμένο Κεφάλαιο &#8211; Για παρακολούθηση ενός συγκεκριμένου κεφαλαίου</strong></li></ul><p><em>* Οι τιμές των 2 πακέτων θα ανακοινωθούν σύντομα.</em></p><hr
/><h1>Περιεχόμενα Online Εκπαιδεύσης</h1><p><strong>Κεφάλαιο 1 &#8211; HTML &amp; CSS</strong></p><p>Σε αυτό το κεφάλαιο θα καλύψουμε όλες τις βασικές έννοιες για την γλώσσας προγραμματισμού του internet, την HTML, και θα δούμε όλα όσα χρειάζεται για το πώς μπορούμε να δώσουμε μορφοποίηση και στύλ στις σελίδες μας, με την χρήση των CSS.</p><p><strong>Κεφάλαιο 2 &#8211; Javascript &amp; jQuery</strong></p><p>Σε αυτό το κεφάλαιο θα καλύψουμε όλες τις βασικές λειτουργίες για την Javascript και θα δούμε πως μπορούμε έυκολα και γρήγορα να κάνουμε το περιεχόμενο της ιστοσελίδας μας πιο ενδιαφέρον και διαδραστικό για τον χρήστη. Επίσης θα δούμε τα πάντα για την διάσημη βιβλιοθήκη jQuery</p><p><strong>Κεφάλαιο 3 &#8211; Front End Design</strong></p><p>Σε αυτό το κεφάλαιο θα δούμε όλες τις βασικές αρχές που πρέπει να ακολουθούμε κατά την διάρκεια σχεδιασμού μιας ιστοσελίδας, και ποιά είναι τα λάθη που πρέπει να αποφέυγουμε. Επίσης θα δούμε και θα αναλύσουμε ποιά είναι τα διάφορα styles και trends που ακολουθούνται από designers σε όλο τον κόσμο.</p><p><strong>Κεφάλαιο 4 &#8211; WordPress</strong></p><p>Σε αυτό το κεφάλαιο θα μάθουμε για πάντα για το WordPress. Από το πως θα στήσουμε ένα δικό μας απλό blog, μέχρι πως θα δημιουργήσουμε μια κομψή και περίπλοκη ιστοσελίδα χρησιμοποιώντας το WordPress. Τέλος θα δούμε την δομή ενός θέματος και ενός plugin και θα μάθουμε τα βασικά για την δημιουργία του δικού σας θέματος και του δικού σας Plugin.</p><p><strong>Κεφάλαιο 5 &#8211; SEO &amp; Promotion</strong></p><p>Σε αυτό το κεφάλαιο θα μιλήσουμε για τις μηχανές αναζήτησεις και για το πώς μπορούμε να ανεβάσουμε την ιστοσελίδα μας ψηλά στις λίστες αποτελεσμάτων. Θα δούμε διάφορες τεχνικές προαγωγής της σελίδας μας, και όλα όσα πρέπει να αποφύγουμε κατά την προσπάθεια του Search Engine Optimization.</p><hr
/><h1 id="form"><strong>Φόρμα Εκδήλωσης Ενδιαφέροντος</strong></h1><p>Μπορείτε να συμπληρώσετε την φόρμα εκδήλωσης ενδιαφέροντος που ακολουθεί, και εμείς θα επικοινωνήσουμε μαζί σας για να συζητήσουμε τις μέρες και τις ώρες που θα γίνονται οι εκπαιδεύσεις, αλλά και να σας λύσουμε τυχόν απορίες που μπορεί να έχετε για το πρόγραμμα των εκπαιδεύσεων.</p><blockquote><p><strong>[contact-form-7]<br
/> </strong></p></blockquote> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/greektuts-sessions-description/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Πως να κρύψετε το email σας από μηχανές συλλογής</title><link>http://greektuts.net/hide-email-from-spam-harvesters/</link> <comments>http://greektuts.net/hide-email-from-spam-harvesters/#comments</comments> <pubDate>Tue, 02 Nov 2010 07:52:51 +0000</pubDate> <dc:creator>Pantso</dc:creator> <category><![CDATA[HTML]]></category> <category><![CDATA[Javascript]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[Web Building]]></category> <category><![CDATA[antispam]]></category> <category><![CDATA[antispam emails]]></category> <category><![CDATA[email collectors]]></category> <category><![CDATA[email confuscator]]></category> <category><![CDATA[email harvesters]]></category> <category><![CDATA[hide email]]></category> <category><![CDATA[spam]]></category> <category><![CDATA[spam control]]></category> <category><![CDATA[spam emails]]></category> <category><![CDATA[κρύψτε το email σας]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=4398</guid> <description><![CDATA[Ένα από τα πιο ενοχλητικά και δύσκολα, σε όσα έχει να κάνει με την επίλυση του, προβλήματα που συναντάμε στον χώρο της δημιουργίας ιστοσελίδων, είναι τα spam email. Διάφορες μηχανές αναζήτησης και μαζικής συλλογής email διευθύνσεων, διαβάζουν εκατομμύρια σελίδες καθημερινά, αναλύουν τον κώδικα τους και βρίσκουν διευθύνσεις τις οποίες χρησιμοποιούν στα spam email. Ας δούμε τι μπορούμε να κάνουμε για αυτό]]></description> <content:encoded><![CDATA[<p>Χρησιμοποιώντας την jQuery, θα αποκρύψουμε το email μας από όλες τις μηχανές που διαβάζουν τον πηγαίο κώδικα της ιστοσελίδας μας και αναζητούν για διευθύνσεις email. Aς δούμε πως θα το κάνουμε αυτό.</p><p>Συνήθως στην ιστοσελίδα μας έχουμε κάποιο footer στο οποίο δημοσιεύουμε στοιχεία επικοινωνίας. Πολλοί καταφεύγουν στην λύση του να χρησιμοποιούν εικόνες για παράδειγμα</p><blockquote><p
style="text-align: center;"><img
class="size-full wp-image-4401 aligncenter" src="http://static.greektuts.net/uploads3/2010/11/email.jpg" alt="" width="640" height="61" /></p></blockquote><p>Με την παραπάνω εικόνα ενημερώνουμε τον χρήστη για την διεύθυνση email μας, και ταυτόχρονα δεν επιτρέπουμε στις μηχανές συλλογής email να την δούν. Παρόλαυτά όμως με αυτόν τον τρόπο πρώτον γεμίζουμε την σελίδα μας με εικόνες κάθε φορά που θέλουμε να εμφανίσουμε το email μας, πράγμα που επιβαρύνει και σε θέματα bandwidth, και δεύτερον είναι αρκετά δύσκολο για τον χρήστη γιατί για να επικοινωνήσει μαζί μας, πρέπει να κοιτάει την εικόνα και να κάνει αντιγραφή την διεύθυνση.</p><p>Ο σωστός τρόπος λοιπόν να το κάνουμε αυτό είναι ο εξής:</p><p>Ανοίγουμε τον κώδικα της σελίδας μας και βρίσκουμε το &lt;head&gt; μέρος στην κορυφή του HTML κώδικα μας.</p><p>Εκεί θα προσθέσουμε τις παρακάτω γραμμές</p><pre name="code" class="js">
&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" /&gt;
&lt;script type="text/javascript"&gt;
$(document).ready(function() {
$('a.email').each(function(i) {
var text = $(this).text();
var address = text.replace("*[se]*", "@");
$(this).attr('href', 'mailto:' + address);
$(this).text(address);
});
});
&lt;/script&gt;
</pre><p>Το μόνο που έχουμε να κάνουμε τώρα, είναι να γράψουμε το email μας με την μορφή</p><blockquote><pre name="code" class="html"><a class="email">διεύθυνση*[se]*</span>domain.gr</a></pre></blockquote><p>Ας δούμε ακριβώς τι κάνει ο παραπάνω κώδικας για να καταλάβουμε πως λειτουργεί</p><p>Με την γραμμή</p><pre name="code" class="js">
&lt;script type="text/javascript"  src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"  /&gt;
</pre><p>καλούμε την jQuery στην σελίδα μας</p><p>Με την γραμμή</p><pre name="code" class="js">
$(document).ready(function() {
</pre><p>βεβαιωνόμαστε ότι η σελίδα έχει φορτώσει πλήρως πρίν τρέξει ο κώδικας που ακολουθεί.</p><p>Με την γραμμή</p><pre name="code" class="js">
$('a.email').each(function(i) {
</pre><p>επιλέγουμε κάθε &lt;a&gt; tag που έχει class=&#8221;email&#8221;</p><p>Με τις γραμμές</p><pre name="code" class="js">
var text = $(this).text();
var address = text.replace("*[se]*", "@");
</pre><p>δημιουργούμε 2 νέες μεταβλητές (text και address) και κάνουμε την μετατροπή των χαρακτήρων *[se]* σε παπάκι (@)</p><p>Με τις γραμμές</p><pre name="code" class="js">
$(this).attr('href', 'mailto:' + address);
$(this).text(address);
</pre><p>προσθέτουμε τα χαρακτηριστικά href, mailto και την διεύθυνση στο link μας.</p><p>Έτσι λοιπόν ο παραπάνω κώδικας, ψάχνει τα &lt;a class=&#8221;email&#8221;&gt; tags που βρίσκονται στην σελίδα μας, και μετατρέπει τους χαρακτήρες *[se]* σε παπάκι (@).</p><p>Με άλλα λόγια, όπου εμείς γράψουμε <strong>διεύθυνση*[se]*domain.gr</strong> η jQuery θα αναλάβει να το μετατρέψει σε <strong>διεύθυνση@domain.gr </strong>μόλις<strong> </strong>φορτώσει η σελίδα<strong></strong></p><p>Δοκιμάστε το και εσείς και ίσως ξενοιάσετε από τα ενοχλητικά spam emails.<strong><br
/> </strong></p><p><strong>TIP:</strong> Μπορείτε να αλλάξετε το *[se]* σε ότι συνδιασμό χαρακτήρων θέλετε αλλά μετά τα email στον HTML κώδικα σας θα πρέπει να τα μετατρέψετε αναλόγως.</p> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/hide-email-from-spam-harvesters/feed/</wfw:commentRss> <slash:comments>12</slash:comments> </item> <item><title>Δημιουργία Κουμπιών Με Την Μέθοδο Sliding Doors</title><link>http://greektuts.net/sliding-doors-buttons/</link> <comments>http://greektuts.net/sliding-doors-buttons/#comments</comments> <pubDate>Tue, 21 Sep 2010 08:15:52 +0000</pubDate> <dc:creator>Pantso</dc:creator> <category><![CDATA[CSS]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[Photoshop]]></category> <category><![CDATA[button]]></category> <category><![CDATA[buttons]]></category> <category><![CDATA[css button]]></category> <category><![CDATA[html and css]]></category> <category><![CDATA[html button]]></category> <category><![CDATA[htmls and css button]]></category> <category><![CDATA[sliding]]></category> <category><![CDATA[sliding doors]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=4237</guid> <description><![CDATA[Σε αυτό το βοήθημα θα δούμε πως μπορούμε να δημιουργήσουμε κομψά κουμπιά για την ιστοσελίδα μας, χρησιμοποιώντας την μέθοδο Sliding Doors, με την οποία μπορούμε να βάλουμε εικόνα στο background του κουμπιού μας και να το κάνουμε να δείχνει πιο όμορφο.]]></description> <content:encoded><![CDATA[<p>Τα πλεονεκτήματα χρησιμοποίησης αυτής της μεθόδου, είναι πως μπορούμε να κάνουμε το κουμπί μας όσο μεγάλο θέλουμε, και να του προσθέσουμε και hover και active καταστάσεις χρησιμοποιόντας τις εικόνες του παρασκηνίου. Ας δούμε αναλυτικά πως μπορούμε να το κάνουμε</p><h1>Βήμα 1</h1><p>Σχεδιάζουμε στο Photoshop (ή σε όποιο άλλο πρόγραμμα της αρεσκείας μας) τις δύο εικόνες που θα χρησιμοποιήσουμε ως παρασκήνιο στα κουμπιά μας</p><p>Δημιουργούμε ένα νέο κενό έγγραφο διαστάσεων 300px x 66px</p><blockquote><p
style="text-align: center;"><img
class="size-full wp-image-4240 aligncenter" src="http://static.greektuts.net/uploads3/2010/09/1.jpg" alt="" width="580" height="450" /></p></blockquote><h1>Βήμα 2</h1><p>Χρησιμοποιοώντας το Rounded Rectangle Tool και βάζοντας 5px radius καλύπτουμε το μισό της εικόνας μας με ένα παραλληλόγραμμο με τον εξής τρόπο</p><blockquote><p
style="text-align: center;"><img
class="size-full wp-image-4241 aligncenter" src="http://static.greektuts.net/uploads3/2010/09/2.jpg" alt="" width="580" height="450" /></p></blockquote><h1>Βήμα 3</h1><p>Ανοίγουμε τα Blending Options και βάζουμε τις παρακάτω επιλογές</p><blockquote><p
style="text-align: center;"><img
class="alignnone size-full wp-image-4242" src="http://static.greektuts.net/uploads3/2010/09/3.jpg" alt="" width="580" height="450" /></p><p
style="text-align: center;"><img
class="alignnone size-full wp-image-4243" src="http://static.greektuts.net/uploads3/2010/09/4.jpg" alt="" width="580" height="450" /></p></blockquote><h1>Βήμα 4</h1><p>Κάνουμε Duplicate το επιλεγμένο Layer (δεξί κλικ στο layer και Duplicate Layer) και ανοίγουμε τα Blending Options του νέου layer. Στις παραπάνω επιλογές απλά επιλέγουμε το κουτάκι Reverse και στο Gradient Overlay και στο Stroke. Αμέσως μετά, φέρνουμε το νέο Layer μας ακριβώς από κάτω από το πρώτο, και έτσι γεμίζουμε την εικόνα μας με 2 αντίθετες κατά τον άξονα Χ εικόνες. Τέλος αποθηκεύουμε την εικόνα μας με το όνομα bg_button_span.gif</p><blockquote><p
style="text-align: center;"><img
class="size-full wp-image-4244 aligncenter" src="http://static.greektuts.net/uploads3/2010/09/5.jpg" alt="" width="580" height="450" /></p></blockquote><h1>Βήμα 5</h1><p>Δημιουργούμε μια νέα εικόνα μεγέθους 18px x 66px και επαναλαμβάνουμε τα παραπάνω βήματα μέχρι να φτάσουμε στο εξής αποτέλεσμα</p><blockquote><p
style="text-align: center;"><img
class="size-full wp-image-4245 aligncenter" src="http://static.greektuts.net/uploads3/2010/09/6.jpg" alt="" width="580" height="450" /></p></blockquote><p>Αποθηκεύουμε την εικόνα αυτή με το όνομα bg_button_a.gif</p><h1>Βήμα 6</h1><p>Τώρα ας ξεκινήσουμε να γράφουμε τον κώδικα μας. Ξεκινάμε δημιουργώντας 2 νέα αρχεία, με τα ονόματα index.html και style.css. Ανοίγουμε το index.html με τον αγαπημένο μας text editor και γράφουμε:</p><pre name="code" class="html">
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;link rel="stylesheet" href="style.css" type="text/css"  media="screen" /&gt;
&lt;title&gt;Buttons Test&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre><p>Με τον παραπάνω κώδικα δημιουργήσαμε την σελίδα μας, και την συνδέσαμε με το αρχείο style.css στο οποίο θα προσθέσουμε τα διάφορα styles που χρειάζονται</p><h1>Βήμα 7</h1><p>Τώρα ανοίγουμε το style.css και γράφουμε</p><pre name="code" class="css">
body    {width:960px;margin:0 auto;}
.clear {
overflow: hidden;
width: 100%;
}
</pre><p>Με τον παραπάνω κώδικα δημιουργήσαμε τα βασικά styles που χρειζόμαστε.</p><h1>Βήμα 8</h1><p>Τώρα ήρθε η ώρα να δημιουργήσουμε το κουμπί μας. Μέσα στο &lt;body&gt; του αρχείου index.html θα προσθέσουμε τον εξής κώδικα</p><pre name="code" class="html">
&lt;a href="#"&gt;&lt;span&gt;Blue Button&lt;/span&gt;&lt;/a&gt;
</pre><p>Με τον παραπάνω κώδικα δημιουργούμε ένα νέο σύνδεσμο (Anchor) και μέσα προσθέτουμε ένα &lt;span&gt;</p><h1>Βήμα 9</h1><p>Ας δώσουμε τώρα style στο στοιχείο που δημιουργήσαμε. Στο αρχείο style.css γράφουμε</p><pre name="code" class="css">
a {
background: transparent url('images/bg_button_a.gif') no-repeat scroll top right;
color: #fff;
display: block;
float: left;
font: normal 12px arial, sans-serif;
height: 33px;
margin-right: 6px;
padding-right: 18px;
text-decoration: none;
outline:0;
}
a span {
background:url("images/bg_button_span.gif") no-repeat scroll 0 0 transparent;
display:block;
line-height:24px;
padding:4px 0 5px 18px;
}
a:hover {
background-position: bottom right;
color: #fff;
outline: none;
}
a:hover span {
background-position: bottom left;
padding: 5px 0 4px 18px;
}
</pre><p>Με τον παραπάνω κώδικα δώσαμε όλες τις ιδιότητες που χρειάζεται στο στοιχείο που δημιουργήσαμε. Του δώσαμε εικόνα παρασκηνίου για το Anchor και για το Span, του δώσαμε χρώμα κειμένου, ύψος και πλάτος, καθώς και όλες τις ιδιότητες που χρειάζεται για να δουλέυει σαν κουμπί.</p><h1>Αποτέλεσμα</h1><blockquote><p
style="text-align: center;"><img
class="size-full wp-image-4247 aligncenter" src="http://static.greektuts.net/uploads3/2010/09/7.jpg" alt="" width="580" height="450" /></p></blockquote><p>Πειραματιστείτε με διαφορετικά χρώματα στις εικόνες σας και με μεγαλύτερους τίτλους στα κουμπιά σας και σίγουρα θα φτάσετε στο αποτέλεσμα που θεωρείτε εσείς ικανοποιητικό. Κατεβάστε τα αρχεία που ακολουθούν και δείτε και τις διάφορες άλλες δυνατότες που έχουμε χρησιμοποιώντας αυτή τη μέθοδο.</p><blockquote><p
style="text-align: center;"><em><strong>Μπορείτε να κατεβάσετε τα    αρχεία του βοηθήματος εδώ</strong></em></p><p
style="text-align: center;"><a
href="http://static.greektuts.net/uploads3/2010/09/GreekTuts_SlidingDoorsButtons.zip" target="_blank"><em><strong><img
src="../wp-content/uploads/2009/10/membersdownload1.png" alt="download" width="200" height="200" /></strong></em></a></p></blockquote> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/sliding-doors-buttons/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Απλό Σύστημα Εγγραφής Χρηστών: Ασφάλεια και Παραμετροποίηση</title><link>http://greektuts.net/register-system-part2-security-and-optimization/</link> <comments>http://greektuts.net/register-system-part2-security-and-optimization/#comments</comments> <pubDate>Mon, 13 Sep 2010 13:04:15 +0000</pubDate> <dc:creator>Jimakos</dc:creator> <category><![CDATA[HTML]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[jimakos]]></category> <category><![CDATA[login]]></category> <category><![CDATA[login system]]></category> <category><![CDATA[register]]></category> <category><![CDATA[register system]]></category> <category><![CDATA[security]]></category> <category><![CDATA[sql]]></category> <category><![CDATA[ασφάλεια]]></category> <category><![CDATA[Παραμετροποίηση]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=4126</guid> <description><![CDATA[Στο προηγούμενο αρθρο είδαμε πως μπορούμε να δημιουργησουμε μια φόρμα απο την οποία μπορεί κάποιος να κανει εγγραφή χρηστη(Απλο Συστημα Εγγραφης Χρηστων) . Σε αυτό το μέρος θα δούμε ένα πολύ σημαντικο κομματι στα προγραμματα που είναι η ασφάλεια των δεδομένων και η ακαιρεότητα τους.]]></description> <content:encoded><![CDATA[<p>Σε αυτο το αρθρο θα δούμε πως μπορούμε να ασφαλίσουμε την φόρμα μας εναντι κακόβουλων επιθέσεων βλ. <a
href="http://en.wikipedia.org/wiki/Cross-site_scripting">Cross Site Scripting (XSS)</a> ,<a
href="http://en.wikipedia.org/wiki/SQL_injection">SQL injections</a> και πολλα αλλα που δεν είναι του παρόντος!</p><h1>Τι ειναι ασφάλεια λοιπον;</h1><p>Ασφάλεια ειναι το κομματι κώδικα που θα προστατεψει εσάς και το συστημα σας και ενδεχομένος στην περίπτωση μας  τους χρηστες μας  απο κακόβουλες επιθέσεις .</p><p>Χρησιμοποιώντας ασφάλεια στο κώδικα μας ερχομαστε πιο κοντα στην ιδέα του “<a
href="http://en.wikipedia.org/wiki/Defensive_programming">αμυντικου προγραμματισμου</a>” δηλαδη την προσπάθεια του προγραμματιστη να ελενξει για λάθη των χρηστών τα οποία θα γινουν απο αμέλεια η επιτιδευμένα ας δουμε λοιπον ενα μικρό παράδειγμα:</p><h3><strong>Έστω οτι έχουμε μια φόρμα  οπου ζητάμε απο  τον χρήστη να εισάγει τον αριθμό του κινητού του :</strong></h3><p>Ο PhP κώδικας μας συνήθως θα είναι καπως ετσι:</p><pre name="code" class="php">
$arithmos=$_POST['onoma_pediou'];
echo $arithmos;
</pre><p>Εστω οτι στο πεδίο της mySql εχουμε δηλωσει  να ειναι INT δηλαδή τα δεδομένα που θα εισαχθουν απο τον χρήστη στην βαση δεδομενων θα ειναι αριθμοι .Εμεις  μπορουμε να υποθέσουμε οτι ο χρήστης παντα θα εισάγει αριθμους .</p><p>Στον αμυντικό προγραμματισμο ομως ποτε δεν εμπιστευόμαστε τα δεδομενα που εισάγει ο χρήστης και παντοτε τα ελεγχουμε οποτε στην περιπτωση μας αν ο χρήστης εισάγει στον παραπάνω κώδικα χαρακτήρες και οχι αριθμούς στην βάση δεδομένων μας το πεδίο με το τηλέφωνο θα πάρει την τιμή 0 κατι που δεν θελουμε δηλαδη.</p><p>Ας δουμε πως θα ειναι ο κώδικας που θα πρεπε να γραψουμε για να αποφύγουμε το λάθος αυτο.</p><pre name="code" class="php">
function check($dedomeno)
{
$dedomeno = <a href="http://php.net/manual/en/function.trim.php">trim</a>($dedomeno);
$dedomeno = <a href="http://gr.php.net/manual/en/function.stripslashes.php">stripslashes</a>($dedomeno);
$dedomeno = <a href="http://php.net/manual/en/function.htmlspecialchars.php">htmlspecialchars</a>($dedomeno);
return $dedomeno;
}
if($_SERVER['REQUEST_METHOD']=='POST'){
if(isset($_POST['submit'])){
if(empty($_POST['number']))
{
echo "Δεν εχετε συμπληρώσει το πεδιο τηλέφωνο";
}
elseif(!ctype_digit(check(($_POST['number']))))
{
echo "Παρακαλω συμπληρώστε μονο αριθμους";
}
else
{
//εισαγωγή στοιχείων στην βάση δεδομένων
}
}
}
?&gt;
</pre><p>Μεγάλο ε ?</p><p>Μην αναχώνεστε ας το εξηγήσουμε σιγά σιγά :</p><p>Δημιουργούμε μια συνάρτηση με όνομα check και δέχεται ένα όρισμα το $dedomeno τα δεδομένα που θέλουμε να επαληθεύσουμε .</p><p>Έπειτα η trim αφαιρεί τα κενά και άλλους χαρακτήρες από την αρχή του δεδομένου και από το τέλος.</p><p>Στην συνέχει το stripslashes αφαιρεί τα εισαγωγικά από τα δεδομένα μας</p><p>Τέλος το htmlspecialchars μετατρέπει τους ειδικούς χαρακτήρες σε HTML οντότητες για αποτροπή των χρηστών να εισάγουν δεδομένα του τύπου &lt;a href=1&gt;1&lt;/a&gt;</p><pre name="code" class="php">
function check($dedomeno)
{
$dedomeno = <a href="http://php.net/manual/en/function.trim.php">trim</a>($dedomeno);
$dedomeno = <a href="http://gr.php.net/manual/en/function.stripslashes.php">stripslashes</a>($dedomeno);
$dedomeno = <a href="http://php.net/manual/en/function.htmlspecialchars.php">htmlspecialchars</a>($dedomeno);
return $dedomeno;
}
</pre><p>Ελέγχουμε τον τρόπο που ζητήθηκε η αίτηση</p><pre name="code" class="php">
if($_SERVER['REQUEST_METHOD']=='POST')
</pre><p>Ελέγχουμε εάν έχει γίνει submit</p><pre name="code" class="php">
if(isset($_POST['submit']))
</pre><p>Ελέγχουμε εάν είναι κενό το πεδίο</p><pre name="code" class="php">
if(empty($_POST['number']))
</pre><p>Τέλος ελέγχουμε εάν το πεδίο είναι αριθμός με την συνάρτηση ctype_digit η οποία ελέγχει όλη την μεταβλητή που έχουμε δώσει ως όρισμα για να “δει” εάν είναι η δεν είναι αριθμός.</p><pre name="code" class="php">
elseif(!ctype_digit(check(($_POST['number']))))
</pre><p>Αφού πήραμε μια γεύση μπορούμε πλέον να παραμετροποιήσουμε το <a
href="../register-system/">προηγούμενο αρθρο μου </a></p><p>Πάμε σιγά σιγά να το κάνουμε μαζί.</p><p>Αυτό που μας ενδιαφέρει είναι να ελέγξουμε τα δεδομένα που εισάγει ο χρήστης τον έλεγχο δηλαδή της ακεραιότητα τους οπότε ας κοιτάξουμε μόνο τα κομμάτια κώδικα που πρέπει να τροποποιήσουμε :</p><p>Αυτή την φορά θα προσθέσουμε μια συνάρτηση για δική μας ευκολία η οποία θα περνάει τα δεδομένα που στέλνει ο χρήστης από μια σειρά ελέγχων :</p><pre name="code" class="php">
db_con();
function check($dedomeno)  
{  
$dedomeno = &lt;a onclick="javascript:pageTracker._trackPageview('/outgoing/php.net/manual/en/function.trim.php');" href="http://php.net/manual/en/function.trim.php"&gt;trim&lt;/a&gt;($dedomeno);  
$dedomeno = &lt;a onclick="javascript:pageTracker._trackPageview('/outgoing/gr.php.net/manual/en/function.stripslashes.php');" href="http://gr.php.net/manual/en/function.stripslashes.php"&gt;stripslashes&lt;/a&gt;($dedomeno);  
$dedomeno = &lt;a onclick="javascript:pageTracker._trackPageview('/outgoing/php.net/manual/en/function.htmlspecialchars.php');" href="http://php.net/manual/en/function.htmlspecialchars.php"&gt;htmlspecialchars&lt;/a&gt;($dedomeno);  
return $dedomeno;  
}
</pre><p>Παρατηρήστε ότι είναι ίδια με την προηγούμενη με την διαφορά ότι έχει συν μια συνάρτηση την mysql_real_escape_string τι κάνει η συνάρτηση αυτή ;Βγάζει τους ειδικούς χαρακτήρες από ένα string το οποίο θα δώσουμε στην περίπτωσή μας τα στοιχεία που θα εισάγει ο χρήστης.</p><p>Έπειτα</p><pre name="code" class="php">
$name =check($_POST['name']);
$pass = check($_POST['password']);
$email = check($_POST['email']);
</pre><p>με την συνάρτηση μας τσεκάρουμε όλα τα δεδομένα που αποστέλνονται από την φόρμα εισαγωγής.</p><pre name="code" class="php">
if($_SERVER['REQUEST_METHOD']=='POST'){
if(isset($_POST['submit'])){
unset($_SESSION['errors']);
unset($_SESSION['error2']);
unset($_SESSION['success']);
</pre><p>Χρησιμοποιούμε όπως και στο παραπάνω παράδειγμα τον έλεγχο για να δούμε τον τρόπο με τον οποίο αποστέλνονται τα δεδομένα εάν είναι έγκυρο αυτό τότε ελέγχουμε αν έχει πατηθεί το κουμπάκι καταχώρηση εάν έχει γίνει σβήνουμε ότι μεταβλητές υπάρχουν στα</p><pre name="code" class="php">
$_SESSION['errors']
$_SESSION['error2']
$_SESSION['success']
</pre><p>για να αποφύγουμε τυχόν λάθη !</p><p>Ο έλεγχος για να δούμε εάν τα πεδία είναι άδεια η έχουν σταλεί λάθος δεδομένα.!</p><pre name="code" class="php">
if(empty($name)){
$_SESSION['errors']=" Το πεδίο όνομα θα πρέπει να συμπληρωθεί "."&lt;br&gt; ";
}
if(empty($pass)){
$_SESSION['errors'].=" Το πεδίο κωδικός θα πρέπει να συμπληρωθεί"." &lt;br&gt; ";
}
if(empty($email) ){
$_SESSION['errors'].=" Το πεδίο email θα πρέπει να συμπληρωθεί "."&lt;br&gt; ";
}
else{
if(!isEmail($email)){
$_SESSION['errors'].="Το πεδίο email θα πρέπει να είναι της μορφής xxx@xxx.xx ";
}
}
</pre><p>Εάν δεν υπάρχουν λάθη τότε  προχωράμε στην σύνδεση της βάσης ελέγχουμε αν υπάρχει κάποιος χρήστης με το όνομα αυτό αν ναι επιστρέφουμε λάθος αν όχι συνεχίζουμε στην εισαγωγή των στοιχείων στην βάση δεδομένων.</p><p>Παρατηρήστε ότι κάνουμε redirect  στην φόρμα για να βγάλουμε κάποια μηνύματα στον χρήστη.</p><pre name="code" class="php">
if(!isset($_SESSION['errors'])){
$query=mysql_query("SELECT Name FROM register where Name='$name' ") or die("Κάτι πήγε στραβά");
$check=mysql_num_rows($query);
if($check &gt; 0){
$_SESSION['error2']="Το όνομα χρήστη $name υπάρχει ήδη στην βάση ";
header( "Location: forma.php" );
}
else {
$query=("INSERT INTO register (Name, Password,Email) VALUES ('$name', '$pass', '$email')");
$insert=mysql_query($query);
$_SESSION['sucess']="Ευχαριστούμε για την εγγραφή";
header( "Location: forma.php" );
}
}
else {
header( "Location: forma.php" );
}
}
?&gt;
</pre><h1>Προσοχή</h1><p>Το db_con(); να γίνεται πριν το  mysql_real_escape_string διότι θα μας προκαλέσει μήνυμα  λάθους.</p><p>Όπως είδαμε η ασφάλεια είναι ένα σημαντικό κομμάτι του προγραμματισμού και μπορεί να διασφαλίσει την ομαλή ροή των δεδομένων και της λειτουργίας των script μας η ολόκληρης της ιστοσελίδας μας !</p><p>Βέβαια υπάρχουν πολλά ακόμη μέτρα ασφαλείας εμείς είδαμε τα βασικά.</p> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/register-system-part2-security-and-optimization/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Απλό Σύστημα Εγγραφής Χρηστών</title><link>http://greektuts.net/register-system/</link> <comments>http://greektuts.net/register-system/#comments</comments> <pubDate>Wed, 21 Jul 2010 07:50:22 +0000</pubDate> <dc:creator>Jimakos</dc:creator> <category><![CDATA[HTML]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[jimakos]]></category> <category><![CDATA[login]]></category> <category><![CDATA[login system]]></category> <category><![CDATA[register]]></category> <category><![CDATA[register system]]></category> <category><![CDATA[sql]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=4082</guid> <description><![CDATA[Αναρωτηθήκατε ποτέ πως είναι ένα σύστημα πρόσβασης χρηστών σε μια ιστοσελίδα; Σε αυτό το βοήθημα λοιπόν θα δούμε πως μπορούμε να δημιουργήσουμε για αρχή ένα απλό σύστημα εγγραφής χρηστών, χρησιμοποιόντας απλές εντολές της PHP, λίγη SQL και HTML.]]></description> <content:encoded><![CDATA[<h1>H Φόρμα Εγγραφής</h1><p>Καταρχάς θα χρειαστούμε μια φόρμα την οποία πρέπει να συμπληρώσει ο χρήστης για να προχωρήσει στην εγγραφή του .</p><p>Ο παρακάτω κώδικας είναι μια απλή φόρμα με λίγο κώδικα της php ο οποίος θα μας χρησιμεύσει αργότερα για την εμφάνιση μηνυμάτων.</p><pre name="code" class="php">
forma.php
&lt;?php
session_start();
?&gt;
&lt;html &gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;Φόρμα Εισαγωγής στοιχείων&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;pre&gt;
&lt;form action="register.php" method="get" &gt;
Όνομα : &lt;input name="name" style="background:#3281C0" /&gt;&lt;br /&gt;
Κωδικός:&lt;input name="name" style="background:#3281C0"  /&gt;&lt;br /&gt;
Email : &lt;input name="email"  style="background:#3281C0"  /&gt;
&lt;br /&gt;
&lt;input value="Καταχωρηση" /&gt;
&lt;?php
if (isset($_SESSION['errors'])){
echo $_SESSION['errors'];
}
else
echo $_SESSION['error2']; ?&gt;
&lt;/pre&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre><h1>Η Βάση Δεδομένων</h1><p>Έπειτα θα χρειαστούμε μια βάση δεδομένων στην οποία θα καταχωρήσουμε τα στοιχειά που θα εισάγουν οι χρήστες</p><p>Ας δούμε λοιπόν πως θα δημιουργήσουμε αυτή την βάση :</p><p>Δημιουργία βάσης :</p><pre name="code" class="php">
CREATE DATABASE `Greektuts` ;
</pre><p>έπειτα αφού επιλέξουμε την βάση δημιουργούμε έναν πίνακα:</p><p>Δημιουργία πίνακα:</p><pre name="code" class="php">
CREATE TABLE `Greektuts`.`Register` (
`Name` VARCHAR( 40 ) NOT NULL ,
`Password` VARCHAR( 40 ) NOT NULL ,
`Email` VARCHAR( 60 ) NOT NULL ,
PRIMARY KEY ( `Name` )
) ENGINE = MYISAM ;
</pre><p>Έτσι έχουμε δημιουργήσει την βάση μας και τον πίνακα μας .</p><h1>Διαχείρηση Δεδομένων</h1><p>Τώρα το κομμάτι του κώδικα που θα διαχειριστεί τα δεδομένα:</p><p>Δημιουργούμε ένα αρχείο php με όνομα register.php</p><p>Για αρχή θα δημιουργήσουμε μια function για να διαχειριζόμαστε την σύνδεση μας με την βάση</p><pre name="code" class="php">
&lt;?php
function db_con(){
$connection=mysql_connect("$localhost","$db_username","db_password") or die("Δεν επιτεύχθηκε η σύνδεση");
$db_selct=mysql_select_db($db_name,$connection) or die("Δεν επιτεύχθηκε η σύνδεση με τον πίνακα ");
}
?&gt;
</pre><p>Λοιπόν δημιουργήσαμε μια μέθοδο για να μπορούμε να την καλούμε όποτε εμείς θέλουμε</p><p>Ας δούμε αναλυτικά τι κάναμε μέχρι στιγμής</p><p>Είναι ο κώδικας σύνδεσης στην βάση</p><pre name="code" class="php">
$connection=mysql_connect("$localhost","$db_username","db_password") or die("Δεν επιτεύχθηκε η σύνδεση");
</pre><p>Σημαντικό*</p><p>Αντικαταστήστε το $localhost,$db_username,$db_password και παρακάτω το $db_name</p><p>με τα δικά σας στοιχειά ένα παράδειγμα :</p><pre name="code" class="php">
$connection=mysql_connect("localhost","root","") or die("Δεν επιτεύχθηκε η σύνδεση");
</pre><p>Η σύνδεση αυτή καθορίζει το όνομα της βάσης την οποία θέλουμε να επιλέξουμε</p><pre name="code" class="php">
$db_selct=mysql_select_db($db_name,$connection) or die("Δεν επιτεύχθηκε η σύνδεση με τον πίνακα ");
</pre><p>Έπειτα προχωράμε παρακάτω :</p><pre name="code" class="php">
&lt;?php
session_start();
$name = $_POST['name'];
$pass = $_POST['password'];
$email = $_POST['email'];
if(isset($_POST['submit'])){
unset($_SESSION['errors']);
if(empty($name)){
$_SESSION['errors']=" Το πεδίο όνομα θα πρέπει να συμπληρωθεί ";
}
if(empty($pass)){
$_SESSION['errors'].=" Το πεδιο κωδικός θα πρέπει να συμπληρωθεί ";
}
if(empty($email)){
$_SESSION['errors'].=" Το πεδιο email θα πρεπει να συμπληρωθει ";
}
</pre><p>Εδώ απλά κάνουμε έναν έλεγχο απλό για το αν έχουν εισαχθεί δεδομένα στην φόρμα που είχαμε δημιουργήσει προηγουμένως.</p><p>Ας το πάρουμε κομμάτι κομμάτι</p><pre name="code" class="php">
session_start();
</pre><p>αυτή η μέθοδος θα μας χρησιμεύσει αργότερα για την επιστροφή μηνυμάτων στον χρήστη .</p><p>Ο παρακάτω κώδικας ελέγχει αν έχει “πατηθεί “ το κουμπί Καταχώρησε αν όντως έχει “πατηθεί”</p><p>τότε βγάζει όλα τα δεδομένα από το $_SESSION['errors'] ώστε να μην έχουμε κολλήματα αργότερα</p><pre name="code" class="php">
if(isset($_POST['submit'])){
unset($_SESSION['errors']);
</pre><p>Εδώ κάνουμε έναν έλεγχο από τους πιο απλούς που θα μπορούσατε να κάνετε</p><p>ελέγχουμε αν το πεδίο όνομα είναι άδειο αν ναι τότε εκχωρούμε μέσα στο $_SESSION  το ακόλουθο μήνυμα. Το ίδιο γίνετε για όλα τα πεδία τα οποία θέλουμε να ελέγξουμε.</p><pre name="code" class="php">
if(empty($name)){
$_SESSION['errors']=" Το πεδίο όνομα θα πρέπει να συμπληρωθεί ";
}
</pre><p>Παρατήρηση στο δεύτερο έλεγχο και ούτω κάθε ξης βάζουμε μια . πριν το =</p><p>Τέλος προσθέτουμε λίγο ακόμη έλεγχο και είμαστε έτοιμοι</p><pre name="code" class="php">
if(!isset($_SESSION['errors'])){
db_con();
$query=mysql_query("SELECT * FROM register where Name='$name' ") or die("Κάτι πήγε στραβά");
$check=mysql_num_rows($query);
if($check &gt;0){
$_SESSION['error2']="Το όνομα χρήστη $name υπάρχει ήδη στην βάση ";
header( "Location: forma.php" );
}
else {
$query=("INSERT INTO register (Name, Password,Email) VALUES ('$name', '$pass', '$email')");
$insert=mysql_query($query);
}
}
else {
header( "Location: forma.php" );
}
}
</pre><p>Ελέγχουμε αν υπάρχουν errors αν όχι τότε προχωράμε στον επόμενο έλεγχο ο οποίος είναι η ύπαρξη του ονόματος που εισαχθεί μέσα στην βάση μας. Εάν υπάρχει τότε δηλώνουμε το μήνυμα σε μια μεταβλητή και στέλνουμε τον χρήστη πίσω στην φόρμα εκεί θα του επιστρέφουν τα ανάλογα μηνύματα.</p><blockquote
style="text-align: center;"><p><em><strong>Μπορείτε να κατεβάσετε τα     αρχεία του βοηθήματος εδώ</strong></em></p><p><em><strong><a
href="http://static.greektuts.net/uploads3/2010/07/register-system.zip" target="_blank"><img
src="../wp-content/uploads/2009/10/membersdownload1.png" alt="download" width="200" height="200" /></a></strong></em></p></blockquote><p
style="text-align: center;"><p>﻿</p> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/register-system/feed/</wfw:commentRss> <slash:comments>20</slash:comments> </item> <item><title>Eισαγωγή στην HTML5 μέρος 1ο</title><link>http://greektuts.net/html5-intro-part1/</link> <comments>http://greektuts.net/html5-intro-part1/#comments</comments> <pubDate>Mon, 17 May 2010 11:55:13 +0000</pubDate> <dc:creator>Pantso</dc:creator> <category><![CDATA[HTML]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Προγραμματισμός]]></category> <category><![CDATA[5]]></category> <category><![CDATA[audio]]></category> <category><![CDATA[canvas]]></category> <category><![CDATA[html 5]]></category> <category><![CDATA[html five]]></category> <category><![CDATA[video]]></category> <category><![CDATA[w3schools]]></category> <category><![CDATA[γλώσσες προγραμματισμού]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=3818</guid> <description><![CDATA[Σε αυτό το πρώτο μέρος της εισαγωγής στην HTML5, θα δούμε κάποιες γενικές πληροφορίες για την γλώσσα, τα κυριότερα χαρακτηριστικά της, και κάποια βασικά παραδείγματα εφαρμογής της.]]></description> <content:encoded><![CDATA[<h1>Τι είναι η HTML5;</h1><p>Η HTML5 είναι η νέα έκδοση της γνωστής γλώσσας προγραμματισμού HTLM. Η προηγούμενη έκδοση, η οποία χρησιμοποιούμε ακόμα σήμερα, βγήκε το 1999. Από τότε όμως έχουν αλλάξει πολλά στον παγκόσμιο ιστό, και έτσι η ανάγκη για standards και πλήρη συμβατότητα οδήγησε το World Wide Web Consortium (W3C) και το Web Hypertext Application Technology Working Group (WHATWG) να συνεργαστούν και να δημιουργήσουν την νέα αυτή γλώσσα. Η HTML5 είναι ακόμα υπό ανάπτυξη, αλλά μερικοί browsers υποστηρίζουν από τώρα κάποια χαρακτηριστικά της και κάποιες λειτουργίες της.</p><p>Κάποιοι βασικοί κανόνες που έχουν οριστεί για την HTML5 είναι:</p><ul><li>Βάση για τα νέα χαρακτηριστικά να είναι οι HTML, CSS, DOM, και η JavaScript</li><li>Ελαχιστοποίηση των plugins (όπως το Flash)</li><li>Καλύτερη λειτουργία εντοπισμού λαθών</li><li>Περισσότερο markup για να αντικατασταθεί το scripting</li><li>Πλήρη συμβατότητα ανεξαρτήτως συσκευής</li></ul><h1>Νέα Χαρακτηριστικά</h1><p>Κάποια από τα νέα χαρακτηριστικά της HTML5 είναι:</p><ul><li>Το στοιχείο canvas για το drawing</li><li>Τα στοιχεία video και audio για αναπαραγωγή πολυμέσων</li><li>Νέα στοιχεία περιεχομένου όπως τα footer, header, nav και  	section</li><li>Νέα στοιχεία δημιουργίας φόρμας όπως τα calendar, date, time, email, url και search</li></ul><h1>Video στην HTML5</h1><p>Μέχρι σήμερα, για να παίξουμε ένα video σε έναν browser χρειαζόμαστε κάποιο plugin (πρόσθετο) όπως το Flash ή το QuickTime.</p><p>H HTML5 μας καθορίζει έναν νέο τρόπο, και αυτός είναι με την χρήση του στοιχείου video. Ας δούμε πως χρησιμοποιείται</p><p>Το μόνο που χρειάζεται να γράψουμε για να εμφανίσουμε το video μας είναι:</p><pre name="code" class="html">
&lt;video src="movie.ogg" controls="controls"&gt;
&lt;/video&gt;
</pre><p>Για να εμφανίσουμε ένα μήνημα σε όλους όσους πάνε να δούνε το video μας από κάποιον browser που δεν υποστηρίζει το στοιχείο video της HTML5 γράφουμε</p><pre name="code" class="html">
&lt;video src="movie.ogg" width="320" height="240"  controls="controls"&gt;
Ο φυλλομετρητής σας δεν υποστηρίζει το στοιχείο video της HTML5.
&lt;/video&gt;
</pre><p>Τέλος μια πιο εξειδικευμένη χρήση του στοιχείου video είναι η εξής:</p><pre name="code" class="html">
&lt;video width="320" height="240" controls="controls"&gt;
&lt;source src="movie.ogg" type="video/ogg"&gt;
&lt;source src="movie.mp4" type="video/mp4"&gt;
Your browser does not support the video tag.
&lt;/video&gt;
</pre><h2>Υποστηριζόμενα Video Files/Browsers</h2><p
style="text-align: center;"><img
class="size-full wp-image-3823 aligncenter" src="http://static.greektuts.net/uploads3/2010/05/videos.jpg" alt="" width="580" height="84" /></p><h2>Ιδιότητες</h2><ul><li>autoplay: To video θα ξεκινήσει αυτόματα μόλις φορτώσει</li><li>controls: Θα εμφανίζονται ή όχι τα κουμπιά όπως το play</li><li>height:  To ύψος σε pixels</li><li>loop: Αν θα επαναλαμβάνεται το video μετά το τέλος του</li><li>preload: Το video θα φορτώνεται μαζί με την σελίδα</li><li>src: Το URL του video</li><li>width: To πλάτος σε pixels</li></ul><h1>Audio στην HTML5</h1><p>Ότι ισχύει σε σχέση με τα videos και τα plugins, ισχύει και για τα audio clips. Έτσι η HTML5 μας ορίζει το στοιχείο audio για την αναπαραγωγή ήχων.</p><p>Το μόνο που χρειάζεται να γράψουμε για να αναπαράγουμε τον ήχο μας είναι:</p><pre name="code" class="html">
&lt;audio src="song.ogg" controls="controls"&gt;
&lt;/audio&gt;
</pre><p>Για να εμφανίσουμε ένα μήνημα σε όλους όσους πάνε να ακούσουν τον ήχο μας  από κάποιον browser που δεν υποστηρίζει το στοιχείο audio της HTML5  γράφουμε</p><pre name="code" class="html">
&lt;audio src="song.ogg" controls="controls"&gt;
Ο φυλλομετρητής σας δεν υποστηρίζει το στοιχείο audio της HTML5.
&lt;/audio&gt;
</pre><p>Τέλος μια πιο εξειδικευμένη χρήση του στοιχείου audio είναι η εξής:</p><pre name="code" class="html">
&lt;audio controls="controls"&gt;
&lt;source src="song.ogg" type="audio/ogg"&gt;
&lt;source src="song.mp3" type="audio/mpeg"&gt;
Your browser does not support the audio element.
&lt;/audio&gt;
</pre><h2>Υποστηριζόμενα Audio Files/Browsers</h2><p
style="text-align: center;"><img
class="size-full wp-image-3826 aligncenter" src="http://static.greektuts.net/uploads3/2010/05/audio.jpg" alt="" width="580" height="100" /></p><h2>Ιδιότητες</h2><p>autoplay: ο ήχος θα ξεκινήσει αυτόματα μόλις φορτώσει</p><p>controls: Θα εμφανίζονται ή όχι τα κουμπιά όπως το play</p><p>loop: Αν θα επαναλαμβάνεται ο ήχος μετά το τέλος του</p><p>preload: Ο ήχος θα φορτώνει μαζί με την σελίδα</p><p>src: To URL του ηχητικού κομματιού μας</p><blockquote><p>Ευχαριστούμε πολύ τα W3Schools για αυτό το βοήθημα</p></blockquote><p>Στο  δεύτερο μέρος της εισαγωγής στην HTML5 θα δούμε το στοιχείο Canvas και τα tags της HTML5</p> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/html5-intro-part1/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Μετακινούμενα Παράθυρα 2o Μέρος</title><link>http://greektuts.net/movable-windows-css-jquery-part2/</link> <comments>http://greektuts.net/movable-windows-css-jquery-part2/#comments</comments> <pubDate>Sat, 15 May 2010 08:00:51 +0000</pubDate> <dc:creator>Pantso</dc:creator> <category><![CDATA[+]]></category> <category><![CDATA[CSS]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[jQuery]]></category> <category><![CDATA[and]]></category> <category><![CDATA[blocks]]></category> <category><![CDATA[drag]]></category> <category><![CDATA[drag and drop]]></category> <category><![CDATA[drag n drop]]></category> <category><![CDATA[dragable windows]]></category> <category><![CDATA[drop]]></category> <category><![CDATA[jquery UI]]></category> <category><![CDATA[movable windows]]></category> <category><![CDATA[moveable]]></category> <category><![CDATA[moving windows]]></category> <category><![CDATA[web design]]></category> <category><![CDATA[μετακινούμενα παράθυρα]]></category> <category><![CDATA[παράθυρα]]></category> <guid
isPermaLink="false">http://greektuts.net/?p=3773</guid> <description><![CDATA[Χτές, στο πρώτο μέρος, είδαμε βήμα-βήμα πως δημιουργούμε την ιστοσελίδα, στην οποία σήμερα θα προσθέσουμε το περιεχόμενο (κείμενο/εικόνες), και θα ενεργοποιήσουμε το drag n drop σε όλα τα παράθυρα με τα περιεχόμενα στην ιστοσελίδα μας.]]></description> <content:encoded><![CDATA[<h1>Βήμα 1</h1><p>Ξεκινάμε από εκεί που είχαμε μείνει στο <a
href="http://greektuts.net/movable-windows-css-jquery-part1/" target="_blank">πρώτο μέρος</a>. Αφού έχουμε έτοιμη την σελίδα μας, επόμενο βήμα είναι να φορτώσουμε την βιβλιοθήκη <a
href="http://greektuts.net/category/programming/jquery/" target="_blank">jQuery</a> και την επιπλέον βιβλιοθήκη <a
href="http://greektuts.net/category/programming/jquery/" target="_blank">jQueryUI</a>. Στον οδηγό μας θα χρησιμοποιήσουμε αυτές τις δύο βιβλιοθήκες της <a
href="http://greektuts.net/category/programming/javascript/" target="_blank">Javascript</a> για να προσθέσουμε την λειτουργία drag n drop στα παράθυρα μας. Επισκεπτόματε την ιστοσελίδα http://jqueryui.com/download και κατεβάζουμε το πακέτο ώς είναι. Έτσι θα έχουμε 2 αρχεία, το <strong>jquery-1.3.2.min.js</strong> και το <strong>jquery-ui-1.7.2.custom.min.js</strong>. Μετά τα αποθηκεύουμε μαζί με τα αρχεία της ιστοσελίδας μας αλλά σε έναν νέο φάκελο με το όνομα <strong>scripts</strong>.</p><h1>Βήμα 2</h1><p>Ανοίγουμε το index.html που φτιάξαμε χτές, και μέσα στο &lt;head&gt; γράφουμε</p><pre name="code" class="html">
&lt;script src="scripts/jquery-1.3.2.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="scripts/jquery-ui-1.7.2.custom.min.js" type="text/javascript"&gt;&lt;/script&gt;
</pre><p>Έτσι συμπεριλαμβάνουμε τα δύο αρχεία που κατεβάσαμε, και λέμε στην ιστοσελίδα μας να τα φορτώσει κατά την εκκίνηση.</p><h1>Βήμα 3</h1><p>Πρίν κάνουμε οτιδήποτε άλλο, ας προσθέσουμε το περιεχόμενο στην σελίδα μας. Στο &lt;body&gt; του αρχείου index.html και πιο συγκεκριμένα μέσα στο div <strong>content</strong> προσθέτουμε</p><pre name="code" class="html">
&lt;div class="column"&gt;
&lt;div class="widget"&gt;
&lt;h3&gt;Τελευταία Άρθρα&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Μαθήματα ECDL&lt;/strong&gt;&lt;br /&gt;Το GreekTuts πρωτοπορεί για άλλη μια φορά, και προσφέρει σε όλους τους αναγνώστες του δωρεάν βιντεομαθήματα ECDL. &lt;a href="#"&gt;Περισσότερα...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eiσαγωγή στην PHP Μέρος 2&lt;/strong&gt;&lt;br /&gt;Σε αυτό το άρθρο θα δούμε το δεύτερο μέρος της εισαγωγής στην PHP, συνέχίζοντας από εκεί που είχαμε μείνει.&lt;a href="#"&gt;Περισσότερα...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Δημιουργήστε το δικό σας sticker&lt;/strong&gt;&lt;br /&gt;Σε αυτό το βοήθημα θα δούμε βήμα βήμα πως μπορούμε να δημιουργήσουμε το δικό μας αυτοκόλλητο στο Photoshop.&lt;a href="#"&gt;Περισσότερα...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="widget"&gt;
&lt;h3&gt;Γράψτε για το GreekTuts&lt;/h3&gt;
&lt;p&gt;Θέλετε και εσείς να γράψετε άρθρα για το GreekTuts; Διαβάστε περισσότερα εδώ. Οποιοσδήποτε μπορεί να στείλει, γι'αυτό αδράξτε την ευκαιρία και στείλτε μας και εσείς.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;Συνεντεύξεις&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Συνέντευξη με τον Γεράσιμο Τσιάμαλο&lt;/strong&gt;&lt;br /&gt;O Γεράσιμος δέχτηκε να μας παραχωρήσει μια συνέντευξη στα πλαίσια του μήνα WordPress και να μοιραστεί μαζί μας τις εμπειρίες του και τις δουλειές του. &lt;a href="#"&gt;Περισσότερα...&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="featured"&gt;
&lt;h2&gt;Δωρεάν Μαθήματα ECDL&lt;/h2&gt;
&lt;p&gt;Το GreekTuts πρωτοπορεί για άλλη μια φορά, και προσφέρει σε όλους τους αναγνώστες του δωρεάν βιντεομαθήματα ECDL. Mέσα από την σειρά οδηγών που ξεκινάει τον Ιούνιο, θα μάθετε και εσείς να χρησιμοποιείτε σαν επαγγελματίες τον υπολογιστή στις κύριες εφαρμογές αυτοματισμού γραφείου και τις βασικές υπηρεσίες του διαδικτύου.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="column"&gt;
&lt;div class="widget"&gt;
&lt;h3&gt;Γίνε Συνδορμητής Στο GreekTuts&lt;/h3&gt;
&lt;p&gt;Κερδίστε πρόσβαση σε επιπλέον υλικό και άρθρα, αλλά και πολλές άλλες παροχές και προσφορές αγοράζοντας μία απο τις συνδρομές που σας προσφέρει το GreekTuts.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="widget"&gt;
&lt;h3&gt;RSS Feed&lt;/h3&gt;
&lt;strong&gt;Μαθήματα ECDL&lt;/strong&gt;
&lt;p&gt;Το GreekTuts πρωτοπορεί για άλλη μια φορά, και προσφέρει σε όλους τους αναγνώστες του δωρεάν βιντεομαθήματα ECDL.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="widget"&gt;
&lt;h3&gt;Επικοινωνία...&lt;/h3&gt;
&lt;p&gt;Επικοινωνήστε μαζί μας&lt;/p&gt;
&lt;input type="text" value="Όνομα..." /&gt;
&lt;input type="text" value="Email..." /&gt;
&lt;textarea rows="4" cols="20" value="Μήνυμα..."&gt;&lt;/textarea&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="column"&gt;
&lt;div class="widget"&gt;
&lt;h3&gt;Οι Φίλοι μας στο Twitter&lt;/h3&gt;
&lt;center&gt;&lt;img src="styles/twitt.png"&gt;&lt;/img&gt;&lt;/center&gt;
&lt;/div&gt;
&lt;/div&gt;
</pre><p>Έτσι δημιουργούμε 3 στήλες, με 3 blocks στις 2 πρώτες, και 1 block στην τρίτη. Columns είναι οι στήλες και widgets τα blocks.</p><h1>Βήμα 4</h1><p>Ανοίγουμε το screen.css στον φάκελο styles, και προσθέτοντας τον εξής κώδικα θα δώσουμε μορφή στο περιεχόμενο μας</p><pre name="code" class="css">
#featured {
width:                    592px;
padding:                6px;
margin:                    6px;
margin-left:            18px;
margin-top:                16px;
float:                    left;
height:                    200px;
background:                #333333 url("accent.jpg") no-repeat scroll -200px -40px;
border-radius:            5px;
-moz-border-radius:        5px;
-webkit-border-radius:    5px;
}
#featured h2 {
margin-left:            340px;
color:                    #ffffff;
font-size:                20px;
font-weight:            bold;
}
#featured p {
margin-left:            342px;
color:                    #ffffff;
}
.column {
width:                    290px;
padding:                6px;
margin:                    0;
margin-left:            12px;
float:                    left;
min-height:                300px;
height:                    100%;
}
.widget {
position:                relative;
padding:                6px;
margin:                    0;
margin-top:                10px;
background:                #f3f3f3 url(grad1.png) no-repeat top right;
border-radius:            5px;
-moz-border-radius:        5px;
-webkit-border-radius:    5px;
min-height:                30px;
overflow:                hidden;
border:                    1px solid #C9C9C9;
}
.widget h3 {
margin-top:                -6px;
color:                    #0f57bb;
font-size:                1.6em;
line-height:            2em;
font-weight:            normal;
border-bottom:            1px solid #999999;
background:                transparent url(movable.png) no-repeat center left;
text-indent:            12px;
cursor:                    hand;
text-shadow:            0 1px 0 #FFFFFF;
}
</pre><h1>Βήμα 5</h1><p>Θα χρησιμοποιήσουμε τις εξής εικόνες</p><blockquote><p
style="text-align: center;"><a
href="http://static.greektuts.net/uploads3/2010/05/accent.jpg" target="_blank"><img
class="alignnone size-medium wp-image-3779" src="http://static.greektuts.net/uploads3/2010/05/accent-300x210.jpg" alt="" width="300" height="210" /></a></p><p
style="text-align: center;">accent.jpg</p></blockquote><blockquote><p
style="text-align: center;"><a
href="http://static.greektuts.net/uploads3/2010/05/grad1.png" target="_blank"><img
class="alignnone size-medium wp-image-3780" src="http://static.greektuts.net/uploads3/2010/05/grad1-300x41.png" alt="" width="300" height="41" /></a></p><p
style="text-align: center;">grad1.png</p></blockquote><blockquote><p
style="text-align: center;"><a
href="http://static.greektuts.net/uploads3/2010/05/movable.png" target="_blank"><img
class="alignnone size-full wp-image-3781" src="http://static.greektuts.net/uploads3/2010/05/movable.png" alt="" width="9" height="20" /></a></p><p
style="text-align: center;">movable.png</p></blockquote><blockquote><p
style="text-align: center;"><a
href="http://static.greektuts.net/uploads3/2010/05/twitt.png" target="_blank"><img
class="alignnone size-full wp-image-3782" src="http://static.greektuts.net/uploads3/2010/05/twitt.png" alt="" width="261" height="144" /></a></p><p
style="text-align: center;">twitt.png</p></blockquote><h1>Βήμα 6</h1><p>Τώρα που έχουμε τα πάντα έτοιμα, θα προσθέσουμε την λειτουργία drag n drop. Αυτό το κάνουμε προσθέτοντας στο &lt;head&gt; του index.html και κάτω από τα 2 scripts τον εξής κώδικα</p><pre name="code" class="js">
&lt;script type="text/javascript"&gt;
$(document).ready(function(){
$(".column").sortable({
connectWith: '.column',
cursor: 'hand',
handle: 'h3',
opacity: 0.2,
change: function(e, i) {
// Post data back to server or update cookie
}
});
$(".widget").append('&lt;div&gt;&lt;/div&gt;');
$(".close").click(function(){
if ($(this).parent().data("collapsed")=="yes") {
$(this).parent().data("collapsed","no");
$(this).parent().animate({height:$(this).parent().data("height")});
} else {
$(this).parent().data("height",$(this).parent().height());
$(this).parent().data("collapsed","yes");
$(this).parent().animate({height:30});
}
});
});
&lt;/script&gt;
</pre><h1>Βήμα 7</h1><p>Στο screen.css θα προσθέσουμε τον παρακάτω κώδικα, για να διορθώσουμε κάποιες ατέλεις που δημιουργούνται</p><pre name="code" class="css">
.widget .close {
width:                    25px;
height:                    25px;
position:                absolute;
top:                    0;
right:                    0;
cursor:                    pointer;
}
.ui-sortable-helper {
border:                    3px solid #0f57bb;
cursor:                    move;
}
</pre><h1>Βήμα 8</h1><p>Πλέον η σελίδα μας είναι έτοιμη. Κάθε block που υπάρχει σε αυτήν, μπορεί να μετακινηθεί, και να μικρύνει ή να μεγαλώσει πατώντας το μπλέ κουμπάκι στην επικεφαλίδα του.</p><p>Δείτε παρακάτω το τελικό αποτέλεσμα</p><p
style="text-align: center;"><a
href="http://demo.greektuts.net/movablewindows/part2/" target="_blank"><img
class="aligncenter" src="../wp-content/uploads3/2010/05/demo.png" alt="" width="623" height="76" /></a></p><p>Οι συνδρομητές μας μπορούν παρακάτω να κατεβάσουν τα αρχεία του  βοηθήματος</p><p><strong><p
style="text-align: center; font-weight: bold;"><br><img
src="http://greektuts.net/images/GTMemberAccess.png" alt="Member Area" /> <br>Άν είστε ήδη συνδρομητής κάντε login με τα στοιχεία σας. Για να γίνετε συνδρομητής πατήστε <a
href="/wp-login.php?action=register">εδώ</a></p></strong></p> ]]></content:encoded> <wfw:commentRss>http://greektuts.net/movable-windows-css-jquery-part2/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> </channel> </rss>
