php in template .. een foutje ?

Nederlandse ondersteuning voor CMS Made Simple

Moderator: velden

Post Reply
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

php in template .. een foutje ?

Post by pedes »

ik ben bezig een oude CMSMS website (CMSMS 1.4.1) volledige nieuw aan het maken.
in deze website zitten wat includes naar php files die data uit een database halen en in iedere oude template zit ook helemaal bovenaan een stukje php.

Code: Select all

<?php session_start(); 
 error_reporting(E_ALL); 
$card_id = $_SESSION['card_id'] ;
$url = $_SERVER['REQUEST_URI'] ;
list($pagina, $lang, $subpagina, $extra2, $extra3) = explode("/", $url);
 include 'consument/lang/'.$lang.'.php';
$smarty = new Smarty;

$smarty->assign('card_id2', '$card_id');
$smarty->assign('lang', '$lang');
?>
Als ik dit overneem in de nieuwe website (CMSMS 1.9.4.2) dan wil dit niet werken, bovenaan de pagina blijft volgende staan:
$smarty->assign('card_id2', '$card_id');$smarty->assign('lang', '$lang');
De includes die hierna volgen werken hierdoor uiteraard ook niet.

Iemand een idee wat er zou fout kunnen zijn, of moet dit anders worden ingevoegd ... ?
Alle hulp is welkom.

Mvg,
Peter
User avatar
Rolf
Power Poster
Power Poster
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Contact:

Re: php in template .. een foutje ?

Post by Rolf »

zet de code zonder <?php en ?> in een udt.
En roep de udt tag in de template, bijv. {blahblah}

®
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: php in template .. een foutje ?

Post by pedes »

dank u rolf,

heb ik dus gedaan en krijg geen restcode meer bovenaan de pagina, maar de includes die volgen werken nog niet.

ik zou graag de uitkomst zichtbaar maken van die code, ik bedoel hoe kan ik voorbeeld die list( ... ) variabelen oproepen en ook die $url.
Het is omdat die $subpagina en die $lang verder in de includes worden gebruikt.
Als ik het goed voor heb zou ik die toch zichtbaar moeten krijgen.
Ik dacht dat ik die gewoon als vb. {$lang} in mijn pagina content kon zetten ... maar ik krijg dan niet te zien

enig idee ?

Thx
Peter
User avatar
Rolf
Power Poster
Power Poster
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Contact:

Re: php in template .. een foutje ?

Post by Rolf »

Als je in deze UDT kijkt, zie je hoe een string kan worden gebruikt in de template:
http://forum.cmsmadesimple.org/viewtopi ... 52&t=46954

®
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: php in template .. een foutje ?

Post by pedes »

rolf ik begrijp je niet direct ...

sorry zal wellicht aan mij liggen ?
User avatar
Rolf
Power Poster
Power Poster
Posts: 7825
Joined: Wed Apr 23, 2008 7:53 am
Contact:

Re: php in template .. een foutje ?

Post by Rolf »

Code: Select all

$gCms = cmsms();

// Passing the parameters to the template
$smarty = &$gCms->GetSmarty();
$smarty->assign('card_id2', $card_id);
$smarty->assign('lang', $lang);
- + - + - + - + - + - + -
LATEST TUTORIAL AT CMS CAN BE SIMPLE:
Migrating Company Directory module to LISE
- + - + - + - + - + - + -
Image
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: php in template .. een foutje ?

Post by pedes »

als ik in de UDT werk via
$smarty = &$gCms->GetSmarty();
ipv
$smarty = new Smarty;

en ik roep dan die var's op in mijn pagina dan komen die wel, maar zou het kunnen dat ik die niet kan gebruiken in mijn included files ?
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: php in template .. een foutje ?

Post by pedes »

hopelijk is er iemand die mij op weg kan zetten om mijn probleem te vinden.

dit is de situatie:

ik heb dus een CMSMS website waar in bepaalde templates via een include van een php file in eerste instantie bepaalde dingen worden gecheckt (vb. de naam van de pagina)

boven in de template staat een UDT die gebruikt wordt om een sessie te starten en om ook om de url te ontleden, zodoende men weet in welke pagina men momenteel zit. (wellicht zijn er andere mogelijkheden om dit te doen, maar dit is een oude CMSMS website dit in een nieuw jasje moet en de oude include files moeten dus verder worden gebruikt)
dit is de UDT {get_url_data} die nu bovenaan in de template wordt opgeroepen:

Code: Select all

$gCms = cmsms();

session_start(); 
error_reporting(E_ALL); 
$card_id = $_SESSION['card_id'] ;

$url = $_SERVER['REQUEST_URI'];
list($page, $lang, $subpagina) = explode("/", $url);

$smarty = &$gCms->GetSmarty();
$smarty->assign('lang', $lang);
$smarty->assign('subpagina', $subpagina);
$smarty->assign('card_id2', '$card_id');

include 'consument/lang/'.$lang.'.php';


Als ik dan in de content van de pagina de url variabelen vb. de $lang of $subpagina oproep via {$lang} of {$subpagina}, dan krijg ik netjes te zien dat de $lang = nl en dat de $subpagina = client.

vervolgens wordt een include php aan geroepen via een UDT:

Code: Select all

include ('consument/index.php'); 
de include files bevinden zich in de map consument.
deze include file checkt in eerste instantie 2 dingen, of er een $card_id is en of de $subpagina verschillend is van 'client'.
deze include zie er zo uit:

Code: Select all

<?
if ( (!$card_id) && ($subpagina <> "client") )  { echo "$lang_nietingelogd<br><br><a href=\"javascript:history.go(-1)\"><< $lang_terug</a>" ; } else {


if (($_SESSION['user_level'] == "2") && ($subpagina <> "client")  )  { } else {


if ( ((!$card_id) && ($subpagina == "client"))  || ($_SESSION['user_level'] <> "1") ) {
		include ('consument/loginform.php');  
		} else { if ($subpagina == "client") {
		 
		$card_id = $_SESSION['card_id'] ;
		include 'consument/db.php';
		$result = mysql_query("select * from dbo_b_fidcard  where card_id = '$card_id'");
$row = mysql_fetch_assoc($result);
 
		echo "<br><br>
		$lang_welcome $row[first_name] $row[last_name], <br><br>

  <p align=\"center\"><strong>$lang_pointsbox_1</strong></p>
  <br>
    <br>
    <p align=\"center\"><a href=\"index.php/$lang/your_pass\"><img src=\"../2009/uploads/images/afbeelding.png\" width=\"150\" height=\"24\" /></a>
  </p>
" ; } } } }
?>

Maar daar stopt het al, wellicht worden die variabelen niet meegegeven naar de included file (of is er iets anders die ik over het hoofd zie), want ik krijg enkel de << op het scherm uit de eerste 'echo'.

Wellicht zie ik iets over het hoofd ? Om alsnog deze variabelen uit de eerste UDT ook in de included files te laten werken.
Het is wel zo dat in de oude site de eerste UDT met
$smarty = new Smarty;
werd gewerkt en niet met
$gCms = cmsms();
$smarty = &$gCms->GetSmarty();
maar ook via
$smarty = new Smarty;
werkt het niet

Moeten die include files wel worden aangeroepen via een UDT ?
Hoe kan ik die $lang en $subpagina wel doorgeven aan de include file ?
heeft er iemand een idee waarom ik dit niet werkend krijg, iemand een tip, of zelfs een oplossing ?
Ik zit wat met de handen in het haar ...

Alvast bedankt.

Mvg,
Peter
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: php in template .. een foutje ?

Post by pedes »

hoe kan ik een smarty var doorgeven aan een included php file ?

blijkbaar is een smarty var in het CMSMS niet direct beschikbaar voor een included php file ?

alle hulp of tips zijn welkom.

Hartelijk dank
Peter
Jos
Support Guru
Support Guru
Posts: 4019
Joined: Wed Sep 05, 2007 8:03 pm

Re: php in template .. een foutje ?

Post by Jos »

pedes wrote:vervolgens wordt een include php aan geroepen via een UDT:

Code: Select all

include ('consument/index.php'); 
IK begrijp dat je een UDT hebt met die ene regel code.

Om een smarty variabelen daarin bekend te krijgen, kun je de smartyvariabele opnemen als parameter in de UDT aanroep.

Code: Select all

{jouwUDT lang=$lang subpagina=$subpagina}
Jouw UDT komt er dan zo uit te zien:

Code: Select all

$lang=$params['lang'];
$subpagina=$params['subpagina'];

include 'consument/index.php'; 
Let erop dat als je één van de variabelen gebruikt in je include, zoals bijv.
include 'consument/'.$subpagina.'_'.$lang.'.php';
Dat je dan eerst zorgt dat de mogelijke waarden beperkt worden tot wat toegestaan is. Je script is anders onveilig.

in je mysql query zou ik ook de mysql_real_escape_string functie toepassen op de daar gebruikte variabele.... just to be safe ;)
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: php in template .. een foutje ?

Post by pedes »

dag Jos, alvast bedankt voor uw reply

ik heb uw voorstel uitgevoerd, de variabelen worden nu meegestuurd.

Het eerste deel van mijn include php code werkt, in die include php wordt een andere loginform.php geincluded, dit werkt ook en ik kan de form ook gebruiken, maar (vanaf hier loopt het mis) de action van de form verwijst naar een pagina waar een included php file wordt opgeroepen die de form (naam en card_id) controleert en en zo de card_id in een session zet ... en doorverwijst naar een pagina waar de opgehaalde gegevens uit de database worden getoond.

het is geen code van mij, maar php code (en een creatie) uit de oude/vroegere website om gegevens van klanten te tonen uit een database aan de hand van hun naam en card_id.
deze code werkte wel in een cmsms versie1.4 website, maar intussen is het cmcms zo verandert dat dezelfde setup niet meer werkt in cmcms versie 1.9.4.2.

Volgens mij worden de ingevulde gegevens uit de form niet door gezet naar de included controle php file in de action pagina en dus wordt wellicht ook de card_id niet in een session geplaatst.
ik vind het trouwens nogal omslachtig om telkens weer te verwijzen naar een andere pagina waar dan weer een include wordt opgeroepen.

kan ik niet beter in de form als action, direct de controle php file zetten ?
en hoe kan ik zien of de form gegevens wel worden doorgestuurd ?
is er een manier om te zien wat er in de session zit ?



de controle file ziet er zo uit:

Code: Select all

<?
/* Check User Script */
session_start();  // Start Session
include 'db.php';
// Convert to simple variables
$last_name = $_POST['last_name'];
$card_id = $_POST['card_id'];
$postlang = $_POST['lang'] ;


if((!$last_name) || (!$card_id)){
?>
<blockquote>
<span class="style5">Error!</span>

	<p><div style="padding-top:30px" align="center">
	  <? if ($lang == "nl") { ?>
	  Gelieve alle gegevens in te vullen 
	  <? } else { ?>
	  Veuillez remplir toute les donn&eacute;es
	  <? } ?>
	  </div>
	</p>
</blockquote>
 
<?
	include '$prev_url';
	exit();
}

// Convert password to md5 hash
$password = md5($password);

/* Controleren of het om een speciaal lidnummer gaat: */
if (is_numeric($last_name))
{	
	$okraLidNummerSplit = str_split($last_name);
        foreach ($speciaalLidNummerSplit as &$lidNumberChar) {
            $lidNumberChar = $lidNumberChar . '[^0-9]*';
        }
        $speciaalLidNummer = implode($speciaalLidNummerSplit);
	/* Inloggen via het speciaal lidnummer */
	$sqlstring = "SELECT * FROM dbo_b_fidcard WHERE speciaal_lidnummer REGEXP '$speciaalLidNummer' AND card_id ='$card_id'";
}
else
{
	/* Inloggen via de achternaam */
	$sqlstring = "SELECT * FROM dbo_b_fidcard WHERE last_name ='$last_name' AND card_id ='$card_id'";
}

$sql = mysql_query($sqlstring);
// check if the user info validates the db
$login_check = mysql_num_rows($sql);

if($login_check > 0){
	while($row = mysql_fetch_array($sql)){
	foreach( $row AS $key => $val ){
		$$key = stripslashes( $val );
	}
		// Register some session variables!
		
		session_register('card_id');
		$_SESSION['card_id'] = $card_id;
		
		session_register('user_level');
		$_SESSION['user_level'] = '1';
		
			
		
		echo"<__script__ type=\"text/javascript\">
		window.location = 'http://www.sitenaam.eu/$postlang/your_usersinfo';
	</__script>";
		exit; 

	}
} else {
	
	if ($lang == "nl") { ?>
	<blockquote>
    U Kon niet worden aangemeld. Misschien was uw naam of pasnummer onjuist, of uw lidmaatschap niet geactiveerd.<br />
	Probeer het opnieuw!
    </blockquote>
	<? } else { ?>
    <blockquote>
	VOUS n'avez pas pu &ecirc;tre inscrits. Votre nom ou pasnummer, ou votre adh&eacute;sion inexacte n'avaient pas &eacute;t&eacute; activ&eacute;s peut-&ecirc;tre. <br />
	<br />
	le essaye de nouveau!<br />
    </blockquote>

    
    <? } 
    
}
?>				  
hopelijk kan je me een tip geven op mijn vragen ?

Alvast hartelijk bedankt
Mvg,
Peter
pedes
Power Poster
Power Poster
Posts: 840
Joined: Tue Jan 27, 2009 11:47 am

Re: php in template .. een foutje ?

Post by pedes »

blijkt nu dat de code werkt tot op een punt waar de session variabelen worden gecontroleerd na het doorsturen naar een pagina.

de session variabele card_id die wordt ingevuld met de inhoud van een formulierveld wordt niet mee gestuurd naar een pagina.
juist voor deze pagina aansturing is de session variabele wel aanwezig.

iemand die weet waarom deze niet beschikbaar is in de CMSMS pagina.

Mvg,
Peter
Post Reply

Return to “Dutch - Nederlands”