Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-10 12:09:31 - Richard Häggström, i forum mysq, Tråden har 16 Kommentarer och lästs av 7924 personer

Jag håller på med ett modulsystem till min nya hemsida http://www.engineering-quality.com. Tanken är att jag ska kunna skriva ett antal modultexter som sedan kan laddas in i huvud"artiklarna". På det sättet kan jag ändra gemensamma beskrivningar i ett dokument.

Just nu är kolumnen i formatet TEXT och hämtas utan real escape string m.m. Dock körs inte php-scripten. (Alla är skrivna som <?php ......scriptgrejer ... ?> i databasen).

Anledningen till varför jag måste lagra dem i databasen är på grund av att mitt nuvarande menysystem som skapas automatiskt från hur databasen ser ut.

Jag kör:

Win Server2003 32 bit
Mysql
Apache

I de versioner som var de senaste för 4 månader sedan.

Några tips?


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-10 13:51:40 - Thomas Vanhaniemi

Funktionen eval i PHP http://fi.php.net/eval gör det du vill, men tänk dock på att detta är ett stort säkerhetshål om det används fel, alltså med data som kommer från användarna.


Svara

Sv:Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-10 13:59:07 - Richard Häggström

Hej,

Jag testade eval, men det fungerade inte ändå tyvärr. Kan det handla om databasens utformning kanske? Jag kommer inte att ha användarinput på sidan och all administration sker via phpmyadmin.

/Richard


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-10 20:56:52 - Per Persson

Hur använde du eval()? Visa kod.


Svara

Sv:Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-10 21:07:58 - Richard Häggström

Jag har tyvärr inte kvar koden, men ungefär såhär:

<?php
eval("\$moduler[$key] = \"$moduler[$key]\";");
echo $moduler[$key];
?>

$moduler[$key] innehåller texten från databasen och är satt sen tidigare. Till det ska jag tillägga att allt fungerar om jag bara fyller i det på hemsidan utan att ladda ur databasen,

Jag har aldrig använt eval innan jag skulle fixa detta, så kanske har använt det galet.


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-11 08:08:54 - Thomas Vanhaniemi

Jag garanterar att du använt eval felaktigt, på basen av vad du skrev senast.
Läs manualen, där ser du exempel på hur den används.


Svara

Sv:Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-11 08:32:35 - Richard Häggström

Jag försökte lösa det på detta sätt, men inte heller det fungerar. Osäker på hur eval används egentligen. Har tittat på php.net och w3schools, men blir inte klokare av det tyvärr. Detta är min tolkning:

<?php
if (in_array($term, $modultitlar)) {
$key = array_search('$term', $modultitlar);
$str = '$moduler[$key]';
eval("\$str = \"$str\";");
echo $str;
}
unset($term, $key, $str);
?>

Men det fungerar inte när man hämtar det ur databasen.


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-11 17:04:06 - Oskar Johansson

eval($sträng_med_php_kod);

kommer köra php-koden i strängen som du skickade som argument. Det är iaf så jag tolkar dokumentationen på php.net

(Obs, jag kan inte php, så jag ger inga garantier)


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-11 20:41:07 - Per Persson

Förstår inte riktigt vad du vill göra. Det ser ut som du försöker ge en variabel det värde variabeln redan innehåller, alternativt skapa en variabel med ett visst namn och ge den sitt eget namn som värde.


Svara

Sv:Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-12 08:04:47 - Richard Häggström

Jag försöker skriva ut $moduler[$key] som innehåller text ifrån ett fält i databasen. I det fältet vill jag lagra php-kod (som ska kunna köras när den hämtats in) för att kunna infoga den texten i redan inhämtade databastexter.

Så här ser koden ut:


---Moduleloaderengine---
<?php
$hamtamoduler = "SELECT ...(censur)...";
$sparademoduler = mysql_query($hamtamoduler) or die(mysql_error());

$moduler = array();
$modultitlar = array();
$z = 0 ;

while($modulrader = mysql_fetch_assoc($sparademoduler)){
$moduler[$z] = $modulrader['moduler'];
$modultitlar[$z] = $modulrader['modultitlar'];
$z++;
}
for($ev = 0 ; $ev < sizeof($moduler) ; $ev++){
}
?>
-------

---Moduleloaderinput---
<?php
$term = 'Testmodul 1';
if (in_array($term, $modultitlar)) {
$key = array_search('$term', $modultitlar);
echo $str;
echo $str2;
}
unset($term, $key, $str, $str2);
?>
------

Dessa 2 scripts är i 3 separata filer just nu, men har klippt ihop dem lite. Hoppas inget knasigt hände.

Blev det klarare nu? Allt som Eval är tänkt att göra är att se till så det sista scriptet körs.


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-12 10:00:25 - Oskar Johansson

Hur du testat det jag skrev?


Svara

Sv:Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-12 12:24:21 - Richard Häggström

Hej, Jag testade och det ville inte. Har inte använt eval tidigare. Hittade ett uppmuntrande citat nu :) "Novice programmers have suggested that evil() would be a more appropriate name for the function."

Tydligen så returnerar den NULL om inte return används :S.

Försökte lägga in det på detta sätt, men det fungerade inte heller:

---Moduleloaderinput---
<?php
$term = 'Testmodul 1';
if (in_array($term, $modultitlar)) {
$key = array_search('$term', $modultitlar);
echo $str;
echo $str2;

$streval=eval('return ("' .$str.'");');

echo $streval;

}
unset($term, $key, $str, $str2);
?>


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-12 14:35:41 - Oskar Johansson

1) Kan du ge ett exempel på vad $str innehåller?
2) Kan du ge ett exempel på vad du förväntar dig att $streval ska innehålla efter anropet till eval($str)?


Svara

Sv:Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-12 16:07:23 - Richard Häggström

1) Det kan se ut såhär: (Notera att $term egentligen inte ingår i moduleloaderscript.php som står ovan - jag klippte in den dit)


EXEMPEL:

Vanlig text...
<?php
$term = 'term'; //Specificerar vilken modul som ska läsas in från databasen
include('Moduleloaderinput.php'); //All kod för att hämta ut innehållet från databasen
?>
Vanlig text...

SLUT PÅ EXEMPEL

2)

Vanlig text...
Modulinnehåll i form av vanlig text som hämtats från databasen på platsen som motsvarar värdet på $term
Vanlig text...



Notera att allt i 1) står skrivet i en databaspost.


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-12 16:17:53 - Niklas Jansson

Det lilla jag hann se från eval får mig att tro att det ska vara något i stil med:

eval('?>' . $str);

Alltså att du först måste stänga av php-parsingen.

Sen kan jag inte förstå hur man kan försöka med jättesträngar först utan att testa sig fram och se till att man är helst säker på en funktion fungerar, men det är bara jag det...


Svara

Sv: Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-12 17:58:18 - Oskar Johansson

Eval kommer _köra_ din php-kod, och _skriva ut_ rubb och stubb till klienten (webbläsaren.) Inte till din variabel. Php är trots allt php.

Vad du vill göra är att "fånga" det som skrivs ut i en variabel, och ett lämpligt sätt att göra så på är med följande funktioner:
http://se.php.net/manual/en/function.ob-start.php
http://se.php.net/manual/en/function.ob-get-contents.php
http://se.php.net/manual/en/function.ob-end-clean.php

Sedan använder du dem ungefär såhär:

ob_start();
eval($str);
$streval = ob_get_contents();
ob_end_clean();


Svara

Sv:Lagra php-script i databas som sedan körs när de hämtas in - hur?

Postades av 2009-06-12 21:46:04 - Richard Häggström

Tackar för allt engagemang. Jag ska testa lite senare (ska på semester nu ett tag). Anledningen till att jag skriver så mycket kod på en gång var att jag hade en färdig lösning för det jag ville få ut, med det lilla kruxet att min php-kod i databasen inte kördes.

Mvh

Richard


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
901
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies