Autor | Zpráva | ||
---|---|---|---|
Nezkušený Profil * |
#1 · Zasláno: 25. 5. 2010, 18:43:59
Chtěl bych se zeptat jak se dělá v php url typu domena.cz/index.php?pg=neco.
|
||
SpotRudloff Profil |
#2 · Zasláno: 25. 5. 2010, 19:04:12 · Upravil/a: SpotRudloff
Můžeš to udělat dvěma způsoby.
Ten první je takový, že pro stránky stránky musíš dokola vytvářet dynamickou URL: <?php if($_GET['pg'] == "neco"){ include "neco.php"; } if($_GET['pg'] == "nic"){ include "nic.php"; } ?> Ten druhý je takový, že kontroluje soubory, zda existují a podle nich se naincluduje: <?php if(IsSet($_GET['pg'])){ $adresa = $_GET['pg'].".php"; if(file_exists($adresa)){ if($adresa != "index"){ include $adresa; }else{ echo "Index nelze načíst do sebe!"; } }else{ echo "Tato stránka neexistuje, nebo byla smazána!"; } }else{ include "uvod.php"; } ?> No a u toho jen vytváříš .php soubory. :) |
||
panther Profil |
#3 · Zasláno: 25. 5. 2010, 19:04:14
Nezkušený:
tak, že na ni prostě odkážeš <a href="index.php?pg=neco">Odkaz</a> |
||
Nezkušený Profil * |
#4 · Zasláno: 25. 5. 2010, 19:11:57
Kam dám ten druhý kód?
|
||
Nezkušený Profil * |
#5 · Zasláno: 25. 5. 2010, 19:14:49
Má soubory (index.php, home.php, neco.php) v jedné složce. V každém tom php souboru mám jiný obsah. Jak udělám ten druhý způsob? Kam dát kód?
|
||
SpotRudloff Profil |
#6 · Zasláno: 25. 5. 2010, 19:22:22
Do index.php dej ten druhý kód. Změň v něm include "uvod.php"; na include "home.php";. Následně otevři stránku v prohlížeči a napiš tam: www.domena.tld/index.php?pg=neco a máš načtený soubor neco.php. :)
|
||
Nezkušený Profil * |
#7 · Zasláno: 25. 5. 2010, 19:25:18
„Jsem nezkušený a předem se omlouvám za hloupý otázky. “
Kdy bych těl víc souborů oteřít přes index, tak tam dá jen připíšu? }else{ include "neco2.php"; } |
||
Nezkušený Profil * |
#8 · Zasláno: 25. 5. 2010, 19:35:16
„Jsem nezkušený a předem se omlouvám za hloupý otázky. “
Když jsem tam vložil ten druhý kód, pak jsem zadal domena.cz/index.php tak mě vyjel stránka neco.php. |
||
SpotRudloff Profil |
#9 · Zasláno: 25. 5. 2010, 19:41:46
Pokud jich chceš na indexu otevřít více, stačí připsat k include "home.php"; další soubor, takto:
<?php if(IsSet($_GET['pg'])){ $adresa = $_GET['pg'].".php"; if(file_exists($adresa)){ if($adresa != "index"){ include $adresa; }else{ echo "Index nelze načíst do sebe!"; } }else{ echo "Tato stránka neexistuje, nebo byla smazána!"; } }else{ include "home.php"; include "neco2.php"; } ?> |
||
Nezkušený Profil * |
#10 · Zasláno: 25. 5. 2010, 19:49:53
Díky, ale když ten kód hodím do indexu a napíšu jen domena.cz/index.php tak se mi neotevře index, ale ten soubor home.php.
|
||
SpotRudloff Profil |
#11 · Zasláno: 25. 5. 2010, 19:59:04
Ano, jelikož pokud bys měl v index.php zapsaného něco jiného, tak se bude zobrazovat na všech stránkách. ;)
|
||
fuckin Profil |
#12 · Zasláno: 25. 5. 2010, 19:59:54
A prave o tom to je, home.php se otevre pokazde kdyz je get prazdny. Je to defaultni stranka
|
||
Nezkušený Profil * |
#13 · Zasláno: 25. 5. 2010, 20:04:05
Když mám na tý stránce php kód:
<?php include 'dbc.php'; page_protect(); ?> a odkážu naní (www.domena.tld/index.php?pg=neco), tak mě to hlásí chybu. Fatal error: Cannot redeclare page_protect() in /home/users/name/domena.cz/web/dbc.php on line 63. Proč? Jde to nějak vyřešit? |
||
SpotRudloff Profil |
#14 · Zasláno: 25. 5. 2010, 20:06:44
Nevím obsah souboru dbc.php.
|
||
Nezkušený Profil * |
#15 · Zasláno: 25. 5. 2010, 20:10:19
Obsah dbc.php, ale to je ten první kód.
<?php /*************** PHP LOGIN SCRIPT V 2.3********************* (c) Balakrishnan 2010. All Rights Reserved Usage: This script can be used FREE of charge for any commercial or personal projects. Enjoy! Limitations: - This script cannot be sold. - This script should have copyright notice intact. Dont remove it please... - This script may not be provided for download except from its original site. For further usage, please contact me. /******************** MAIN SETTINGS - PHP LOGIN SCRIPT V2.1 ********************** Please complete wherever marked xxxxxxxxx /************* MYSQL DATABASE SETTINGS ***************** 1. Specify Database name in $dbname 2. MySQL host (localhost or remotehost) 3. MySQL user name with ALL previleges assigned. 4. MySQL password Note: If you use cpanel, the name will be like account_database *************************************************************/ define ("DB_HOST", "localhost"); // set database host define ("DB_USER", "name"); // set database user define ("DB_PASS","pwd"); // set database password define ("DB_NAME","namedb"); // set database name $link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection."); $db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database"); /* Registration Type (Automatic or Manual) 1 -> Automatic Registration (Users will receive activation code and they will be automatically approved after clicking activation link) 0 -> Manual Approval (Users will not receive activation code and you will need to approve every user manually) */ $user_registration = 1; // set 0 or 1 define("COOKIE_TIME_OUT", 10); //specify cookie timeout in days (default is 10 days) define('SALT_LENGTH', 9); // salt for password //define ("ADMIN_NAME", "admin"); // sp /* Specify user levels */ define ("ADMIN_LEVEL", 5); define ("USER_LEVEL", 1); define ("GUEST_LEVEL", 0); /*************** reCAPTCHA KEYS****************/ $publickey = "6LdOPLoSAAAAAGEecUqeyoCTGdnxtX7FNsA35wFZ"; $privatekey = "6LdOPLoSAAAAAAdsjE7Iafergiig-lo2y3bqtTtT"; /**** PAGE PROTECT CODE ******************************** This code protects pages to only logged in users. If users have not logged in then it will redirect to login page. If you want to add a new page and want to login protect, COPY this from this to END marker. Remember this code must be placed on very top of any html or php page. ********************************************************/ function page_protect() { session_start(); global $db; /* Secure against Session Hijacking by checking user agent */ if (isset($_SESSION['HTTP_USER_AGENT'])) { if ($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT'])) { logout(); exit; } } // before we allow sessions, we need to check authentication key - ckey and ctime stored in database /* If session not set, check for cookies set by Remember me */ if (!isset($_SESSION['user_id']) && !isset($_SESSION['user_name']) ) { if(isset($_COOKIE['user_id']) && isset($_COOKIE['user_key'])){ /* we double check cookie expiry time against stored in database */ $cookie_user_id = filter($_COOKIE['user_id']); $rs_ctime = mysql_query("select `ckey`,`ctime` from `users` where `id` ='$cookie_user_id'") or die(mysql_error()); list($ckey,$ctime) = mysql_fetch_row($rs_ctime); // coookie expiry if( (time() - $ctime) > 60*60*24*COOKIE_TIME_OUT) { logout(); } /* Security check with untrusted cookies - dont trust value stored in cookie. /* We also do authentication check of the `ckey` stored in cookie matches that stored in database during login*/ if( !empty($ckey) && is_numeric($_COOKIE['user_id']) && isUserID($_COOKIE['user_name']) && $_COOKIE['user_key'] == sha1($ckey) ) { session_regenerate_id(); //against session fixation attacks. $_SESSION['user_id'] = $_COOKIE['user_id']; $_SESSION['user_name'] = $_COOKIE['user_name']; /* query user level from database instead of storing in cookies */ list($user_level) = mysql_fetch_row(mysql_query("select user_level from users where id='$_SESSION[user_id]'")); $_SESSION['user_level'] = $user_level; $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']); } else { logout(); } } else { header("Location: index.php"); exit(); } } } function filter($data) { $data = trim(htmlentities(strip_tags($data))); if (get_magic_quotes_gpc()) $data = stripslashes($data); $data = mysql_real_escape_string($data); return $data; } function EncodeURL($url) { $new = strtolower(ereg_replace(' ','_',$url)); return($new); } function DecodeURL($url) { $new = ucwords(ereg_replace('_',' ',$url)); return($new); } function ChopStr($str, $len) { if (strlen($str) < $len) return $str; $str = substr($str,0,$len); if ($spc_pos = strrpos($str," ")) $str = substr($str,0,$spc_pos); return $str . "..."; } function isEmail($email){ return preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU', $email) ? TRUE : FALSE; } function isUserID($username) { if (preg_match('/^[a-z\d_]{5,20}$/i', $username)) { return true; } else { return false; } } function isURL($url) { if (preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i', $url)) { return true; } else { return false; } } function checkPwd($x,$y) { if(empty($x) || empty($y) ) { return false; } if (strlen($x) < 4 || strlen($y) < 4) { return false; } if (strcmp($x,$y) != 0) { return false; } return true; } function GenPwd($length = 7) { $password = ""; $possible = "0123456789bcdfghjkmnpqrstvwxyz"; //no vowels $i = 0; while ($i < $length) { $char = substr($possible, mt_rand(0, strlen($possible)-1), 1); if (!strstr($password, $char)) { $password .= $char; $i++; } } return $password; } function GenKey($length = 7) { $password = ""; $possible = "0123456789abcdefghijkmnopqrstuvwxyz"; $i = 0; while ($i < $length) { $char = substr($possible, mt_rand(0, strlen($possible)-1), 1); if (!strstr($password, $char)) { $password .= $char; $i++; } } return $password; } function logout() { global $db; session_start(); if(isset($_SESSION['user_id']) || isset($_COOKIE['user_id'])) { mysql_query("update `users` set `ckey`= '', `ctime`= '' where `id`='$_SESSION[user_id]' OR `id` = '$_COOKIE[user_id]'") or die(mysql_error()); } /************ Delete the sessions****************/ unset($_SESSION['user_id']); unset($_SESSION['user_name']); unset($_SESSION['user_level']); unset($_SESSION['HTTP_USER_AGENT']); session_unset(); session_destroy(); /* Delete the cookies*******************/ setcookie("user_id", '', time()-60*60*24*COOKIE_TIME_OUT, "/"); setcookie("user_name", '', time()-60*60*24*COOKIE_TIME_OUT, "/"); setcookie("user_key", '', time()-60*60*24*COOKIE_TIME_OUT, "/"); header("Location: index.php"); } // Password and salt generation function PwdHash($pwd, $salt = null) { if ($salt === null) { $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH); } else { $salt = substr($salt, 0, SALT_LENGTH); } return $salt . sha1($pwd . $salt); } function checkAdmin() { if($_SESSION['user_level'] == ADMIN_LEVEL) { return 1; } else { return 0 ; } } ?> |
||
SpotRudloff Profil |
#16 · Zasláno: 25. 5. 2010, 20:13:37
Tak s tím ti tedy neporadím, bohužel. A v jakém souboru includuješ to dbc.php?
|
||
Nezkušený Profil * |
#17 · Zasláno: 25. 5. 2010, 20:18:17
V souboru myaccoun, který otevřeš jen, kdž jsi přihlášený a v souboru mysetting to nic nehází. Tam mám místo toho:
<?php include 'dbc.php'; page_protect(); ?> Tohle: <?php /********************** MYSETTINGS.PHP************************** This updates user settings and password ************************************************************/ include 'dbc.php'; page_protect(); $err = array(); $msg = array(); if($_POST['doUpdate'] == 'Update') { $rs_pwd = mysql_query("select pwd from users where id='$_SESSION[user_id]'"); list($old) = mysql_fetch_row($rs_pwd); $old_salt = substr($old,0,9); //check for old password in md5 format if($old === PwdHash($_POST['pwd_old'],$old_salt)) { $newsha1 = PwdHash($_POST['pwd_new']); mysql_query("update users set pwd='$newsha1' where id='$_SESSION[user_id]'"); $msg[] = "Vaše nové heslo je aktualizováno"; //header("Location: mysettings.php?msg=Your new password is updated"); } else { $err[] = "Vaše staré heslo je neplatné"; //header("Location: mysettings.php?msg=Your old password is invalid"); } } if($_POST['doSave'] == 'Save') { // Filter POST data for harmful code (sanitize) foreach($_POST as $key => $value) { $data[$key] = filter($value); } mysql_query("UPDATE users SET `full_name` = '$data[name]', `address` = '$data[address]', `tel` = '$data[tel]', `fax` = '$data[fax]', `country` = '$data[country]', `website` = '$data[web]' WHERE id='$_SESSION[user_id]' ") or die(mysql_error()); //header("Location: mysettings.php?msg=Profile Sucessfully saved"); $msg[] = "Profil byl úspěšně uložen"; } $rs_settings = mysql_query("select * from users where id='$_SESSION[user_id]'"); ?> |
||
Nezkušený Profil * |
#18 · Zasláno: 25. 5. 2010, 20:19:56
To mám na prvním řádku a pak je vždycky podtím <html><head> a další.
|
||
Nezkušený Profil * |
#19 · Zasláno: 25. 5. 2010, 20:30:43
Tak jsem se spletl, v tom setting to taky hází, ale jen když odkážu naněj index.php?pg=mysettings. Když naněj odkážu jako na mysetting.php tak to neháže žádnou chybu.
|
||
fuckin Profil |
#20 · Zasláno: 25. 5. 2010, 20:55:46
Jednoduše, místo include používej include_once "soubor.php";
|
||
Nezkušený Profil * |
#21 · Zasláno: 25. 5. 2010, 21:01:21
fuckin:
Když místo include změním na include_once tak mě to v tom souboru mysettings hodí index nakonec. Takže mám dvě stránky v jedné. |
||
Nezkušený Profil * |
#22 · Zasláno: 25. 5. 2010, 21:26:30
Jen taková otázka. V souboru index.php má bejt jen toto?
<?php if(IsSet($_GET['pg'])){ $adresa = $_GET['pg'].".php"; if(file_exists($adresa)){ if($adresa != "index"){ include $adresa; }else{ echo "Index nelze načíst do sebe!"; } }else{ echo "Tato stránka neexistuje, nebo byla smazána!"; } }else{ include "uvod.php"; } ?> Nic jinýho? |
||
Nezkušený Profil * |
#23 · Zasláno: 25. 5. 2010, 21:50:37
Má tam bejt jenom tohle?
<?php if(IsSet($_GET['pg'])){ $adresa = $_GET['pg'].".php"; if(file_exists($adresa)){ if($adresa != "index"){ include $adresa; }else{ echo "Index nelze načíst do sebe!"; } }else{ echo "Tato stránka neexistuje, nebo byla smazána!"; } }else{ include "uvod.php"; } ?> |
||
Nezkušený Profil * |
#24 · Zasláno: 25. 5. 2010, 21:56:45
V tom souboru index.php? Odpovezte někdo prosím. :(
|
||
mattyZEM Profil |
#25 · Zasláno: 25. 5. 2010, 22:19:19
:D lol, panebože... Nemůžeš čekat, že ti někdo na tvůj problém odpoví během několika minut.
|
||
Nezkušený Profil * |
#26 · Zasláno: 25. 5. 2010, 22:41:40
Tak pardón, a má to teda tam bejt jeno to?
|
||
mattyZEM Profil |
#27 · Zasláno: 25. 5. 2010, 23:18:44
Může i nemusí, podle toho jestli chceš na každé stránce psát hlavičku etc, tak to může takto být :) jinak by jsi to musel hodit do místa, kde dáváš obsah :)
|
||
Koumák Profil * |
#28 · Zasláno: 26. 5. 2010, 09:05:21
Když ten kód hodím jen do indexu a nic jinýho tam nemám. Odkážu se na něj tak se mi načte ta první stránka, která je v include. Pak to dole píše Fatal error: Cannot redeclare page_protect() in /home/users/name/domena.cz/web/dbc.php on line 63. Jak mile naní odkažu index.php?pg=uvod tak to jde a nic to nepíše. Nevíte proč?
|
||
Nezkušený Profil * |
#29 · Zasláno: 26. 5. 2010, 09:08:33
Za to jméno se omlouvám, že tam je jiný. Tak šlo by udělat nějak přes htaccess, aby se přesměrovalo subdomena.domena.cz/ na subdomena.domena.cz/index.php?pg=home, a i ubdomena.domena.cz/index.php na ubdomena.domena.cz/index.php?pg=home.
|
||
Nezkušený Profil * |
#30 · Zasláno: 26. 5. 2010, 09:27:02
Nebo jde nastavit přes htaccess aby se zobrazoval index.html a né index.php?
|
||
Téma pokračuje na další straně.
|
0