« 1 2 »
Autor Zpráva
Nezkušený
Profil *
Chtěl bych se zeptat jak se dělá v php url typu domena.cz/index.php?pg=neco.
SpotRudloff
Profil
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
Nezkušený:
tak, že na ni prostě odkážeš
<a href="index.php?pg=neco">Odkaz</a>
Další věc je, že se s touto dynamickou URL dá nadále dobře pracovat, tvořit dynamické weby.
Nezkušený
Profil *
Kam dám ten druhý kód?
Nezkušený
Profil *
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
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 *
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 *
„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
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 *
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
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
A prave o tom to je, home.php se otevre pokazde kdyz je get prazdny. Je to defaultni stranka
Nezkušený
Profil *
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
Nevím obsah souboru dbc.php.
Nezkušený
Profil *
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
Tak s tím ti tedy neporadím, bohužel. A v jakém souboru includuješ to dbc.php?
Nezkušený
Profil *
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 *
To mám na prvním řádku a pak je vždycky podtím <html><head> a další.
Nezkušený
Profil *
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
Jednoduše, místo include používej include_once "soubor.php";
Nezkušený
Profil *
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 *
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 *
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 *
V tom souboru index.php? Odpovezte někdo prosím. :(
mattyZEM
Profil
: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 *
Tak pardón, a má to teda tam bejt jeno to?
mattyZEM
Profil
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 *
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 *
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 *
Nebo jde nastavit přes htaccess aby se zobrazoval index.html a né index.php?
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: