Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skomplikowany kod w zmiennej php
Forum PHP.pl > Forum > PHP
Roenzo
Temat: PHPPHP SMARTYhtml setvar Pomoc z tym tematem sam sobie już poradziłem

Na początku tych co chcą pomóc o zalogowanie na usera: Testme/ testme na stronie http://xol-live.pl/join.php

Chodzi mi o umieszczenie długiego kodu php w zmiennej $user-photo która po stronie szablonu znaczy {user-photo}

Tutaj kod

  1.  
  2. class CPage extends CHtmlBlock
  3. {
  4. function parseBlock(&$html)
  5. {
  6. global $g;
  7. global $g_user;
  8.  
  9. foreach ($g_user as $k => $v) $html->setvar($k, $v);
  10.  
  11. $user_photo="Geniusz";
  12.  
  13.  
  14.  
  15. $html->setvar("user_photo", $user_photo);
  16. $html->setvar("user_www", "darkan");
  17.  
  18. parent::parseBlock($html);
  19. }
  20. }


Problem jest w tym gdy umieszczam długi kod do zmiennej $user-photo to zamiast tej podstrony niżej widzę białą stronę,

a Tutaj podgląd

http://xol-live.pl/apps/paint-online/index.php
Fixus
ale co znaczy długi kod ? o.O
Roenzo
np

var Builder = {
NODEMAP: {
AREA: 'map',
CAPTION: 'table',
COL: 'table',
COLGROUP: 'table',
LEGEND: 'fieldset',
OPTGROUP: 'select',
OPTION: 'select',
PARAM: 'object',
TBODY: 'table',
TD: 'table',
TFOOT: 'table',
TH: 'table',
THEAD: 'table',
TR: 'table'
},

Oczywiście to jest przykład
thek
Jeśli takie coś masz zamiar wrzucać to się nie dziw, że na stronę jest wywalane coś pustego. Po prostu do zmiennej nie możesz wrzucać wszystkiego jak leci. Musisz sprawdzać, czy to "coś" nie spowoduje błędu gdy będziesz to starał użyć gdziekolwiek. W przykładzie jaki dałeś wcale nie interesujesz się jak zostanie potraktowana zawartość zmiennej gdy jej będziesz chciał gdzieś użyć w innej części strony. Powinieneś zwracać uwagę na tagi, znaki specjalne, apostrofy. Bez tego może niewinne przesłanie zmiennej spowodować Ci problemy w innej części kodu. Sprawdź na początek użycie przy zapisie html_special_chars, addslashes i stripslashes, htmlentities. Oczywiście zaleznie od tego co masz zamiar przeslać. Dlatego poczytaj manuale tych funkcji i im podobnych wpierw by wiedzieć której z nich potrzebujesz.
Roenzo
Jeden z moich kolegów doradził

  1. $user_photo="ob_start(); paint(); $content=ob_get_contents(); b_clean(); ";



ale czy to coś pomoże ?
franki01
Cytat(Roenzo @ 30.08.2009, 20:42:57 ) *
Jeden z moich kolegów doradził

  1. $user_photo="ob_start(); paint(); $content=ob_get_contents(); b_clean(); ";



ale czy to coś pomoże ?

Chyba nie masz pojęcia o PHP, nie mówiąc już o obiektach i PHP 5/6.
Roenzo
Mam pojęcie, ale jest to taka zależność której nie umiał rozwiązać programista który od wielu lat pisze skrypty

Może mi ktoś wytłumaczyć to
  1. class CPage extends CHtmlBlock
  2. {
  3. function parseBlock(&$html)


Bo przez to chyba nie mogę bardziej złożonego kodu włożyć w zmienną

nospor
  1. $zm = 'class CPage extends CHtmlBlock
  2. {
  3. function parseBlock(&$html)';
  4. echo $zm;
Włozylem? Wlozylem smile.gif
Wiec chyba nie przez to. Napisz o co ci konkretnie chodzi, to moze cos wymyslimy

Cytat
Mam pojęcie
Jakbys mial pojecie to bys wiedzial co dwie linijki kodu znacza i nie prosil o ich wyjasnienie

poza tym, chyba nie wkladasz przykladowo tak:
  1. $zm = ' bla bla ' bla la';
  2. $zm = " bla bla " bla la";

Powinno byc:
  1. $zm = ' bla bla \' bla la';
  2. $zm = " bla bla \" bla la";

Ale to juz ci pisalu w poprzednich postach wiec teoretycznie powinienies byl to uwzględnic
Roenzo
chodzi mi o osadzenie np tego kodu w ten sposób
  1. <?php
  2. $dane_seo=file("http://seomaniacy.pl/linki.php");
  3. for($i_seo=0; $i_seo<count($dane_seo); $i_seo++){
  4. $linki_seo.=$dane_seo[$i_seo];
  5. }
  6. echo"$linki_seo";
  7. ?>


by w szablonie oznaczał kod

{linki} a w pliku linki.php był przetwarzany na zmienną powyżej
bim2
No to normalnie zrób tak jak pokazał ~nospor smile.gif Pamiętaj tylko o "\" !
Roenzo
Jak możesz to podaj przykład byłbym wdzięczny smile.gif. Bo naprawdę się z tym skryptem już naplątałem tongue.gif
bim2
Podam Ci kawałek, powinieneś odjść jak podstawić całość. :]
  1. <?php
  2. $zmienna = '<?php
  3. $dane_seo=file("http://seomaniacy.pl/linki.php");';
  4. echo $zmienna;
  5. ?>

Tyle.
Roenzo
Dzięki ci zrozumiałem smile.gif Nawet nie wiedziałem że to jest takie proste ;p

Mam jakiś dziwny błąd czarodziej.gif
Zrobiłem tak jak radziliście
  1. $linkownia = 'require_once("eddc69fd6a8ce9b58018cd4a15044993.php");';
  2. $seomatik = new Seomatik();';
  3. $seomatik->setSeparator("<br />");'; // ustawienie separatora linków
  4. $seomatik->setTarget(true);'; // dodanie do każdego linku parametru target="_blank"
  5. $seomatik->setClass("klasa");'; // dodanie do każdego linku klasy CSS, w tym przypadku "klasa"
  6. echo $seomatik->show();'; // wyświetlenie linków systemowych
  7. echo $linkownia';
  8.  
  9. $html->setvar("linkownia", $linkownia);


jest to kod od linków seomatik przerobiony tak by działał pod skryptem ablespace ale jest jedno małe ale
skrypt twierdzi że w tym kodzie nie ma klasy od Seomatik ;/ Wiecie może skąd ten błąd ?

Kod
Fatal error: Class 'Seomatik' not found in /var/www/virtual/xol-live.pl/htdocs/pogoda.php on line 24

po skasowaniu linijki od klasy w css mam kolejny błąd
Kod
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in /var/www/virtual/xol-live.pl/htdocs/pogoda.php on line 36



Teraz poprawiłem na:
  1. $linkownia = 'require_once("eddc69fd6a8ce9b58018cd4a15044993.php");
  2. $seomatik = new Seomatik();
  3. $seomatik->setSeparator("<br />");
  4. $seomatik->setTarget(true);
  5. echo $seomatik->show();
  6. echo $linkownia';
  7.  
  8. $html->setvar("linkownia", $linkownia);

To zamiast linków widzę to:
Kod
require_once("eddc69fd6a8ce9b58018cd4a15044993.php"); $seomatik = new Seomatik(); $seomatik->setSeparator("
"); $seomatik->setTarget(true); echo $seomatik->show(); echo $linkownia
bim2
No o to ci chyba chodziło? Żeby kod php wrzucić na stronę?
Roenzo
Jeszcze żeby ten skrypt działał ;p a nie tylko się wyświetlał :/
bim2
Troche pomyślunku.
Dajesz kod do $linkownia. Niżej musisz już kod wywołać i przekazać do smarty np jako linkownia1 co wyświetlić ci już wynik.
Roenzo
Bim tak jak rozmawialiśmy na gg, to jednak wina skryptu sciana.gif a nie mojej nie znajomości programowania, bo np ten SWL co instalowaliśmy na skrypcie xol-live.pl się nie wyświetla an a wordpressie normalnie działa http://nasz-bajer.pl/

-- Jednak wina nie wyświetlania linków leży po stronie systemu seomatik smile.gif
bim2
Cytat(Roenzo @ 27.09.2009, 10:48:29 ) *
-- Jednak wina nie wyświetlania linków leży po stronie systemu seomatik smile.gif

Pisałem Ci na gg, że to ich wina, jeśli samo require() nic nie wyświetliło.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.