Προς το περιεχόμενο

Dynamic URLS


_Marios_

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας παιδια.

Εχω μια φορμα με method: get ωστε να μπορω να εχω δυναμικες σελιδες.

 

Απο αυτα που εχω καταλαβει στις δυναμικες σελιδες οτι τιμες χρησιμοποιεις στη σελιδα που θα εχει την ιδια μορφη αλλα τα δεδομενα του καθε χρηστη, αυτες οι τιμες πρεπει να ειναι στη δυναμικη σελιδα.

 

δηλαδη εχουμε μια σελιδα που χρησιμοποιουμε firstname,lastname,age, πρεπει:

http://www.mysite.gr/mysite.php/?firstname=takis&lastname=takis.

καπως ετσι.

1) σωστα; οι γινετε και αλλιως; δηλαδη να χρησιμοποιω πολλα δεδομενα για καθε χρηστη και να βα2ω μονο ενα στο δυναμικο URL;

2)Εγω αυτο που θελω ειναι για τον καθε χρηστη να υπαρχει ενα τετοιο url:http://www.mysite.gr/as2a ανεξαρτητα ποια values θα χρησιμοποιω

δηλαδη για καθε χρηστη να υπαρχει ενα σταθερο url τετραψηφιο με γραμματα και αριθμους.

Δημοσ.

Αυτό που λες γίνεται πανεύκολα με μια βάση δεδομένων.

 

Πιο συγκεκριμένα, στη βάση έχεις μια στήλη με τίτλο user (που πρέπει να είναι unique, δηλαδή να μην μπορούν να υπάρξουν 2 καταχωρήσεις με το ίδιο όρισμα), την οποία χρησιμοποιείς για να παίρνεις τα δεδομένα κάθε χρήστη:

>
id      firstname     lastname         user
1      Giorgos       Papadopoulos   as2a
2      Giannis       Papanikolaou   as2b

 

Έτσι, με ένα url της μορφής index.php?user=as2a, τραβάς τις πληροφορίες του Γιώργου Παπαδόπουλου, ενώ αν θέσεις user=as2b, του Γιάννη Παπανικολάου.

 

Στη συνέχεια, τσεκάρεις ότι είναι ενεργοποιημένο το mod_rewrite module στον apache (επικοινωνείς με το τεχνικό τμήμα του hoster σου), και μετά δημιουργείς ένα αρχείο με το όνομα ".htaccess" (ακριβώς όπως είναι γραμμένο, χωρίς τα εισαγωγικά) στο root του domain σου. Το ανοίγεις με έναν text editor και γράφεις μέσα:

>
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)/$ /mysite.php?user=$1

 

Έτσι, όταν δίνεις για παράδειγμα την διεύθυνση "http://www.mysite.gr/as2a", ο apatche θα βλέπει "http://www.mysite.gr/mysite.php?user=as2a".

Δημοσ.

ΤΕΛΕΙΑ. Δηλαδη χρησιμοποιώντας το user του αποσπω ολες της πληροφοριες; μπορω στο site να γραψω $_get και το ονομα και το επιθετο;

και πως θα δημιουργειται το as2a; τι κωδικα θα γραψω;

Δημοσ.
ΤΕΛΕΙΑ. Δηλαδη χρησιμοποιώντας το user του αποσπω ολες της πληροφοριες; μπορω στο site να γραψω $_get και το ονομα και το επιθετο;

και πως θα δημιουργειται το as2a; τι κωδικα θα γραψω;

 

Αν έχεις το key του πίνακα Users, όπως το σχεδίασε ο Thanocaster, τότε απλα το χρησιμοποιείς για να ανακτήσεις όλη την εγγραφή από τη βάση.

 

π.χ. (με MySQL) Αν υποθέσουμε ότι το table σου ονομάζεται Users

"SELECT * FROM Users WHERE user = '" . $_GET['user'] . "'";

και έχεις όλη την εγγραφή (id, firstname, lastname, user)

 

δες το παρακάτω tutorial αν δε ξέρεις πως

http://www.tizag.com/mysqlTutorial/index.php

Δημοσ.

οκ. καιto user πως θα δημιουργει 4 χαρακτηρες με γραμματα και αριθμους;

 

---------- Προσθήκη στις 18:14 ---------- Προηγούμενο μήνυμα στις 14:34 ----------

 

Σορι για το double post.

Παιδια χρει2ομαι βοηθεια για τη δημιουργια id τετραψηφιου με γραμματα και αριθμους. πχ: a32u.

Δηλαδη αυτο στο λινκ.

http://www.shrinkrays.net/articles/friendly-unique-id-generation/part-2.aspx#alphanumeric

 

Πως θα το κανω να φιαχνει στη βαση δεδομενων τετοια id και προφανως να ελεγχετε καθε φορα που παει να το φιαξει για ωστε να ειναι μοναδικο.

Δημοσ.

Κάτσε μισό γιατί τα έχεις μπερδέψει. Αν αυτό που έβαλες ως "as2a" δεν είναι κάποιο nickname που επιλέγει ο χρήστης κατά την εγγραφή του, κάνεις δουλειά μόνο με το id, το οποίο ορίζεις στη βάση ως primary key και auto_increment. Έτσι, η ίδια η βάση θα του δίνει αυτόματα τιμή για κάθε νέα καταχώρηση. Όμως, έτσι θα έεχεις έναν μοναδικό ακέραιο ως αναγνωριστικό της κάθε καταχώρισης και όχι ένα αλφαριθμητικό.

Δημοσ.

Οχι nickname. το εξηγω ξεκαθαρα οτι θελω αλφαριθμιτικο. id προφανως εχω και ανεβαινει κατα 1 καθε καινουργια καταχωρηση.

.........

Δημοσ.

Δημιουργία συμβολοσειράς με αριθμούς και γράμματα:

>function genRandomString() {
   $length = 4;
   $characters = "0123456789abcdefghijklmnopqrstuvwxyz";
   $string = "";    

   for ($p = 0; $p < $length; $p++) {
       $string .= $characters[mt_rand(0, strlen($characters))];
   }

   return $string;
}

 

πηγή

 

edit: Δεν είχα δει το παραπάνω link.

Στην βάση μπορείς να βάλεις ένα extra πεδίο όπου θα αποθηκεύεται το 4ψηφιο string (πχ/ 4psifio). Έπειτα, πριν από κάθε εισαγωγή ενος καινούριου 4ψήφιου θα ψάχνεις αν υπάρχει ήδη.

Για παράδειγμα:

>$result = mysql_query("SELECT * FROM users WHERE 4psifio='. $string .'");
$num_rows = mysql_num_rows($result);
if ($num_rows == 0)
{
//Δεν υπάρχει ήδη άρα αποθήκευσέ το.
}

Δημοσ.

ωραια. πως θα περναι στη βαση το τετραψηφιο. μπορεις να μου το γραψεις ολοκληρωμενα και ακριβως..

 

---------- Προσθήκη στις 23:02 ---------- Προηγούμενο μήνυμα στις 20:53 ----------

 

βασικα παιδια το εκανα να τυπώνει τετοιο τετραψηφιο αριθμο.

Θελω να μου πειτε πως περναω το αποτελεσμα τησ συναρτησεις στη βάση

 

---------- Προσθήκη στις 23:57 ---------- Προηγούμενο μήνυμα στις 23:02 ----------

 

DONE. ΕΥΧΑΡΙΣΤΩ για τις απαντησεις.

Δημοσ.

Βασικά και γω νόμιζα ότι το 4ψηφιο είναι το username.

 

Γιατί δε διαβάζεις το link που σου έδωσα;

Θα σου δώσει την απάντηση γρηγορότερα από το φόρουμ και θα κάνεις και αυτό που εσύ ακριβώς θες, γιατί εδώ άλλα καταλαβαίνουμε από αυτά που λες και χρειάζονται 2-3 ποστ για να μπούμε στο νόημα.

Αν έχεις μετά πρόβλημα με το κώδικα το κάνεις ποστ και κάποιος θα σε βοηθήσει.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...