Sessies in domeinchecker

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
Beste tweakers, ik heb een tijdje geleden een domeinchecker gedownload en heb hieronder een formulier gehangen (met mail functie). Nu wil ik dat mensen meerdere domeinen kunnen selecteren maar het probleem is dat heel de pagina refreshed als er op "GO" word gedrukt om domeinen mee te checken, als er dan een domein word toegevoegd in het vakje (dmv javascript) en men wilt nog een domein toevoegen kan dat niet omdat de informatie niet onthouden word als de pagina refreshed. Nu is mijn vraag of hier een oplossing voor is (zelf zat ik te denken aan sessies maar weet niet goed hoe ik dit moet toepassen op mijn script.) Hieronder staat mijn script :

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?php
 start_session();
?>
<?php

    include 'functions.php'; //het bestand met de functies includen
    include 'config.php'; //het bestand met de WhoIs server gegevens includen
    
          function valid_mail ($str){
              
            return(ereg ('(^[0-9a-zA-Z_\.-]{1,}@([0-9a-zA-Z_\-]{1,}\.)+[0-9a-zA-Z_\-]{2,}$)',$str));
            }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="functions.js"></script>
<link rel="stylesheet" type="text/css" media="screen, projection" href="style.css" />
</head>
<body>
<h1>Uw domein registreren</h1>

<div id="demo">
<form method="get" class="whoisform" action="#">
    <p><span style="position:relative;top:-1px;">www.</span>
    <input type="text" name="domain" value="<?=isset($_GET['domain']) ? $_GET['domain'] : '' ?>" />.
        <select name="tld">
  
            <?php
                foreach($servers as $key => $server) //een foreach over alle opgegeven servers (uit het config bestand)
                {
                    echo '<option value="'.$key.'"'; ///een option echoen
                    
                    if(isset($_GET['tld']) && $_GET['tld'] == $key) //als de geposte extensie hetzelfde is als de extension van de foreach
                    {
                        echo ' selected="selected"'; //dan moet de optie geselecteerd zijn
                    }
                    
                    echo '>.'.$key.'</option>'."\n"; //en het einde van de option
                }
            ?>
        </select>
    <input type="submit" name="domaingo" value="Go" />
    </p>
</form>
</div>

<?php
    if($_SERVER['REQUEST_METHOD'] == 'GET') //als er gepost is
    {
        
           if(isset($_GET['domaingo'])){
               
        if(empty($_GET['domain'])) //als het domein leeg is
        {
            echo 'Geen domein opgegeven';
        }
        elseif(empty($_GET['tld'])) //als de extensie (om welke reden dan ook) leeg is
        {
            echo 'Extensie niet opgegeven';
        }
        elseif(strlen($_GET['domain']) < 2) //als het domein korter is dan 2 tekens
        {
            echo 'domein is te kort';
        }
        elseif(strlen($_GET['domain']) > 60) //als het domein langer is dan 60 tekens
        {
            echo 'domein is te lang';
        }
        elseif(!preg_match('/^([a-zA-Z0-9_-]+)$/i', $_GET['domain'])) //als het domein illigale karakters bevat
        {
            echo 'Er mogen alleen letters en cijfers in de url zitten, let op dat je alleen het gedeelte tussen www. en .extensie invult.
                  Dus niet www.google.nl of google.nl of www.google, maar gewoon google.';
        }
        else //als er geen errors zijn opgetreden
        {
            //echo de "status" div, en start de tabel
            ?>
            <div id='whoiswait'>
                <div class='outer'>
                    <div class='inner'>
                        laden<br />
                        checking <span id='whoistld'></span>
                    </div>
                </div>
            </div>

            <table id="whoistable" border="0" width="100%" cellpadding="5" cellspacing="0">
            <tr>
                <th>Domein</th>
                <th>Resultaat</th>
                <th>Toevoegen</th>
            </tr>
            <tr>
                <?php
             $domein = str_replace('http://', '',$_SESSION = $_GET['domain']); //haal eventueel http:// uit de URL
                    $domein = str_replace('www.', '', $domein); //haal even www. uit de url
                    $domein = htmlentities($domein); //haal eventueel karakters eruit die er niet in thuis horen
                    
                    $extensie = htmlentities($_GET['tld']); //haal eventueel karakters eruit die er niet in thuis horen
                    
                    if($extensie == 'all') //als alle extensies moeten worden gecontroleerd
                    {
                        $i = 0; //set $i op 0, zodat we straks met deze variabele kunnen gaan werekn
                
                        foreach($servers as $extensie => $server) //een foreach over alle WhoIs servers
                        {
                            echo "<script type='text/javascript'>
                                    if(document.getElementById('whoistld'))
                                    {
                                        document.getElementById('whoistld').innerHTML=\"".$domein.".".$extensie."\";
                                    }
                                  </script>"; //echo de data die de de status div laat veranderen
                            
                            $i++; //verhoog i met 1, zodat we de afwisselende kleurtjes krijgen
                
                            voer_uit($domein, $extensie, $server, $i); //voer de functie voer_uit uit, uit functions.php
                            
                            flush(); //send  alle output naar de browser, zodat de status div geupdate wordt.
                        }
                    }
                    else //als er maar 1 domein wordt opgeroepen
                    {
                        echo "<script type='text/javascript'>
                                if(document.getElementById('whoistld'))
                                {
                                    document.getElementById('whoistld').innerHTML=\"".$domein.".".$extensie."\";
                                }
                              </script>"; //echo de data voor de status div
                        
                        flush(); //stuur de info voor de status informatie naar de browser
                        
                        $servers[$extensie] = isset($servers[$extensie]) ? $servers[$extensie] : 'na'; //zoek de gegevens op in de array
                        
                        voer_uit($domein, $extensie, $servers[$extensie], false); //voer de functie voer_uit uit, uit functions.php
                    }
                    
                    echo "<script type='text/javascript'>
                            if(document.getElementById('whoiswait'))
                            {
                                document.getElementById('whoiswait').style.display = 'none';
                            }
                          </script>"; //echo dat de status div verborgen mag worden
            ?>
            </table>
                        <?php
        } 

echo'<br><form method="post">
<table width="500"> 
    <td width="700">

    <textarea name="domein" id="MyTextBox" rows="4" cols="20">'.$_SESSION = $_GET['domain'].'</textarea><p>

        </td>


Dingen die ik zelf heb geprobeerd zijn zoals jullie kunnen zien de SESSION zetten bij
PHP:
1
 $domein = str_replace('http://', '',$_SESSION = $_GET['domain']); //haal eventueel http:// uit de URL 
. En zet hem in de textarea :
PHP:
1
  <textarea name="domein" id="MyTextBox" rows="4" cols="20">'.$_SESSION = $_GET['domain'].'</textarea><p>
zoals jullie kunnen zien. Als ik dan op post druk zet hij hem meteen het ingevulde domein in het vakje, als ik dan op een nieuwe domein zoek refreshed hij alsnog en blijft het vorige niet in het vakje staan (maar dan komt het nieuwe er voor in de plaats en dit hoort niet want het oude moet ook blijven bestaan).

Maar ik wil dat het domein pas word toegevoegd in het vakje als de user klikt op toevoegen. Dat scriptje hiervoor staat in mijn functions.php :

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
echo '<script type="text/javascript" language="javascript"><!--

function ChgText()
{
   var MyElement = document.getElementById("MyTextBox");
   MyElement.value += "'.$domein.'.'.$extensie.'";

   return true;
} 

//--></script>
<img src="my_image.jpg" alt="Toevoegen" onclick="ChgText()" style="cursor:pointer" />';


Maar hoe krijg ik dit voor elkaar?

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Je bedoelt dat de gebruiker het formulier submit, en dan tijdens het uitvoeren van de request nog informatie toe kan voegen? Die ga je nooit op de server krijgen binnen dezelfde request. De POST-request is dan waarschijnlijk al afgelopen, weinig data namelijk, en je zit te wachten op het resultaat.

Het handigste is om bij een klik op de submit button gewoon de invulmogelijkheid van domeinen uit te schakelen door bijvoorbeeld het invulveld uit te schakelen door middel van Javascript. Deze oplossing is vrij eenvoudig in de bestaande code in te bouwen.

[edit]
PHP:
1
if($_SERVER['REQUEST_METHOD'] == 'GET') //als er gepost is

Een GET-request betekent dat het dus geen POST is. ;)

[ Voor 11% gewijzigd door AtleX op 22-10-2009 15:38 ]

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
Dankuwel voor de reactie. Nee als er gedrukt is op de submit button "Go" worden de domeinen weergegeven dan kan de user de domein toevoegen (door op het plaatje "toevoegen" te drukken)(zie javascript). Maar als ze nog een domein willen toevoegen aan het vakje en dus op een niuewe domein zoeken en wederom op "Go" drukken refreshed zegmaar de pagina en staat de oude er niet meer in. Hoe kan ik er dan voor zorgen dat als er op de knop is gedrukt het eerste toegevoegde domein blijft staan?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
cootje16 schreef op donderdag 22 oktober 2009 @ 15:46:
Hoe kan ik er dan voor zorgen dat als er op de knop is gedrukt het eerste toegevoegde domein blijft staan?
Dus het aan elkaar plakken van twee strings lukt je niet :?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
Nee het gaat erom dat ze er meerdere toe kunnen voegen , wat bedoelt u met 2 strings bij elkaar voegen. Hiermee is het probleem toch nog niet opgelost?

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

offtopic:
Het is gewoon 'je' en 'jij' hoor, ben maar 4 jaar ouder en RobIII voelt zich ondanks z'n wijkende haargrens ook nog heel jong. :P


Ik begrijp je probleem niet helemaal, heb je ergens het script draaiend online staan zodat we kunnen testen?

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als je nou eens gewoon een test-case maakt zonder die hele shitload aan (overigens nog steeds "geleende"!) code. Waarom maak je geen testje met een tekstveld waarmee je je probleem illustreert of uitwerkt? In 5 regels PHP ofzo moet je prima je probleem kunnen illustreren (of beter: voor jezelf uitwerken tot 't wél doet wat je wil).

Niemand heeft zin deze stinkende puinhoop aan code voor je door te gaan zitten pluizen en je érg vage probleem omschrijving (zonder online testcase waarmee je je probleem kunt illustreren) maakt 't er niet makkelijker op. En als je niet weet wat "het aan elkaar plakken van twee strings" is kan ik je alleen maar, wederom, adviseren om uberhaupt eens eerst proberen te begrijpen waar je mee bezig bent in plaats van in 't wilde weg dingen te gaan proberen.

Ik zie sowieso niet waarom je een session nodig zou hebben voor zoiets basics (of ik begrijp je vraag niet (goed)).
AtleX schreef op donderdag 22 oktober 2009 @ 15:59:
offtopic:
ben maar 4 jaar ouder en RobIII voelt zich ondanks z'n wijkende haargrens ook nog heel jong. :P
Haargrens? Wa's da? :P Foto uit Post je kroost :Y) Die is 't recenststststss

[ Voor 19% gewijzigd door RobIII op 22-10-2009 16:04 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
Ik heb het gebeuren online gezet zodat jullie het kunnen bekijken:

http://web586.diana58.plusserver.de/whoisnl

De bedoeling is dus dat ik meerdere domeinen in het vakje kan toevoegen.

Alvast bedankt voor de hulp!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Again: kom nou eens met een duidelijke omschrijving van je probleem...
Afbeeldingslocatie: http://tweakers.net/ext/f/gGkVVPe8ZiKK8VlOum7XIiRd/full.png

[ Voor 16% gewijzigd door RobIII op 22-10-2009 16:09 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Je bedoelt dat als je op "voeg toe" hebt geklikt bij een vrij domein dat 'ie dan in het vakje komt, en als je dan nog een domein checkt je dan niet de waarde van dat vakje verliest? Dan zal je de inhoud van dat vakje ook mee moeten sturen met je GET/POST request zodat je deze weer terug kunt plaatsen. Daarvoor moet je het vakje wel onderdeel maken van het formulier dat verstuurd wordt bij het checken van een domein.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 12:28
Gewoon telkens een hidden input erbij zetten.
Nu is ook de rest van het formulier weer leeg als je op Go klikt.

Dus hidden input of een AJAX scriptje.

edit: Hij wilt dat als je op Go klikt, dat er telkens een domein wordt toegevoegd in dat gedeelte waar je kan zien of het wel of niet beschikbaar is, zodat je waarschijnlijk meerdere domeinnamen tegelijk kan registreren.

[ Voor 42% gewijzigd door BarôZZa op 22-10-2009 16:14 ]


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

BarôZZa schreef op donderdag 22 oktober 2009 @ 16:13:
Dus hidden input of een AJAX scriptje.
AJAX != Holy Grail en dit script aanpassen naar een AJAX-driven systeem komt neer op een complete rewrite en dat zie ik de TS nog niet zomaar doen gezien zijn beperkte kennis.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • BarôZZa
  • Registratie: Januari 2003
  • Laatst online: 12:28
Ik zeg nergens dat AJAX de holy grail is. Verre van dat zelfs. Het is in dit geval alleen mooier dan telkens een refresh.

edit: ik had het ook verkeerd zie ik. Hij wilt geen lijstje, maar het kopiëren naar de textarea. Waarom je dat zou willen en niet aanvinken is me een raadsel, maar in dat geval.

code:
1
2
3
4
5
echo'<br><form method="post"> 
<table width="500">  
    <td width="700"> 

    <textarea name="domein" id="MyTextBox" rows="4" cols="20">'.htmlspecialchars($_POST['MyTextBox']).'</textarea>';


Maar dan moet je er één groot form van maken.

edit 2: Ik mag trouwens hopen dat de topicstarter geen webhosting bedrijfje aan het opzetten is.

[ Voor 72% gewijzigd door BarôZZa op 22-10-2009 16:28 ]


Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
Bedankt voor de reacties , en ik ben idd geen webhosting bedrijfje aan het opstarten want het is voor mijn stage. Maar aangezien ik weinig heb geleerd op mijn opleiding qua programmeren is het moeilijk voor mij. Ik wil idd dat als er op go word gedrukt en het domein word weergegeven dat dan deze kan worden toegevoegd aan de text area, en als er opnieuw word gechecked dat het oude blijft staan en men weer een extra domein kan toevoegen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dan begin eens, nogmaals, met een basiscursis PHP/HTML. Je hebt nu 2 forms (de domain check en de overige gegevens eronder) en als je dus 1 van de 2 submit is het nogal wiedes dat gegevens van de ander "verloren" gaan.

Je kunt wel moeilijk gaan doen met sessions, maar je kunt er ook gewoon 1 form van maken. Wel zo makkelijk. Dit soort zaken had je zelf opgelost als je niet aan de slag was gegaan met 'andermans/geleende code' maar gewoon had geweten waar je mee bezig bent. Copy/pasten is géén programmeren ;)

[ Voor 43% gewijzigd door RobIII op 22-10-2009 16:44 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • cootje16
  • Registratie: Februari 2009
  • Laatst online: 13-09 09:39
Is goed ik zal nog eens wat basiscursussen bekijken en doen. Het zijn idd 2 posts , deze kan ik dan niet afzonderlijk van elkaar laten werken, want dan is het probleem ook opgelost.

Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Het gaat al fout op regel 2 btw. Het is session_start() niet andersom.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
flashin schreef op donderdag 22 oktober 2009 @ 18:39:
Het gaat al fout op regel 2 btw. Het is session_start() niet andersom.
Tenzij TS een start_session() functie heeft ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1