Επισκέπτης Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Kαλησπέρα σας θα ήθελα να κάνω μια ερώτηση πάνω στην php και τα sessions,έχω γράψει αυτό τον κώδικα : session_start(); if(isset($_SESSION['roleid']==1)){......} προκειμένου να καθορίσω καποια δικαιώματα σε κάποιους χρήστες.Οταν τον τρέχω όλο αυτο το αρχείο στον browser μου βγάζει οτι στη δεύτερη γραμμή από αυτή που σας έχω γράψει έχω ένα error αυτό: Parse error: syntax error, unexpected T_IS_EQUAL, expecting ',' or ')' in C:\xampp\htdocs\kike\admin\writearticle.php on line 79 Δεν καταλαβαίνω τον λόγο του λάθους ,το έψαξα και στο google και η σύνταξη είναι σωστή.Θα μπορόυσε κάποιος να με βοηθήσει;Ευχαριστώ.
thanocaster Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 ΕΝΤΙΤ: Λάθος. Η isset παίρνει για όρισμα μια μεταβλητή. Εσύ έχεις ένα conditional. Προφανώς θέλεις να γράψεις αυτό: > session_start(); if ( isset($_SESSION['roleid']) && $_SESSION['roleid'] == 1 ) { ... }
Επισκέπτης Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Σ ευχαριστω πολυ... και κατι άλλο ο κωδικας μου ολόκληρος είναι αυτός : <?php include"header.php"; ?> <div class="formwritearticle"> <h3>Εισάγετε το άρθρο σας</h3> <form action="insertarticles.php" method ="post" > <div > <label>Τίτλος: </label><input type="text" name="title" size="70"/> </div> </br> <div> <label>Κατηγορία</label> <select name="category"> <?php session_start(); if(isset($_SESSION['roleid'])&&$_SESSION['roleid'] == 1 ){ $db= mysql_connect("localhost","root",""); mysql_select_db("wdim",$db); if (!$db) { die('Could not connect: ' . mysql_error()); } mysql_query('set character set utf8',$db); $sql= "SELECT categoryid,category, FROM categories"; $res=mysql_query($sql) or die(mysql_error()); $count= mysql_num_rows($res); for($i=0;$i<$count;$i++){ $row= mysql_fetch_array($res); $id=$row['categoryid']; $category=$row['category']; echo"<option value=\"$id\">"; echo "$category"; echo "</option>"; } } elseif(isset($_SESSION['roleid'])&&$_SESSION['roleid'] == 2 ) { $db= mysql_connect("localhost","root",""); mysql_select_db("wdim",$db); if (!$db) { die('Could not connect: ' . mysql_error()); } mysql_query('set character set utf8',$db); $sql= "SELECT categoryid,category FROM categories WHERE roleid=2"; $res=mysql_query($sql) or die(mysql_error()); $count= mysql_num_rows($res); for($i=0;$i<$count;$i++){ $row= mysql_fetch_array($res); $id=$row['categoryid']; $category=$row['category']; echo"<option value=\"$id\">"; echo "$category"; echo "</option>"; } } ?> </select> </div> </br> <div> <label>'Αρθρο: </label> <textarea name="fulltext" rows="7" cols="65"></textarea> </div> </br> <div> <input type="submit" value="Αποθήκευση"/> </div> </form> </div> </body> </html> Aπό το <select> και μέτα δεν μου το εμφανίζει στον browser ξερεισ γιατι..??
thanocaster Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Καταρχάς, βάζε τον κώδικά σου σε code tags. Επίσης, άλλαξε αυτό: > echo"<option value=\"$id\">"; Σε αυτό και τις 2 φορές που το κάνιες (πρόσεξε το κενό μετά το echo): > echo "<option value=\"$id\">"; Είσαι σίγουρος ότι η βάση ανοιγοκλείνει σωστά και τα sql statements είναι οκ και επιστρέφουν αποτελέσματα;
Επισκέπτης Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 ναι γιατι ειναι copy paste απο τα άλλα που μου βγαίνουν,άπλα καλά να μην μου διαβάζει των php κωδικα των html με τον php γιατι να μην των διαβάζει..??
thanocaster Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Τώρα που το ξανακοιτάω: 1. Δεν υπάρχει </br> tag, το σωστό είναι <br /> 2. Τσέκαρε ένα ένα τα tag σου ότι ανοιγοκλείνουν σωστά. 3. Από τη στιγμή που δεν έχουμε τη βάση σου δεν μπορούμε να ξέρουμε ότι είναι 100% σωστό. 4. Ο κώδικάς είναι ΠΟΛΥ κακογραμμένος, με αποτέλεσμα να είναι πολύ δύσκολος στην ανάγνωση. 5. Κατά τη γνώμη μου σταμάτα το developing και διάβασε λιγάκι HTML και τα βασικά της PHP.
Επισκέπτης Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Το βρήκα είχα ξεχάσει ένα κόμμμα δίπλα από το FROM στο πρώτο SELECT .Σε Ευχαριστώ πάρα πολύ.
dewn735 Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Tο session_start θα πρέπει να το κάνεις ΠΡΙΝ στείλεις οτιδήποτε στον browser για εμφάνιση, αλλιώς δε παίζει σωστά - με απλά λόγια, βάλτο πάνω-πάνω στον κώδικά σου. To use cookie-based sessions, session_start() must be called before outputing anything to the browser. Από εκεί και πέρα, ενεργοποίησε το error reporting ><?php // Report all PHP errors (see changelog) error_reporting(E_ALL); ?> για να μη ψάχνεις στα τυφλά
Επισκέπτης Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Το </br> ήταν λάθος ταχύτητας ,τώρα το να σταματήσω το developing δύσκολο ,και όσο για το διάβασμα δεν το επαιξα έξυπνος άπλα ρώτησα και εννοειται οτι διαβάζω και οτι θα συνεχίσω να διαβάζω.Σε ευχαριστώ πάντως για την βοηθειά σου. Σε ευχαριστώ dewn735 .Έχεις δίκιο.
thanocaster Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Δεν το έγραψα για να σε προσβάλλω, απλά βλέπω στον κώδικά σου αρκετά bad practices και deprecated κώδικα (πχ το mysql module της php είναι ήδη παρωχημένο, κοίταξε το PDO). Ειδικά στην php ψάχνε το συνέχεια, είναι γλώσσα που σε αφήνει να κάνεις πολλές άσχημες χακιές, και στο τέλος θα βλασφημήσεις αν δεν γράφεις από την αρχή σωστά. Τέλος, επιμένω πως αν σταματήσεις λίγο το development τελικά θα σου γλυτώσει περισσότερο χρόνο από όσο θα χάσεις, ειδικά όσο προχωράει το project σου. Φιλικά πάντα. ΥΓ> Προς Θεού, δεν το παίζω έξυπνος, όλοι τα ίδια λάθη κάναμε πάνω κάτω και κάποιος βρέθηκε να μας βάλει στον ίσιο δρόμο. Το ζητούμενο είναι να μην μένεις στάσιμος αλλά να προχωράς και να βελτιώνεις συνεχώς τον κώδικά σου.
Επισκέπτης Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 To ξέρω και δεν παρεξηγήθηκα...και έγω διαβάζω συνέχεια και πειραματίζομαι μόνος μου...μπορείς να μου πεις λιγό γι αυτά τα θέματα ασφαλειας που μου είπες με τις χακίες...??
thanocaster Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Πολύ γενικά: 1. Στα σκριπτ σου προσπάθησε να έχεις πάνω πάνω το declaration/initialisation των μεταβλητών σου, μετά την επεξεργασία τους (πχ πράξεις μεταξύ τους, validation/sanitation κλπ) και τέλος την html. 2. Μην μπλέκεις τόσο πολύ την html με την php. Πχ αντί γι αυτό: > <?php echo "<option value=\"$value\">$text</option>"; ?> προτιμώ αυτό: > <option value="<?php echo $value; ?>"><?php echo $text; ?></option> Γενικότερα, θεωρώ bad practice στην php να κάνεις echo html tags ή/και ξερό κείμενο (πχ <?php echo "hello world"; ?>). 3. Κενά. Πολλά κενά. αυτό: > if(isset($_SESSION['roleid'])==1){ ... } είναι πολύ πιο δυσανάγνωστο από αυτό: > if ( isset($_SESSION['roleid']) == 1 ) { ... }
Επισκέπτης Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Σε ευχαριστώ και πάλι...αυτά μονο εμπειρικά μπορώ να τα μάθω ή και απο κάπου αλλού..??
thanocaster Δημοσ. 21 Αυγούστου 2012 Δημοσ. 21 Αυγούστου 2012 Κυρίως εμπειρικά, αλλά γενικά δεν κάνει κακό να ψάχνεσαι για 'php best practices' και να προσπαθείς να βλέπεις κώδικα άλλων (πχ κατέβασε το wordpress και κοίτα τη σύνταξή του, και προσπάθησε και να καταλάβεις τί παίζει στον κώδικά του). Ειδικά αυτό το τελευταίο είναι το καλύτερο σχολείο μετά από την δική σου εμπειρία. Κατά τ' άλλα, documentation, design patterns και best practices είναι keywords που πρέπει από ένα σημείο και μετά να τα γράφεις μηχανικά.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα