Avatar billede pehory Nybegynder
09. juni 2004 - 11:48 Der er 12 kommentarer og
2 løsninger

Add-funktion virker ikke hos b-one

Hej

Jeg har lavet et nyhedsscript og min add-nyhed virker fint på mit eget surftown hotel, men ikke hos b-one.
Den der tager det ud af min mysql database igen virker fint.

Min addnyhed ser sådan ud (og ja, jeg har ændret mysql.php så den passer til min database på b-one):

<?
include ("mysql.php");
if($skriv){
    $tid = date("y-m-d %H-%i-%s");
    mysql_query("insert into nyhed (tidspunkt, overskrift, tekst) values ('$tid', '$overskrift', '$tekst')");
    echo "<h5>Nyheden er nu tilføjet</h5>";
}
?>
<form method=post action=<? echo $PHP_SELF; ?>>
 
    <input type=hidden name=skriv value=1>
    <h2>
    Overskrift:<br />
    <input name="overskrift" type="text">
    <br />
    Selve nyheden:<br />
    <textarea name="tekst" cols="70" rows="10"></textarea>
    <br />
    </h2>
    <input name="submit" type="submit" value="Tilføj">
 
</form>
Avatar billede dennismp Nybegynder
09. juni 2004 - 11:51 #1
prøv at indsætte

$skriv = $_POST['skriv'];
$overskrift = $_POST['overskrift'];
$tekst = $_POST['tekst'];

før din if($skriv)
Avatar billede jaw Nybegynder
09. juni 2004 - 11:52 #2
Start med:
$tekst = $_POST['tekst'];
$overskrift = $_POST['overskrift'];
Avatar billede detox Nybegynder
09. juni 2004 - 11:53 #3
Det er sikkert en nyere version af php på B-one, der har sat register_globals = On. Prøv:

<?
include ("mysql.php");
if(isset($_POST['skriv'])){
    $tid = date("Y-m-d H-i-s");
    mysql_query("insert into nyhed (tidspunkt, overskrift, tekst) values ('$tid', '$_POST[overskrift]', '$_POST[tekst]')");
    echo "<h5>Nyheden er nu tilføjet</h5>";
}
?>
<form method=post action=<? echo $_SEREVER['PHP_SELF']; ?>>

    <input type=hidden name=skriv value=1>
    <h2>
    Overskrift:<br />
    <input name="overskrift" type="text">
    <br />
    Selve nyheden:<br />
    <textarea name="tekst" cols="70" rows="10"></textarea>
    <br />
    </h2>
    <input name="submit" type="submit" value="Tilføj">

</form>
Avatar billede Slettet bruger
09. juni 2004 - 11:53 #4
Det er ikke B-One der ikke virker, men dit script der er forældet. Gør som dennismp foreslår så er jeg sikke rpå at det virker :)
Avatar billede detox Nybegynder
09. juni 2004 - 11:54 #5
$tid = date("y-m-d %H-%i-%s");

ser lidt underlig ud. Brug evt. NOW() i din forespørgsel.
Avatar billede pehory Nybegynder
09. juni 2004 - 11:56 #6
ok.. det virker sq nu :D tak.
Vil du lige kort forklare hvorfor der skal gøres dette så jeg ikke behøver at henvende mig herinde når jeg nu skal lave en anden add funktion?
Avatar billede pehory Nybegynder
09. juni 2004 - 11:57 #7
Den var henvendt til dennis
Avatar billede Slettet bruger
09. juni 2004 - 12:04 #8
Brug $_POST til POST variabler fra en form
Bruge $_GET til GET variabler fra en form
Bruge $_SESSIOn til session variabler.
Avatar billede jaw Nybegynder
09. juni 2004 - 12:05 #9
Som detox skriver, skyldes det at B-One kører med register_globals = OFF på deres servere... Ved det, fordi jeg selv tidligere har kontaktet dem med samme problem...
Avatar billede pehory Nybegynder
09. juni 2004 - 12:09 #10
Tak for det el_barto. Vil du have et stykke af lagkagen (point)?
Avatar billede Slettet bruger
09. juni 2004 - 12:14 #11
Ellers tak :)
Avatar billede dennismp Nybegynder
09. juni 2004 - 12:15 #12
pehory:

Det er et skifte fra php's side. Før syntes man (åbenbart?) at det var smart at dit overskrift-felt automatisk blev lavet om til variablen $overskrift.  Det syntes man ikke mere og anbefaler folk at undgå det - og een af måderne er at ændre default-indstillingerne.

Man syntes ikke at det er pænt at man ikke har styr på sine variabler. Forstil dig at du kalder siden

side.php?id=1&admin=1&nogetmere=3

.. Så har vi pludselig 3 variabler som er blevet indstillet udefra. Det bør ikke have nogen inflydelse på scriptet men det er set at det har. Eksempelvis:

<?php

if( $username == 'admin' && $password == '1234' ) {
  $admin = true;
}


...

if( $admin ) {
  // lav slet links etc.
}
?>

scriptet vil normalt kun give adminrettigheder hvis man har korrekt username og password. Men hvis vi kalder script.php?admin=1 .. så er $admin ligepludselig sat til (noget der evaluerer til true) og dermed få vi vores admin-links alligevel, selvom username/password ikke er brugt.

Desuden gør det koden meget nemmere at læse, at man kan se om en variable kommer fra en form ($_GET/$_POST/$_REQUEST) eller bare er en almindelig "intern" variable i ens system.
Avatar billede pehory Nybegynder
09. juni 2004 - 12:23 #13
Tak for alle de hurtige svar alle sammen!
Avatar billede jaw Nybegynder
09. juni 2004 - 12:24 #14
Np :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester